.
对CAN总线的常见编码格式解析
我们在进行CAN总线的通讯设计过程中,对于通讯矩阵的建立,我们常常会
选择一种编码方式,最常见的编码格式是Intel格式和Motorola格式。但是往
往人们都是以一种习惯去选择,究竟两种格式具体
如果我们选择使用Intel编码格式,它在CANdb+中也有两种信号排布方式。我们假设一个信号位长为12,它也是要跨字节排布。
第一种排布形式为IntelStandard,即标准形式,它的起始位为lsb(12)。信号的起始位为低字节的低位。如下图所示:
AltrtutesCcmnent
Delinitiori]&Signal*|弓Iransmilters|1Fleceiveis
MuftipfenSignal
1
6
5
4
3
2
1
D
0
丈…
—
lsb
1
mst)
—…
—
■
——
—
1
3
图6
聊肖|应月岡
第二种排布形式为IntelSequential,即顺序排布形式或者叫颠倒排布。这种形式不太常用,但我们也需要了解,它的起始位为lsb(11)。如下图所示:
0
1
2
3
J
5
7
0
<—
lsb
1
msb
—
■
一…
2
I3I
图8
以上文字介绍了当信号的位长超过一个字节的情况下,信号分别以Motorola编码格式和Intel编码格式排布时的区别。我们现在假设一个信号的位长为4,观察在CANdb+中信号的排布有什么区别。
Motorola编码格式下的信号排布:(绿色信号)
图9Intel编码格式下的信号排布:(绿色信号)“NoMultiplex口”
图10
由图可知,两种格式的起始位不同,但是他们的排布方式相同,都是信号的高位放在该字节的高位(mst),信号的低位放在该字节的低位(Isb)。所以,当一个信号的位长小于8时,那么两种编码格式没有区别。如果信号的位长大于8,那么两种编码格式将会产生很大差别。这是我们在网络通讯设计初期必须要掌握的。
下面我们说一下一些工程师在做通讯矩阵的设计时,常会出现的几个问题:
1. 在编写通讯矩阵时,在起始位的编写中,常会将Intel格式和Motorola格式弄混。例如:如下图所示的通讯矩阵
位顺序brtorder
MSB-►TTT—►—1LSB
字节JK序
By'eorde
r
M7
bite
bits
bit4
blU
bit2
biH
bitO
MSB
X4r
X
4LSB
Byte0
7
6
5
A
3
2
1
0
Byte1
15
14
P13
12
11
10
g
ra
By:e2
23
22
20
19
18
17
16
Byte3
31
"30~
29~
28"
77
药
25
"14
Ryted.
39
33
37
36
35
34
33
32
By
CAN总线的编码方式 来自淘豆网m.daumloan.com转载请标明出处.