【控制器局域网】CAN报文学习笔记(四)之 字节排序、信号提取实例1

2023-12-20 21:22:03

以下面的表格来表示字节顺序和位顺序,用红色表示高位MSB,蓝色表示低位LSB,绿色为LSB到MSB的过度

Bit oderMSBLSB
Byte oder\Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
MSBByte076543210
Byte115141312111098
Byte22322212019181716
Byte33130292827262524
Byte43938373635343332
Byte54746454443424140
Byte65554535251504948
LSBByte76362616059585756

下面以起始位36,长度为16的信号详细说明MSB与LSB的区别

Motorola Forward MSB (Big-Endian) 大端序

矩阵文档中的起始位置是MSB的起始位36,往高字节借位
在这里插入图片描述

填入 十六进制整数0x8FC0 , 对应二进制 1000 1111 1100 0000,如下图

在这里插入图片描述

要注意其箭头的增长方向,这样我们在提取该信号的值为:

MotorolaSignal = (Byte2 & 0b00011111) +(Byte3 << 3) + (Byte4 >> 5)

Motorola Forward LSB (Little-Endian) 小端序

矩阵文档中的起始位置是LSB的起始位36,往低字节借位
在这里插入图片描述

填入 十六进制整数0x8FC0 , 对应二进制 1000 1111 1100 0000,如下图
在这里插入图片描述

要注意其箭头的增长方向,这样我们在提取该信号的值为:

MotorolaSignal = (Byte2 & 0b00001111) +(Byte3 << 4) + (Byte4 >> 4)

文章来源:https://blog.csdn.net/qq_54199287/article/details/135114166
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。