关于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)下,数据的处理方式和平常手写的顺序相同
参考文章
版权属于:CraZyMoNk
本文链接:https://blog.peacharc.com/archives/426.html
转载时须注明出处及本声明