Intel与Motorola区别
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含义一致。
Intel与Motorola区别的更多相关文章
- ATT汇编与Intel汇编的区别,摘自《深入分析linux内核源码》一书
2.6.1 AT&T与Intel汇编语言的比较 我们知道,Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix.就Linux所使用的386汇编语言而言 ...
- PCM存储格式 Intel 和 Motorola
https://blog.csdn.net/cxz_yzxkj/article/details/84496614
- Intel格式与Motorola格式的区别
Intel低字节在前 Motorola高字节在前 在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式.究竟两种编码格式有 ...
- CAN报文 Intel 格式与Motorola 格式的区别
当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola 两种格式的 编码结果没有什么不同,完全一样.当信号的数据长度超过 1 个字节(8 位)时,两者的编码结果出现 了明 ...
- 嵌入式Linux开发系列之一: 走进嵌入式Linux的世界
转载:http://www.ibm.com/developerworks/cn/linux/l-embed/part1/index.html 随着信息化技术的发展和数字化产品的普及,以计算机技术. ...
- java web 开发三剑客 -------电子书
Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...
- GDB配置与.gdbinit的编写
GDB配置与.gdbinit的编写 当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件:如果该文件存在,则 GDB 就执行该 ...
- Linux第四次学习笔记
程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i48 ...
- ELF(Executable and Linkable Format)
目录 . 引言 . ELF文件格式 . ELF格式分析工具 0. 引言 0x1: ELF文件类型 ELF文件标准里把系统中采用ELF格式的文件归为以下几类 . 可重定位文件(Relocatable F ...
随机推荐
- 【Python3】操作文件,目录和路径
1.遍历文件夹和文件 Python代码 import os import os.path rootdir = "d:/test" for parent,dirnames,fi ...
- Python全栈day 05
Python全栈day 05 一.数据类型补充 1. int py2和py3的2种区别 py2有int和long,int的取值范围为-2^31~2^31-1,超出范围自动转为long,长整型. py2 ...
- chroot: cannot run command `/bin/bash': No such file&nbs
最近在使用chroot去重新的挂载一个根目录,总是出现上面的问题,很烦,好久了没有解决, 然后自己就写了一个复制依赖库的脚本,然后发现可以切换了,然后就重新试着去挂载根目录 终于发现了原因. ---- ...
- iOS各个版本的特点
一.导航控制器中: iOS7: 栈顶控制器默认是320*480:控制器有64的高度看不见:
- C语言基础篇(三) 指针
导航: 1.指针 2. 数组 3. 结构体,共用体 4. 内存分布图 5. 段错误分析 ----->x<------------->x<---- ...
- HyperLedger Fabric 1.4 区块链技术形成(1.2)
在比特币诞生之时,没有区块链技术概念,当人们看到比特币在无中心干预的前提下,还能安全.可靠的运行,比特币网络打开了人们的想象空间:技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或 ...
- [Codeforces86D]Powerful array(莫队算法)
题意:定义K[x]为元素x在区间[l,r]内出现的次数,那么它的贡献为K[x]*K[x]*x 给定一个序列,以及一些区间询问,求每个区间的贡献 算是莫队算法膜版题,不带修改的 Code #includ ...
- 初见spark-02(RDD及其简单算子)
今天,我们来进入spark学习的第二章,发现有很多事都已经开始变化,生活没有简单的朝自己想去的方向,但是还是需要努力呀,不说鸡汤之类的话了, 开始我们今天的spark的旅程 一.RDD是什么 rdd的 ...
- 使用.gitignore忽视项目中的文件/文件夹
在项目开发的过程中,我们经常需要IDE来提高编程效率.然而,不同的IDE会生成各种各样的临时文件.在项目生命周期中,我们往往不需要关注这类文件的变更记录,因而我们是不需要将它们加入到源代码管理器中. ...
- Python列表深浅复制详解
转自:https://www.cnblogs.com/blaomao/p/7239203.html 在文章<Python 数据类型>里边介绍了列表的用法,其中列表有个 copy() 方法, ...