图10
由图可知,两种格式的起始位不同,但是他们的排布方式相同,都是信号的高位放在该字节的高位(msb),信号的低位放在该字节的低位(lsb)。所以,当一个信号的位长小于8时,那么两种编码格式没有区别。如果信号的位长大于8,那么两种编码格式将会产生很大差别。这是我们在网络通讯设计初期必须要掌握的。
下面我们说一下一些工程师在做通讯矩阵的设计时,常会出现的几个问题: 1. 在编写通讯矩阵时,在起始位的编写中,常会将Intel格式和Motorola格式弄混。例如:如下图所示的通讯矩阵
如果一个信号的位长为4,那么若是Motorola编码格式,那它的起始位就是4;
而若是Intel编码格式,那它的起始位就是0。
2. 在CANdb++中进行通讯矩阵的调整时,首先应明确信号选取的编码格式,然后进行拖曳,有的工程师常常在没有区分编码格式,凭借主观感觉对通讯矩阵进行调整,这往往会导致信号的传输错误。
3. 在信号跨字节排布中,未明确msb和lsb,在拖曳过程中会出现错误。 综上所述,Motorola编码格式和Intel编码格式主要区别还是在信号位长大于8或者信位长不超过8但是跨字节的情况下,前者的规则:该信号的高位(S_msb)将被放在低字节(MSB)的高位,信号的低位(S_lsb)将被放在高字节(LSB)的低位;后者的规则:该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位。 希望大家能从此篇文章中收获一些经验。
文中术语解释及定义:
1. 信号的高位,即最能表达信号特性的因子,比如:车速信号500km/h按
照给定的公式,转换成十六进制数为0x6A5,因为6代表的数量级最大(162),那么其中6就是其信号的高位。
2. 信号的低位,即最不能表达信号特性的因子,比如:车速信号500km/h
按照给定的公式,转换成十六进制数为0x6A5,因为5代表的数量级最小(160),那么其中5就是其信号的低位。
3. 信号的起始位,一般来讲,主机厂在定义整车CAN总线通信矩阵时,其
每一个信号都从其最低位开始填写,这样也符合使用习惯。所以信号的起始位就是信号的最低位。这也与CANoe中CANdb++的定义Startbit含义一致。