Intel低字节在前

Motorola高字节在前

  

在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式。究竟两种编码格式有什么样的区别呢?设计者、dbc文件编辑者或者测试人员又该如何判断两种格式,并进行有效正确的配置和解析呢?下面作者给出自己在设计和测试过程中的一点体会和见解,希望能够总结出来加深一下印象和理解。

在编码优缺点上,Motorola格式与Intel格式并没有孰优孰劣之分,只不过根据设计者的习惯,由用户自主选择罢了。当时,对于使用者来讲,在进行解析之前,就必须要知道编码的格式是哪一种,否则,就不能保证正确地解析信号的含义。以下就以8位字节编码方式的CAN总线信号为例,详细分析一下两者之间的区别。

首先,介绍一下CAN总线的数据传输规则,首先传输一个字节的高位(msb),最后传输该字节的低位(lsb)。如下图所示。

一般情况下,主机厂在定义CAN总线信号定义时,都会明确定义字节的发送顺序,即:以首先发送byte0(LSB),然后byte1,byte2,……(MSB)的发送顺序;还是以首先发送byte7(MSB),然后byte6,byte5,……(LSB)的发送顺序。据作者了解到的多个主机厂定义的CAN总线字节发送顺序均为前者(即:首先发送LSB,最后发送MSB)。这一点可以从目前主流的CAN总线信号数据库编辑器德国verctor公司的CANoe软件工具的定义上看出,CANoe中的CANdb++编辑器中默认定义的CAN数据场的字节结构及每一位的排布入下图所示。

在这种情况下,如果主机厂采用的是首先发送LSB,最后发送MSB的发送顺序,则在上表中可直接按照从左至右,从上至下的顺序依次对信号进行排布即可;但是,如果主机厂采用的是首先发送MSB,最后发送LSB的发送顺序,则在上表中需要从下至上,从右至左的顺序依次对信号进行排布,这样就比较难以对应,而且信号与数据场各字节之间的映射关系也不太直观。所以,一般来讲,主机厂会采用首先发送LSB,最后发送MSB的发送顺序。

下面就以CAN总线报文的发送顺序为首先发送LSB,最后发送MSB的方式为前提,介绍Intel格式与Motorola格式这两种编码方式的不同之处。

一、 采用Intel格式编码

当一个信号的数据长度不超过1个字节(8位)并且信号在一个字节内实现(即,该信号没有跨字节实现)时,该信号的高位(S_msb)1将被放在该字节的高位,信号的低位(S_lsb)2将被放在该字节的低位。这样,信号的起始位3就是该字节的低位。下图分别以4位和8位数据长度的两种信号为例进行了说明,并给出了某一车型的通信矩阵CANoe中的CAN数据库实现的图片说明。

