关闭

车载测试系列:CAN报文之Intel格式与Motorola格式

发表于:2023-12-27 09:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:51CTO博客

  CAN通讯矩阵中关于信号排列格式Byte Order的字段,其作用为:描述字节排布顺序。
  取值包含:Intel、Motorola LSB、Motorola MSB、Motorola sequential。
  LSB:least significant byte(CAN某个信号的最低字节)
  MSB:most significant byte(CAN某个信号的最高字节)
  lsb:least significant bit(CAN某个信号中某个字节的最低有效位)
  msb:most significant bit(CAN某个信号中某个字节的最高有效位)
  信号的起始位就是信号的最低位。主机厂在定义整车CAN总线通信矩阵时,每一个信号都从其最低位开始填写。
  什么是大端小端
  在计算机内存/硬盘中,数据是以字节为单位的,二进制在内存中存储时有2种分布方式:
  高字节对应低地址(大端模式big endian)、高字节对应高地址(小段模式little endian)。
  大小端均指字节顺序,非位顺序。有些CPU公司用大端,譬如51单片机,有些公司用小端,如ARM。用数据0x12345678来做演示,要存入32位系统的内存地址为0000~0003,,首先明确,这个数据的最高有效字节是12,最低是78,低地址是0000,高地址是0003,大端小端存储方式分别如下:
  | 地址 | 0000 | 0001 | 0002 | 0003 |
  |–|–|–|–|–|–|
  | 大端 | 12 | 34 | 56 | 78 |
  | 小端 | 78 | 56 | 34 | 12 |
  在串口等串行通信中,一次只能发送一个字节,比如要发一个int类型的数据,有4个字节,是按照:byte0, byte1, byte2, byte3,还是按照byte3, byte2, byte1, byte0,收发必须按照同样的字节顺序来通信。
  Motorola格式和Intel格式
  1. 数据在CAN报文中存放顺序
  CAN每个报?可包含8Byte的字节数据域,在报?内数据的字节序和位序如下:
  字节序:Byte0、Byte1、Byte2、Byte3、Byte4、Byte5、Byte6、Byte7
  位序:bit7、bit6、bit5、bit4、bit3、bit2、bit1、bit0
  2. CAN报文数据域的传输顺序
  字节顺序:先传Byte0,最后传Byte7;
  字节内位序:先传bit7,最后传bit0;
  关于CAN报文,用Motorola,还是Intel格式,只在信号数据跨字节解析时,才有区别。单个字节数据没有区别。
  Intel格式即小端,MSB存放在高字节单元,反映到矩阵图中就是以起始位为原点,自上而下填充。Intel格式,MSB在LSB下面。
  Motorola格式即大端,MSB存放在低字节单元,反映到矩阵图中就是以起始位为原点,自下而上填充。Motorola格式,MSB在LSB上面。
  Motorola格式和Intel格式案例分析
  信号值:0xB79,二进制:101101111001
  信号长度:12bit
  字节顺序和位顺序如下表所示:Byte0为低字节,Byte7为高地址:
  什么是高低字节?
  比如说对于0xFF22来说,FF就叫做数据的高字节部分,22就是低字节部分。
  Motorola_LSB和Motorola_MSB的区别是某个信号起始位置确定的情况下,在报?中的映射空间不?样,映射顺序?样(低字节放在?字节,?字节放在低地址,位序都是从右到左是b0到b7)。
  Motorola Forward MSB(大端在前):
  矩阵文档中起始位置为MSB的起始位34,往高字节借位。
  Motorola Forward LSB(小端在前):
  矩阵文档中起始位置为LSB的起始位34,往低字节借位。
  小结:
  当信号在一个字节内实现(信号不跨字节)时,Intel模式和Motorola模式的信号字节顺序,完全一样:
  信号的高位(MSB)放在该字节的高位,信号的低位(LSB)放在该字节的低位。
  当信号在多个字节内实现(信号跨字节)时,Intel模式和Motorola模式的信号字节顺序,明显不同:
  ·Intel模式:信号的高位(MSB)放在高字节的高位,信号的低位(LSB)放在低字节的低位;
  · Motorola模式:信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位。
  俗称:小端模式“高在后,低在前”;大端模式“高在前,低在后”。
  另:不管是Intel模式,还是Motorola模式,起始位都该信号的低位(LSB)。
  你是否对车载测试感兴趣,想转行车载测试却无从下手呢?现在私聊恬恬圈/甜甜圈,或识别下方二维码,添加天天圈,了解车载测试入门吧↓↓↓
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号