好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Intel与Motorola的编码格式区别.pdf

9页
  • 卖家[上传人]:ji****72
  • 文档编号:45842638
  • 上传时间:2018-06-19
  • 文档格式:PDF
  • 文档大小:982.37KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Intel 格式与格式与 Motorola 格式的区别格式的区别 -CAN 总线信号的编码方式之我见总线信号的编码方式之我见 在进行 CAN 总线通信设计或者测试过程中,经常看到 CAN 总线信号的编码格式有两种定义:Intel 格式与 Motorola 格式究竟两种编码格式有什么样的区别呢?设计者、dbc 文件编辑者或者测试人员又该如何判断两种格式,并进行有效正确的配置和解析呢?下面作者给出自己在设计和测试过程中的一点体会和见解,希望能够总结出来加深一下印象和理解 在编码优缺点上,Motorola格式与Intel格式并没有孰优孰劣之分,只不过根据设计者的习惯,由用户自主选择罢了当时,对于使用者来讲,在进行解析之前,就必须要知道编码的格式是哪一种,否则,就不能保证正确地解析信号的含义以下就以 8 位字节编码方式的 CAN 总线信号为例,详细分析一下两者之间的区别 首先,介绍一下 CAN 总线的数据传输规则,首先传输一个字节的高位(msb) ,最后传输该字节的低位(lsb) 如下图所示 bytexbit(8*x)bit(8*x+7) msblsb注:x=0,1,2,3……7一般情况下,主机厂在定义 CAN 总线信号定义时,都会明确定义字节的发送顺序,即:以首先发送 byte0(LSB) ,然后 byte1,byte2,……(MSB)的发送顺序;还是以首先发送 byte7(MSB) ,然后byte6,byte5,……(LSB)的发送顺序。

      据作者了解到的多个主机厂定义的 CAN 总线字节发送顺序均为前者(即:首先发送 LSB,最后发送 MSB) 这一点可以从目前主流的 CAN 总线信号数据库编辑器德国 verctor 公司的 CANoe 软件工具的定义上看出, CANoe 中的 CANdb++编辑器中默认定义的 CAN 数据场的字节结构及每一位的排布入下图所示 在这种情况下,如果主机厂采用的是首先发送 LSB,最后发送 MSB 的发送顺序,则在上表中可直接按照从左至右,从上至下的顺序依次对信号进行排布即可;但是,如果主机厂采用的是首先发送 MSB,最后发送 LSB 的发送顺序,则在上表中需要从下至上,从右至左的顺序依次对信号进行排布,这样就比较难以对应,而且信号与数据场各字节之间的映射关系也不太直观所以,一般来讲,主机厂会采用首先发送 LSB,最后发送 MSB 的发送顺序 下面就以 CAN 总线报文的发送顺序为首先发送 LSB,最后发送 MSB 的方式为前提,介绍 Intel 格式与 Motorola 格式这两种编码方式的不同之处 一、 采用一、 采用 Intel 格式编码格式编码 当一个信号的数据长度不超过 1 个字节(8 位)并且信号在一个字节内实现(即,该信号没有跨字节实现)时,该信号的高位(S_msb)1将被放在该字节的高位,信号的低位(S_lsb)2将被放在该字节的低位。

      这样,信号的起始位3就是该字节的低位下图分别以 4 位和 8 位数据长度的两种信号为例进行了说明,并给出了某一车型的通信矩阵 CANoe 中的 CAN 数据库实现的图片说明 bit8bit15byte1S_msbS_lsbSignalbit8bit15byte10Signal的数据值为0x05举例 101bit24bit131byte3S_msbS_lsbSignalbit24bit31byte30Signal的数据值为0xA5举例 10110014位数据长度的信号8位数据长度的信号当一个信号的数据长度超过 1 个字节(8 位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位这样,信号的起始位就是低字节的低位对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构本文就不再考虑和分析这种较为特殊的情况,但其原理与本文讨论的其他情况是相同的。

      下图分别以 12 位和 16 位数据长度的两种信号为例进行了说明,并给出了 CANoe 中的某一车型的通信矩阵的 CAN 数据库的图片说明 bit0bit7byte0S_msbS_lsblsb half of Signalbit8bit15byte1举例12位数据长度的信号msb half of Signalbit11bit0bit7byte0Signal的数据值为0x6A5bit8bit15byte1bit11 010110100110lsb half of Signalmsb half of Signalbit32bit39byte4S_msbS_lsblsb half of Signalbit40bit47byte5举例16位数据长度的信号msb half of Signalbit32bit39byte4Signal的数据值为0x36A5bit40bit47byte5010110100110lsb half of Signalmsb half of Signal0110bit16bit23byte2S_msbS_lsblsb half of Signalbit24bit31byte3举例12位数据长度的信号msb half of Signalbit16bit23byte2Signal的数据值为0x6A5bit24bit31byte3010110100110lsb half of Signalmsb half of Signalbit20bit20二、 采用二、 采用 Motorola 格式编码格式编码 当一个信号的数据长度不超过 1 个字节(8 位)并且信号在一个字节内实现(即,该信号没有跨字节实现)时,信号的高位(S_msb)将被放在该字节的高位,信号的低位(S_lsb)将被放在该字节的低位。

      这样,信号的起始位就是该字节的低位下图分别以 4 位和 8 位数据长度的两种信号为例进行了说明,并给出了某一车型的通信矩阵在 CANoe 中 CAN 数据库实现的图片说明 bit8bit15byte1S_msbS_lsbSignalbit8bit15byte10Signal的数据值为0x05举例 101bit24bit131byte3S_msbS_lsbSignalbit24bit31byte30Signal的数据值为0xA5举例 10110014位数据长度的信号8位数据长度的信号当一个信号的数据长度超过 1 个字节(8 位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在低字节(MSB)的高位,信号的低位(S_lsb)将被放在高字节(LSB)的低位这样,信号的起始位就是高字节的低位对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构本文就不再考虑和分析这种较为特殊的情况,但其原理与本文讨论的其他情况是相同的。

      下图分别以 12 位和 16 位数据长度的两种信号为例进行了说明,并给出了 CANoe 中的某一车型的通信矩阵的 CAN 数据库的图片说明 bit0bit7byte0S_msbS_lsbmsb half of Signalbit8bit15byte1举例12位数据长度的信号lsb half of Signalbit12bit0bit7byte0Signal的数据值为0x6A5bit8bit15byte1bit12 010110100110msb half of Signallsb half of Signalbit32bit39byte4S_msbS_lsbmsb half of Signalbit40bit47byte5举例16位数据长度的信号lsb half of Signalbit32bit39byte4Signal的数据值为0x36A5bit40bit47byte5010110100110msb half of Signallsb half of Signal0110bit16bit23byte2S_msbS_lsbmsb half of Signalbit24bit31byte3举例12位数据长度的信号lsb half of Signalbit16bit23byte2Signal的数据值为0x6A5bit24bit31byte3010110100110msb half of Signallsb half of Signalbit19bit19由上,可以看出,当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola 两种格式的编码结果没有什么不同,完全一样。

      当信号的数据长度超过 1 个字节(8 位)时,两者的编码结果出现了明显的不同 文中术语解释及定义:文中术语解释及定义: 1. 信号的高位,即最能表达信号特性的因子,比如:车速信号 500km/h 按照给定的公式,转换成十六进制数为 0x6A5,因为 6 代表的数量级最大(162) ,那么其中 6 就是其信号的高位 2. 信号的低位,即最不能表达信号特性的因子,比如:车速信号 500km/h 按照给定的公式,转换成十六进制数为 0x6A5,因为 5 代表的数量级最小(160) ,那么其中 5就是其信号的低位 3. 信号的起始位,一般来讲,主机厂在定义整车CAN总线通信矩阵时,其每一个信号都从其最低位开始填写,这样也符合使用习惯所以信号的起始位就是信号的最低位这也与 CANoe 中 CANdb++的定义 Startbit 含义一致。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.