CAN报文大小端-Intel格式与Motorola格式的区别

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

在这里插入图片描述
在这里插入图片描述

小端(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

大端(motolora)

  • 大端 = 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)下,数据的处理方式和平常手写的顺序相同。

转载自大神

猜你喜欢

转载自blog.csdn.net/qq_24649627/article/details/110792124
今日推荐