Intel格式与Motorola格式的区别
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格式的区别相关推荐
- CAN通讯矩阵之Intel格式与Motorola格式
目录 1. 概述 2. 发送顺序 3. Intel 格式 4. Motorola 格式 5. 总结 1. 概述 参考博客:Intel格式与Motorola格式的区别. 主要是对上面提到的博客做下笔记, ...
- CANoe-Intel模式和Motorola模式的区别
Intel模式和Motorola模式的区别如下:
- FAT32格式和NTFS有什么区别
FAT32与NTFS的区别在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16.像基于MS-DOS,Win 95等系统都采用了FAT16文件系统.在Win 9X下,FAT16支持的分区最 ...
- 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 ...
- 计算机硬盘分区信息,你知道电脑硬盘分区Guid格式和MBR格式有什么区别吗?来看看!...
现在的电脑随着技术的更新,传统的MBR格式虽然支持兼容,但是win10系统基本都使用了GUID分区格式,这样会让整体的系统运作得更有效率.如果还在使用MBR格式的用户想安装系统,没有设置好分区格式,容 ...
- python文本文件和二进制文件的区别_以文本格式和二进制格式打开文件,到底有什么区别?...
以文本格式和二进制格式打开文件,到底有什么区别? 我们知道,open() 函数第二个参数是一个字符串,用于指定文件的打开方式,如果该字符串中出现 b,则表示以二进制格式打开文件:反之,则以普通的文本格 ...
- War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?
1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 WAR是Sun提出的一种Web应用程序格式,是许多文件的一个压缩包.这个包 ...
- DASH、HLS和MP4格式有什么播放体验区别?
DASH.HLS和MP4格式有什么播放体验区别? 更新时间:2022-06-20 GMT+08:00 查看PDF 分享 视频点播支持视频转码的输出格式主要有DASH.HLS和MP4,这三种的播放体验如 ...
- 以文本格式和二进制格式打开文件,到底有什么区别?
目录 以文本格式和二进制格式打开文件,到底有什么区别? 两种格式的解码区别 文本格式open()时的隐式转换 参考资料 以文本格式和二进制格式打开文件,到底有什么区别? 我们知道,open() 函数第 ...
最新文章
- python读取有中文文件时的报错处理
- AtCoder Beginner Contest 129
- python 调用shell或windows命令
- python字典键值对转化为相应的变量名和变量值
- java加载properties文件的几种方式,java高级面试笔试题
- 《交互式程序设计 第2版》一第2章 编程基础
- c语言bim的题目,BIM考试选择题精选
- I2C总线的上拉电阻计算
- cofax(网络传真机) v3.1.0.0
- Jzoj4699 Password
- 软件测试用例执行日报,软件测试之测试用例执行.docx
- C语言中的取绝对值函数
- excel插入图片(利用vba)
- (div,p)等标签之间“分割线”的两种实现方式
- [iOS]在xcode的iOS虚拟机中对BLE(蓝牙4.0)进行调试
- 个人项目---音乐视频播放器
- Linux--gcc的基本用法
- HashMap底层扩容机制是2倍的原理
- 云服务器测速脚本_VPS服务器常用性能测试脚本
- 【前端换肤】前端换肤方案
热门文章
- ./4.sh: No such file or directory
- mysql表单查询_表单查询实例
- seir模型matlab_疫情专题 | 传染病的经典数学模型
- eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig
- 天池 在线编程 最小的行程(动态规划)
- LeetCode 1067. 范围内的数字计数
- LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
- LeetCode 531. 孤独像素 I
- LeetCode 624. 数组列表中的最大距离
- LeetCode 893. 特殊等价字符串组