当一个信号的数据长度超过1个字节(8位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位。这样,信号的起始位就是低字节的低位。对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构。本文就不再考虑和分析这种较为特殊的情况,但其原理与本文讨论的其他情况是相同的。下图分别以12位和16位数据长度的两种信号为例进行了说明,并给出了CANoe中的某一车型的通信矩阵的CAN数据库的图片说明。

二、 采用Motorola格式编码

当一个信号的数据长度不超过1个字节(8位)并且信号在一个字节内实现(即,该信号没有跨字节实现)时,信号的高位(S_msb)将被放在该字节的高位,信号的低位(S_lsb)将被放在该字节的低位。这样,信号的起始位就是该字节的低位。下图分别以4位和8位数据长度的两种信号为例进行了说明,并给出了某一车型的通信矩阵在CANoe中CAN数据库实现的图片说明。

当一个信号的数据长度超过1个字节(8位)或者数据长度不超过一个字节但是采用跨字节方式实现时,该信号的高位(S_msb)将被放在低字节(MSB)的高位,信号的低位(S_lsb)将被放在高字节(LSB)的低位。这样,信号的起始位就是高字节的低位。对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构。本文就不再考虑和分析这种较为特殊的情况,但其原理与本文讨论的其他情况是相同的。下图分别以12位和16位数据长度的两种信号为例进行了说明,并给出了CANoe中的某一车型的通信矩阵的CAN数据库的图片说明。

由上,可以看出,当一个信号的数据长度不超过1个字节(8位)时,Intel与Motorola两种格式的编码结果没有什么不同,完全一样。当信号的数据长度超过1个字节(8位)时,两者的编码结果出现了明显的不同。

文中术语解释及定义:

1. 信号的高位,即最能表达信号特性的因子,比如:车速信号500km/h按照给定的公

式,转换成十六进制数为0x6A5,因为6代表的数量级最大(162),那么其中6就是其信号的高位。

2. 信号的低位,即最不能表达信号特性的因子,比如:车速信号500km/h按照给定的

公式,转换成十六进制数为0x6A5,因为5代表的数量级最小(160),那么其中5就是其信号的低位。

3. 信号的起始位,一般来讲,主机厂在定义整车CAN总线通信矩阵时,其每一个信

号都从其最低位开始填写,这样也符合使用习惯。所以信号的起始位就是信号的最

低位。这也与CANoe中CANdb++的定义Startbit含义一致。

转载于:https://www.cnblogs.com/isAndyWu/p/10784572.html

Intel格式与Motorola格式的区别相关推荐

  1. CAN通讯矩阵之Intel格式与Motorola格式

    目录 1. 概述 2. 发送顺序 3. Intel 格式 4. Motorola 格式 5. 总结 1. 概述 参考博客:Intel格式与Motorola格式的区别. 主要是对上面提到的博客做下笔记, ...

  2. CANoe-Intel模式和Motorola模式的区别

    Intel模式和Motorola模式的区别如下:

  3. FAT32格式和NTFS有什么区别

    FAT32与NTFS的区别在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16.像基于MS-DOS,Win 95等系统都采用了FAT16文件系统.在Win 9X下,FAT16支持的分区最 ...

  4. flac格式转换mp3格式_MP3,FLAC和其他音频格式之间有什么区别?

    flac格式转换mp3格式 Digital audio has been around a very long time so there's bound to be a plethora of au ...

  5. 计算机硬盘分区信息,你知道电脑硬盘分区Guid格式和MBR格式有什么区别吗?来看看!...

    现在的电脑随着技术的更新,传统的MBR格式虽然支持兼容,但是win10系统基本都使用了GUID分区格式,这样会让整体的系统运作得更有效率.如果还在使用MBR格式的用户想安装系统,没有设置好分区格式,容 ...

  6. python文本文件和二进制文件的区别_以文本格式和二进制格式打开文件,到底有什么区别?...

    以文本格式和二进制格式打开文件,到底有什么区别? 我们知道,open() 函数第二个参数是一个字符串,用于指定文件的打开方式,如果该字符串中出现 b,则表示以二进制格式打开文件:反之,则以普通的文本格 ...

  7. War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?

    1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 WAR是Sun提出的一种Web应用程序格式,是许多文件的一个压缩包.这个包 ...

  8. DASH、HLS和MP4格式有什么播放体验区别?

    DASH.HLS和MP4格式有什么播放体验区别? 更新时间:2022-06-20 GMT+08:00 查看PDF 分享 视频点播支持视频转码的输出格式主要有DASH.HLS和MP4,这三种的播放体验如 ...

  9. 以文本格式和二进制格式打开文件,到底有什么区别?

    目录 以文本格式和二进制格式打开文件,到底有什么区别? 两种格式的解码区别 文本格式open()时的隐式转换 参考资料 以文本格式和二进制格式打开文件,到底有什么区别? 我们知道,open() 函数第 ...

最新文章

  1. python读取有中文文件时的报错处理
  2. AtCoder Beginner Contest 129
  3. python 调用shell或windows命令
  4. python字典键值对转化为相应的变量名和变量值
  5. java加载properties文件的几种方式,java高级面试笔试题
  6. 《交互式程序设计 第2版》一第2章 编程基础
  7. c语言bim的题目,BIM考试选择题精选
  8. I2C总线的上拉电阻计算
  9. cofax(网络传真机) v3.1.0.0
  10. Jzoj4699 Password
  11. 软件测试用例执行日报,软件测试之测试用例执行.docx
  12. C语言中的取绝对值函数
  13. excel插入图片(利用vba)
  14. (div,p)等标签之间“分割线”的两种实现方式
  15. [iOS]在xcode的iOS虚拟机中对BLE(蓝牙4.0)进行调试
  16. 个人项目---音乐视频播放器
  17. Linux--gcc的基本用法
  18. HashMap底层扩容机制是2倍的原理
  19. 云服务器测速脚本_VPS服务器常用性能测试脚本
  20. 【前端换肤】前端换肤方案

热门文章

  1. ./4.sh: No such file or directory
  2. mysql表单查询_表单查询实例
  3. seir模型matlab_疫情专题 | 传染病的经典数学模型
  4. eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig
  5. 天池 在线编程 最小的行程(动态规划)
  6. LeetCode 1067. 范围内的数字计数
  7. LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
  8. LeetCode 531. 孤独像素 I
  9. LeetCode 624. 数组列表中的最大距离
  10. LeetCode 893. 特殊等价字符串组