Intel与Motorola的编码格式区别
《Intel与Motorola的编码格式区别》由会员分享,可在线阅读,更多相关《Intel与Motorola的编码格式区别(9页珍藏版)》请在装配图网上搜索。
1、 Intel 格式与 Motorola 格式的区别 -CAN 总线信号的编码方式之我见 在进行 CAN 总线通信设计或者测试过程中 ,经常看到 CAN 总线信号的编码格式有两种定义 :Intel 格 式与 Motorola 格式。究竟两种编码格式有什么样的区别呢?设计者、 dbc 文件编辑者或者测试人员又该 如何判断两种格式,并进行有效正确的配置和解析呢?下面作
2、者给出自己在设计和测试过程中的一点体 会和见解,希望能够总结出来加深一下印象和理解。 在编码优缺点上, Motorola 格式与 Intel 格式并没有孰优孰劣之分, 只不过根据设计者的习惯,由用户自主选择罢了。当时,对于使用者来讲,在进行解析之前,就必须要知道编码的格式是哪一种,否则, 就不能保证正确地解析信号的含义。以下就以 8 位字节编码方式的 CAN 总线信号为例,详细分析一下两者之间的区别。 首先,介绍一下 CAN 总线的数据传输规则,首先传输一个字节的高位( msb),最后传输该字节的 低位( lsb)。如下图所示。
3、 bytex bit(8* x+7) bit(8* x ) msb lsb x=0,1,2,3 7 一般情况下,主机厂在定义 CAN 总线信号定义时,都会明确定义字节的发送顺序,即:以首先发 送 byte0( LSB ),然后 byte1, byte2, ( MSB )的发送顺序;还是以首先发送 byte7( MSB ),然后 byte6, byte5, ( LSB )的发送顺序。据作者了解到的多个主机厂定义的 CAN 总线字节发送顺序均 为前者(即:首先发送 LSB
4、,最后发送 MSB )。这一点可以从目前主流的 CAN 总线信号数据库编辑器 德国 verctor 公司的 CANoe 软件工具的定义上看出, CANoe 中的 CANdb++ 编辑器中默认定义的 CAN 数 据场的字节结构及每一位的排布入下图所示。 在这种情况下,如果主机厂采
5、用的是首先发送 LSB ,最后发送 MSB 的发送顺序,则在上表中可直接按 照从左至右,从上至下的顺序依次对信号进行排布即可;但是,如果主机厂采用的是首先发送 MSB ,最 后发送 LSB 的发送顺序,则在上表中需要从下至上,从右至左的顺序依次对信号进行排布, 这样就比较 难以对应,而且信号与数据场各字节之间的映射关系也不太直观。所以,一般来讲,主机厂会采用首先 发送 LSB ,最后发送 MSB 的发送顺序。 下面就以 CAN 总线报文的发送顺序为首先发送 LSB ,最后发送 MSB 的方式为前提,介绍
6、 Intel 格 式与 Motorola 格式这两种编码方式的不同之处。 一、 采用 Intel 格式编码 当一个信号的数据长度不超过 1 个字节( 8 位)并且信号在一个字节内实现(即,该信号没有跨字 节实现)时,该信号的高位( S_msb) 1 将被放在该字节的高位,信号的低位( S_lsb) 2 将被放在该字节 的低位。这样,信号的起始位 3 就是该字节的低位。下图分别以 4位和 8 位数据长度的两种信号为例进 行了说明,并给出了某一车型的通信矩阵 CANoe 中的 CAN 数据库实
7、现的图片说明。 4位数据长度的信号 byte1 byte1 bit15 bit8 举例 bit15 bit8 S_msb S_lsb 0 1 0 1 Signal Signal 的数据值为 0x05 8位数据长度的信号 byte3 byte3 bit131 bit24 举例 bit31
8、 bit24 S_msb S_lsb 1 01 0 0 1 0 1 Signal Signal 的数据值为 0xA5 当一个信号的数据长度超过 1 个字节( 8 位)或者数据长度不超过一个字节但是采用跨字节方式实 现时,该信号的高位( S_msb)将被放在高字节( MSB )的高位,信号的低位( S_lsb)将被放在低字节 ( LSB
9、 )的低位。这样,信号的起始位就是低字节的低位。对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构。本文就不再考虑和分析 这种较为特殊的情况,但其原理与本文讨论的其他情况是相同的。下图分别以 12 位和 16 位数据长度的 两种信号为例进行了说明,并给出了 CANoe 中的某一车型的通信矩阵的 CAN 数据库的图片说明。
10、 12位数据长度的信号 byte0 byte1 bit7 bit0 bit15 bit11 bit8 S_lsb S_msb lsb half of Signal msb half of Signal 举例
11、 Signal 的数据值为 0x6A5 byte0 byte1 bit7 bit0 bit15 bit11 bit8 1 0 1 0 0 1 0 1 0 1 1 0 lsb half of Signal msb half of Signal 12位数据长度的信号 byte2
12、 byte3 bit23 bit20 bit16 bit31 bit24 S_lsb S_msb lsb half of Signal msb half of Signal 举例 Signal 的数据值为 0x6A5 byte2 byte3
13、 bit23 bit20 bit16 bit31 bit24 0 1 0 1 0 1 1 0 1 0 1 0 lsb half of Signal msb half of Signal 16位数据长度的信号 byte4 byte5 bit39 bit32 bit47 bit
14、40 S_lsb S_msb lsb half of Signal msb half of Signal 举例 Signal 的数据值为 0x36A5 byte4 byte5 bit39 bit32 bit47 bit40 1 0 1 0 0
15、 1 0 1 0 0 1 1 0 1 1 0 lsb half of Signal msb half of Signal
16、 二、 采用 Motorola 格式编码 当一个信号的数据长度不超过 1 个字节( 8 位)并且信号在一个字节内实现(即,该信号没有跨字 节实现)时,信号的高位( S_msb)将被放在该字节的高位,信号的低位( S_lsb)将被放在该字节的低 位。这样,信号的起始位就是该字节的低位。下图分别以 4 位和 8 位数据长度的两种信号为例进行了说 明,并给出了某一车型的通信矩阵在 CANoe 中 CAN 数据库实现的图片说明。 4位数据长
17、度的信号 byte1 byte1 bit15 bit8举例bit15 bit8 S_msb S_lsb 0101 Signal Signal 的数据值为 0x05 8位数据长度的信号 byte3 byte3 bit131 bit24举例 bit31 bit24 S_msb S_lsb 10100 101 Signal Signal 的数据值为 0xA5
18、 当一个信号的数据长度超过 1 个字节( 8 位)或者数据长度不超过一个字节但是采用跨字节方式实 现时,该信号的高位( S_msb)将被放在低字节( MSB )的高位,信号的低位( S_lsb)将被放在高字节 ( LSB )的低位。这样,信号的起始位就是高字节的低位。对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构。本文就不再考虑和分析 这种较为特殊的情况,但其原理与本文讨论的其他情
19、况是相同的。下图分别以 12 位和 16 位数据长度的 两种信号为例进行了说明,并给出了 CANoe 中的某一车型的通信矩阵的 CAN 数据库的图片说明。 12位数据长度的信号 byte0 byte1 bit7 bit0 bit15 bit12 bit8 S_msb S_lsb
20、 msb half of Signal lsb half of Signal 举例 Signal 的数据值为 0x6A5 byte0 byte1 bit7 bit0 bit15 bit12 bit8 0 1 1 0 1 0 1 0 0 1 0 1
21、 msb half of Signal lsb half of Signal 12位数据长度的信号 byte2 byte3 bit23 bit19 bit16 bit31 bit24 S_msb S_lsb msb half of Signal lsb half of Sign
22、al 举例 Signal 的数据值为 0x6A5 byte2 byte3 bit23 bit19 bit16 bit31 bit24 0 1 1 0 1 0 1 0 0 1 0 1 msb half of Signal lsb half of Signal
23、 16位数据长度的信号 byte4 byte5 bit39 bit32 bit47 bit40 S_msb S_lsb msb half of Signal lsb half of Signal 举例 Signal 的数据值为 0x36A5
24、 byte4 byte5 bit39 bit32 bit47 bit40 0 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 msb half of Signal lsb half of Signal
25、 由上,可以看出,当一个信号的数据长度不超过 1 个字节( 8 位)时,
26、 Intel 与
27、 Motorola 两种格式的 编码结果没有什么不同,完全一样。当信号的数据长度超过 1 个字节( 8 位)时,两者的编码结果出现 了明显的不同。 文中术语解释及定义: 1. 信号
28、的高位,即最能表达信号特性的因子,比如:车速信号 500km/h 按照给定的公 式,转换成十六进制数为 0x6A5 ,因为 6 代表的数量级最大( 162),那么其中 6 就 是其信号的高位。 2. 信号的低位,即最不能表达信号特性的因子,比如:车速信号 500km/h 按照给定的 公式,转换成十六进制数为 0x6A5 ,因为 5 代表的数量级最小( 160),那么其中 5 就是其信号的低位。 3. 信号的起始位, 一般来讲,主机厂在定义整车 CAN 总线通信矩阵时,其每一个信号都从其最低位开始填写,这样也符合使用习惯。 所以信号的起始位就是信号的最低位。这也与 CANoe 中 CANdb++ 的定义 Startbit 含义一致。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。