CAN 报文Intel格式和Motorola格式

CAN总线数据传输规则

  • 对于单个Byte,CAN总线在进行数据传输时,首先传输一个字节的高位(MSB),最后传输该字节的低位(LSB)。
  • 一般情况下,主机厂在定义CAN总线信号的时候,都会明确定义字节的发送顺序,总共有两种顺序:
       首先发送byte0(LSB),然后byte1,byte2,...,最后byte7(MSB)。
    或者
      首先发送byte7(MSB),然后byte6,byte5,...,最后byte0(LSB)。
    其中前者发送顺序(先LSB,后MSB)是目前主机厂的主流。下面以CAN总线报文的发送顺序为首先发送LSB,最后发送MSB的方式为前提,介绍Intel格式和Motorola格式这两种编码方式的不同。

Intel格式编码

  • 当一个信号的数据长度不超过1 Byte,并且信号在一个字节内实现时,该信号的高位(S_msb)将被放在该字节的高位,信号的低位(S_lsb)将被放在该字节的低位
    *当一个信号的数据长度超过1 Byte或者数据长度不超过1 Byte,但是采用跨字节的方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位,这样信号的起始位就是低字节的低位。

Motorola格式编码

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

总结

  当一个信号的数据长度不超过1 Byte时,Intel和Motorola两种格式的编码结果完全一致,但是当数据长度超过1 Byte时,两者的编码结果出现了明显的不同。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,951评论 0 5
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,390评论 0 13
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,824评论 1 20
  • MSB 和 LSB 在计算机中的意思并不唯一确定,这边分为两种解释: MSB : Most Significant...
    noparkinghere阅读 3,066评论 0 0
  • 你为什么要横冲直撞对我肆意评论,你为什么要充满优越感地流露你的善良,你为什么不看看你的言行完全不一致?我很讨厌你,...
    ki呀阅读 166评论 0 1