快捷搜索: 王者荣耀 脱发

Intel和Motorola两种CAN总线编码格式详解

1、Byte order for Intel Processors(Little Edian)

ID:XX MSB LSB Byte0 7 6 5 4 3 2 1 0 Byte1 15 14 13 12 11 10 9 8 Byte2 23 22 21 20 19 18 17 16 Byte3 31 30 29 28 27 26 25 24 Byte4 39 38 37 36 35 34 33 32 Byte5 47 46 45 44 43 42 41 40 Byte6 55 54 53 52 51 50 49 48 Byte7 63 62 61 60 59 58 57 56

Example:

(1)在0字节上填充一个6位的数据:

Byte0 MSB <--- <--- <--- <--- LSB

填充模式:起始位:0,长度6

(2)在1和2字节上填充一个12位的数据(高位在低字节,低位在高字节):

Byte1 <--- <--- <--- LSB Byte2 MSB <--- <--- <--- <--- <--- <--- <---

填充模式:起始位:12,长度12

2、Byte order for Mortorola Processors(BigEdian)

ID:XX MSB LSB Byte0 7 6 5 4 3 2 1 0 Byte1 15 14 13 12 11 10 9 8 Byte2 23 22 21 20 19 18 17 16 Byte3 31 30 29 28 27 26 25 24 Byte4 39 38 37 36 35 34 33 32 Byte5 47 46 45 44 43 42 41 40 Byte6 55 54 53 52 51 50 49 48 Byte7 63 62 61 60 59 58 57 56

Example:

(1)在0字节上填充一个6位的数据:

Byte0 MSB <--- <--- <--- <--- LSB

填充模式:起始位:0,长度6

(2)在1和2字节上填充一个12位的数据(高位在高字节,低位在低字节):

Byte1 MSB <--- <--- <--- Byte2 <--- <--- <--- <--- <--- <--- <--- LSB

填充模式:起始位:11,长度12

总结:

(1)当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola 两种格式的编码结果没有什么不同,完全一样。

(2)当信号的数据长度超过 1 个字节(8 位)时,两者的编码结果出现 了明显的不同:

Intel是高位在低字节,低位在高字节;

Motorola是高位在高字节,低位在低字节;

经验分享 程序员 微信小程序 职场和发展