在定义CAN通信矩阵或制作dbc时,我们需要知道报文的字节排列顺序。字节的排列顺序有2种,一种是Intel的排列顺序,另一种是Motorola的排列顺序,就跟大小端字节排序是一样的。下面笔者将简单介绍这2种字节排序的区别。

Intel格式:

Intel格式跟小端格式一样, 低地址代表低字节,高地址代表高字节 。比如一个信号Intel,它的起始位为3,长度为10,在dbc中它的排列顺序如下所示:

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

Intel = (byte0 >> 3) + (byte1 << 5)

其中(byte0 >> 3)为低字节的值,(byte1 << 5)为高字节的值。

Motorola格式:

Motorola格式跟大端格式一样, 低地址代表高字节,高地址代表低字节 。与Intel不一样, Motorola格式有2种表达方式,一种是Motorola_LSB,另一种是Motorola_MSB,但实际上它们代表的数据结构是一样的,只是表达方式不一样而已 ,其中 Motorola_LSB的起始位是从低字节开始的,而Motorola_MSB的起始位是从高字节开始的 。在dbc中,比如一个Motorola_LSB的信号MotorolaSignal,其起始位为10,长度为10,在dbc中,其排列顺序如下所示:

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

MotorolaSignal= (byte1 >> 2) + (byte0 << 6)

其中(byte1 >> 2)为低字节的值,(byte0 << 6)为高字节的值。

该MotorolaSignal信号用Motorola_MSB表示则为起始位为3,长度为10,但其值的计算方式跟Motorola_LSB是一样的。

在定义CAN通信矩阵或制作dbc时,我们需要知道报文的字节排列顺序。字节的排列顺序有2种,一种是Intel的排列顺序,另一种是Motorola的排列顺序,就跟大小端字节排序是一样的。下面笔者将简单介绍这2种字节排序的区别。Intel格式: Intel格式跟小端格式一样,低地址代表低字节,高地址代表高字节。比如一个信号Intel,它的起始位为3,长度为10,在...
我之前写过好几篇文章介绍大端小端的存储、显示和读取。在介绍DBC的文章中,也有 信号 在CAN消息数据中如何定义的 顺序 ,它和大端小端采用的原理相同,但是不能带入数据大端小端存储的方法。这里千万要注意! DBC数据库中定义 信号 时采用的 字节 顺序 ,如果想讲明白,很简单。但是如何讲明白的同时,还能通俗易懂,让人容易记住,这是我一直思考的问题!之前看过几篇别人写的介绍 信号 字节 顺序 的文章,怎么说呢?不那么通俗易懂,尤其对于初学者来说,太八股文了,今天尝试以我的角度解读 信号 字节 顺序 。这篇文章,我打算通过:画图、举例与分
参考博客: Intel 格式与 Mo tor ola 格式的区别。 主要是对上面提到的博客做下笔记,结合其他文章,转化为自己的理解写下来。直接阅读链接博客时请结合评论内容理解,博客内使用的图片有误。 1.多数厂商定义的CAN总线 字节 发送 顺序 均为先发送 LSB ,最后发送 MSB 。即:首先发送byte0( LSB ),然后byte1,byte2,……( MSB )的发送 顺序 。 (链接博客有人指出:主机厂发送CAN 报文 数据从byte0~byte7,并不是针对 信号 的,而是针对CAN2.0规范,CAN2.0 报文 格式和时序就是从byte0到b
本篇只 描述 Mo tor ola 格式的 字节 排序方式, Intel 格式的不作介绍。 首先以下面的表格来表示 字节 顺序 和位 顺序 ,用红色背景表示高位 MSB ,蓝色背景表示地位 LSB ,绿色为 LSB MSB 的过渡。 下面以起始位位34,长度位12的 信号 来做演示来区分 Mo tor ola Forward MSB Mo tor ola Forward LSB 的区别 Mo tor ola Forward MSB (大端在前): 矩阵文档中起始位置则为 MSB 的起始位为34,往高 字节 借位。 填入填入0xB79,即101101111001,如下图:  此图是客户的诊断需求规范,其 字节 表就是 Mo tor ala 字节 序,关键点讲解: 1. #1代表第一个 字节 ,在程序中存放时,就是在CAN数组的0下标内存中,ECU发送数据给上位机时就会首先发送 字节 31(且从0x31的高位bit到低位bit进行发送),再发送0x01\0xFF…… 2. 该#1#8 字节 ,ECU开发人员会以#5#8这4个 字节 代表内存地址这个数据, MSB 代表地址内存的高 字节
ADC是指模数转换器,是将连续 信号 (如电压、电流等)转换成离散数字 信号 的过程。而 MSB LSB 则是ADC数字输出的其中两个概念。 MSB ,即 Mo st Significant Bit,即“最高有效位”,在ADC数字输出中指的是二进制数字中最高位的那一位。因为二进制数字中最高位的值是2的最高次幂,因此 MSB 可以看作是数字中最重要的部分。在ADC数字输出中, MSB 所代表的电 信号 电平对应的电压通常都是比较高的。 LSB ,即Least Significant Bit,即“最低有效位”,在ADC数字输出中指的是二进制数字中最低位的那一位。因为二进制数字中最低位的值是2的最低次幂,因此 LSB 可以看作是数字中最不重要的部分。在ADC数字输出中, LSB 所代表的电 信号 电平对应的电压通常都比较低。 MSB LSB 的关系就是,数字输出中的位数越多, MSB LSB 之间的差距也就越大。因此,在设计ADC系统时需要根据应用需求选择合适的分辨率,以充分利用数字输出中的所有位数,同时还需注意信噪比和动态范围等因素,以保证系统的准确性和可靠性。