Can报文的字节排序(Motorola Forward MSB和Motorola Forward LSB的区别)

  • Post author:
  • Post category:其他


本篇只描述Motorola格式的字节排序方式,Intel格式的不作介绍。

首先以下面的表格来表示字节顺序和位顺序,用红色背景表示高位MSB,蓝色背景表示地位LSB,绿色为LSB到MSB的过渡。

在这里插入图片描述

下面以起始位位34,长度位12的信号来做演示来区分Motorola Forward MSB和Motorola Forward LSB的区别。

Motorola Forward MSB(大端在前):

矩阵文档中起始位置则为MSB的起始位34,往高字节借位。

在这里插入图片描述

填入0xB79,即101101111001,如下图:

在这里插入图片描述

Motorola Forward LSB(小端在前):

矩阵文档中起始位置则为LSB的起始位34,往低字节借位。

在这里插入图片描述

填入0xB79,即101101111001,如下图:

在这里插入图片描述

注意的是Motorola格式主要在于跨字节的区别,如果计算错了会导致发送的报文或解析的报文异常。其次要注意起始位是从第几位开始计算,Motorola Forward MSB以高位MSB为起始位,Motorola Forward LSB则以低位LSB为起始位。

知识补充1:什么是内存的高低地址?

如下图所示,以8个字节长度为例,Byte0为低字节,Byte7为高地址。

在这里插入图片描述

知识补充2:什么是高低字节?

比如说对于0xFF22来说,FF就叫做数据的高字节部分,22就是低字节部分。

知识补充3:什么是MSB和LSB?

MSB(most significant bit)即最高有效位,LSB(least significant bit)即最低有效位。字节计算就是从LSB到MSB的计算过程。



版权声明:本文为CJohn1994原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。