什么是大小端,网上文章汗牛充栋,不再赘述。
具体到CAN传输,总觉得大端模式有点反人类,不易于理解。秉着只有深刻理解才能记住的原则,将大小端进行图形化。
小端模式,就是数据的低位部分填充到低字节,高位部分填充到高字节。数据填充方向是按下图的箭头,先填充数据的低位。

大端模式,就是数据的高位部分填充到低字节,低位部分填充到高字节。数据填充方向是按下图的箭头,先填充数据的高位。

举个栗子,要填充两个12bit的数据至bit0~bit23,其值分别为0x123, 0x456, 具体的填充结果如下:
| byte | 小端 | 大端 |
|---|---|---|
| 0 | 0x23 | 0x12 |
| 1 | 0x61 | 0x34 |
| 2 | 0x45 | 0x56 |
对于小端模式,如果我们从高地址往低地址读数据,读出来数据顺序是符合直觉的:
| byte2 | byte1 | byte0 |
|---|---|---|
| 0x45 | 0x61 | 0x23 |
对于大端模式,如果我们从低地址往高地址读数据,读出来数据顺序是符合直觉的:
| byte0 | byte1 | byte2 |
|---|---|---|
| 0x12 | 0x34 | 0x56 |
3338

被折叠的 条评论
为什么被折叠?



