分享

CAN消息中的Motorola和Intel

 Kuai2012 2022-04-26

在之前已经对dbc的格式进行了详细的分析,在该文里也提到了报文格式Motorola或Intel,接下来来理一理报文格式。

总线上数据的传输规则:字节的高位先发送,字节的低位最后发送,如图1所示。对于字节的发送而言,也可以选择高字节(MSB)先发(Byte 7先发),或低字节(LSB)先发(Byte 0先发),通常来说是用低字节先发,这样在CANdb++软件中比较直观。

图1 bit的发送顺序

Motorola格式

当信号的数据长度超过 1 个字节或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位将被放在低字节的高位,信号的低位(将被放在高字节的低位。这样,信号的起始位就是高字节的低位.

上面的表述读起来有点拗口,下面通过一个例子来说明一下。如图2中信号DCU_Id,其长度为11bit,那么在motorola格式下,是怎么组合成信号的呢?

图2 Motorola格式的CAN消息

DCU_Id = Byte5>>1+Byte4<<7。

其中Byte5>>1为低字节,Byte4<<7为高字节。

Intel格

当信号的数据长度超过1 个字节或者不超过一个字节但是采用跨字节方式实现时,该信号的高位将被放在高字节的高位,信号的低位将被放在低字节的低位。因此信号的起始位就是低字节的低位。

同样,通过一个具体的例子来说明,CAN消息里放置的数据与图1是一样的,只不过编码格式采用了intel格式,如图3所示。那intel格式下DCU_Id应该怎么算呢?

图3 Intel格式的CAN消息

DCU_Id = Byte4>>3+Byte5<<5;

其中Byte4>>3为低字节,Byte5<<5为高字节。
以上就是对moto和intel格式的介绍。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多