关于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)下,数据的处理方式和平常手写的顺序相同。
转载自大神。