星期五, 26 03月 2021 16:07

CAN总线字节序

Motorola格式与Intel格式

CAN总线格式
CAN Frame mit Pegeln mit Stuffbits

IDENTIFIER
The IDENTIFIER’s length is 11 bits. These bits are transmitted in the order from ID-10 to
ID-0. The least significant bit is ID-0.
DATA FIELD
The DATA FIELD consists of the data to be transferred within a DATA FRAME. It can
contain from 0 to 8 bytes, which each contain 8 bits which are transferred MSB first.

从CAN总线的规范可以看出,总线的位序(bit order)msb first,大端模式,也称为递减位序(Decreasing bit order)。

msb lsb

但是总线没有规定DATA FIELD的字节序,这是上层协议的范畴。

Motorola格式与Intel格式

在进行CAN总线通信设计时,对CAN总线信号有两种编码格式:Motorola与Intel格式。
两者并无优劣之分,只是设计者的习惯选择。
一般情况下,主机厂在定义CAN总线信号时,会明确定义字节的发送顺序,LSB(byte)先发,还是MSB先发。

Motolora格式(big endian)

MSB LSB

Intel格式(little endian)

LSB MSB

位计数的方法

锯齿(Sawtooth)法

7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8

发送一个8字节的数据到总线上,bit7(msb of Byte0)最先发送,接着是bit6,bit56(lsb of Byte7)最后发送。

顺序(Sequential)法

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

发送一个8字节的数据到总线上,bit0(msb of Byte0)最先发送,接着是bit2,bit63(lsb of Byte7)最后发送。

CANoe中一般用锯齿法。
而对于跨字节的数据,CANoe表示格式(这两种格式只针对字节序,位序总是msb first的):

  • Intel格式(LSB first)的lsb从低字节地址的低位地址开始,向左排布,msb在高字节地址的高位地址
  • Motorola格式(MSB first)的lsb从高字节地址的低位地址开始,向左排布,msb在低字节地址的高位地址。

实际总线传输按照msb first,从Byte0的bit7开始,bit6, …, 到Byte1的bit15,bit14, … , 到Byte7的bit63, … , bit62, …, bit56.

Intel Motorola format in CANoe
start bit总是指lsb的位置,然后向左排布,需要跨字节时:Intel格式从Byte0向Byte7的方向排布,Motorola格式从Byte7向Byte0的方向排布。

缩写:

msb:most significant bit
lsb:most significant bit
MSB:Most Significant Byte
LSB:Least Significant Byte

查看 22492

AI 智能舌象仪

Tongue imager rafavi

导航信号采集及测试设备

Portable singal acquisition and replay
 
Please support our site by viewing this advertisement.

Please support our site by viewing this advertisement

Free Content