车载通信——CAN报文信号排列方式(报文/信号结构)

一、CAN报文信号排列方式

在定义CAN通信矩阵或制作dbc时,需确定报文的信号排列方式。字节的排列顺序有:Intel的排列顺序;Motorola的排列顺序。

注:

Motorola和Intel格式,只在信号数据跨字节解析时有区别,单个字节数据没有区别

二、 编码格式

(1)Intel格式——小端

当一个信号的数据长度超过1 个字节(8 位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位。信号的起始位就是低字节的低。

小端 = Little-Endians = Intel Mode:高字节byte保存在高地址中,低字节byte保存在低地址中 。

车载通信——CAN报文信号排列方式(报文/信号结构)_第1张图片

(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排列格式:

车载通信——CAN报文信号排列方式(报文/信号结构)_第2张图片

数字:46,换为二进制为:101110    起始位20,长度6bit       00 00 17 00 00 00 00

Motorola_MSB排列格式:

车载通信——CAN报文信号排列方式(报文/信号结构)_第3张图片

 三、区别

案例:

十进制128,写成二进制数

1000 0000,就是大端字节序,而写成0000 0001就是小端字节序

车载通信——CAN报文信号排列方式(报文/信号结构)_第4张图片

四、排列规则

车载通信——CAN报文信号排列方式(报文/信号结构)_第5张图片

五、其他相关参数

(1)高低地址

Byte0为低字节,Byte7为高地址

车载通信——CAN报文信号排列方式(报文/信号结构)_第6张图片

 (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]

车载通信——CAN报文信号排列方式(报文/信号结构)_第7张图片

(3)CAN标识符

CAN 协议的2.0B版本规定,CAN控制器的标志符长度是11位或29位。

标准CAN长度是11位,扩展CAN长度是29位。

CAN标准帧ID:

车载通信——CAN报文信号排列方式(报文/信号结构)_第8张图片

你可能感兴趣的:(车载通信,网络)