首页 > 其他分享 >车载测试系列:CAN报文之Intel格式与Motorola格式

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

时间:2022-12-02 11:59:18浏览次数:51  
标签:Motorola LSB Intel 信号 格式 MSB 字节

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)。

标签:Motorola,LSB,Intel,信号,格式,MSB,字节
From: https://www.cnblogs.com/laoluoits/p/16943994.html

相关文章

  • 车载测试系列:DBC文件格式解析
    DBC文件:CAN报文的数据库。用来描述CAN网络节点间数据通讯的文件,包含了CAN总线协议中协议数据及其所代表的具体意义。可以用来监测与分析CAN网络上的报文数据,也可以用来模......
  • Chrome的cookie存储位置和格式
    存放位置:ChromecookiesfolderinWindows7:-C:\Users\your_username\AppData\Local\Google\Chrome\UserData\Default\You'llneedaprogramlikeSQLiteDatabaseBr......
  • 界面控件DevExtreme——轻松将TreeList数据导出为PDF格式
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • LLVM工具链格式转换compiler示例
    LLVM工具链格式转换compiler示例参考文献链接https://blog.csdn.net/qq_42308741/article/details/116230359https://blog.csdn.net/universsky2015/article/details/12......
  • HTML 文本格式化
    HTML文本格式化(w3school.com.cn) 文本格式化标签标签描述<b>定义粗体文本。<big>定义大号字。<em>定义着重文字。<i>定义斜体字。<small>定义......
  • html图片格式转换
    <inputtype="file"id="inputimg"><selectid="myselect"><optionvalue="1">webp格式</option><optionvalue="2">jpeg格式</option><optionvalue="3"&g......
  • C# yyyyMMddHHmmss格式转换DateTime
    例如14位日期:20170417101215 转换DateTime格式:vartime="20170417101215";vardateTime=DateTime.ParseExact(time,"yyyyMMddHHmmss",System.Globalization.CultureInf......
  • js转换Date日期格式
    有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的,Date()返回格式:ThuMar19201512:00:00GMT+0800(中国标准时间)而我们则需要这样的格式:2015-......
  • Intelij idea 2022.2.3安装过程总结
    参考教程:https://www.exception.site/essay/idea-reset-eval详细安装过程参考了以上教程,本文对博主自己安装时遇到的问题进行总结。1.安装过程概述安装过程参考教程,一直......
  • Java 时间格式化方法 DateTimeFormatter
    在 Java8之前,一般使用 SimpleDateFormat类进行时间格式化,但是这不是同步执行的方法,所以存在多线程执行不安全的问题。如果使用的是Java8之前的JDK,变成线程安全,就......