一、CAN报文信号排列方式
在定义CAN通信矩阵或制作dbc时,需确定报文的信号排列方式。字节的排列顺序有:Intel的排列顺序;Motorola的排列顺序。
注:
Motorola和Intel格式,只在信号数据跨字节解析时有区别,单个字节数据没有区别。
二、 编码格式
(1)Intel格式——小端
当一个信号的数据长度超过1 个字节(8 位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位。信号的起始位就是低字节的低。
小端 = Little-Endians = Intel Mode:高字节byte保存在高地址中,低字节byte保存在低地址中 。
(2)Motorola 格式
当一个信号的数据长度超过 1 个字节(8 位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在低字节(MSB)的高位,信号的低位(S_lsb)将被放在高字节(LSB)的低位。信号的起始位就是高字节的低位。
大端 = Big-Endians = Motorola Mode:高字节保存在低地址中,低字节保存在高地址中。
Motorola格式:
(1)Motorola_LSB:起始位是从低字节开始
(2)Motorola_MSB :起始位是从高字节开始
案例:
数字:46,换为二进制为:101110 起始位20,长度6bit 00 02 E0 00 00 00 00
Motorola_LSB排列格式:
数字:46,换为二进制为:101110 起始位20,长度6bit 00 00 17 00 00 00 00
Motorola_MSB排列格式:
三、区别
案例:
十进制128,写成二进制数
1000 0000
,就是大端字节序,而写成0000 0001
就是小端字节序
四、排列规则
五、其他相关参数
(1)高低地址
Byte0为低字节,Byte7为高地址
(2)高低字节
对于0xFF22来说,FF就叫做数据的高字节部分,22就是低字节部分
(3)MSB和LSB
MSB(most significant bit)即最高有效位;
LSB(least significant bit)即最低有效位;
字节计算就是从LSB到MSB的计算过程
六、相关参数
(1)Unsigned和Signed
CAN信号数据类型分为Unsigned和Signed。Unsigned表示无符号,Signed表示有符号。
(2)精度/偏移量
用于描述信号值如何转变成信号物理值。
[Physical value] = ( [Raw value] * [Factor] ) + [Offset]
[Raw value] = [Physical value] - [Offset] / [Factor]
(3)CAN标识符
CAN 协议的2.0B版本规定,CAN控制器的标志符长度是11位或29位。
标准CAN长度是11位,扩展CAN长度是29位。
CAN标准帧ID:文章来源:https://www.toymoban.com/news/detail-622350.html
文章来源地址https://www.toymoban.com/news/detail-622350.html
到了这里,关于车载通信——CAN报文信号排列方式(报文/信号结构)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!