关于CAN报文,用的Motorola,还是Intel格式,只在信号数据跨字节解析时,才有区别。单个字节数据没有区别。

小端

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

- 举例:

如果上面这条报文数据为0xD2 E4 56 78 90, 则

- VolAD = `0x90`
- Treserved = `0x78 56`
- ins_p: 低位是0xD2,高位是前7bit,0xE4=1110-0100, 所以高位是110-0100,补全为byte就是0110-0100=0x64. 所以ins_p = `0x64 D2`

大端

大端 = Big-Endians = Motorola Mode:高字节保存在低地址中,低字节保存在高地址中。

- 举例:

如果上面这条报文数据为0xD2 E4 56 78 90, 则

- VolAD = `0x90`
- Treserved = `0x56 78`
- ins_p: 此时0xD2是高位数据,E4是低位数据。ins_p长度是15bit,先算低位byte数据就是0XE4。然后需要在高位取7bit,0xD2=1101-0010, 所以高位是101-0010,补全为byte就是0101-0010=0x52. 所以ins_p = `0x52 E4`

可以注意到,大端模式(motolora)下,数据的处理方式和平常手写的顺序相同

参考文章

  1. https://www.cnblogs.com/little-white/p/3236548.html
  2. https://www.cnblogs.com/isAndyWu/p/10788952.html
Last modification:September 9, 2019
如果觉得文章对你有用,请随意赞赏