CAN总线的编码方式_第1页
CAN总线的编码方式_第2页
CAN总线的编码方式_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.word 可编辑 .对 CAN 总线的常见编码格式解析我们在进行CAN 总线的通讯设计过程中 ,对于通讯矩阵的建立 ,我们常常会选择一种编码方式 ,最常见的编码格式是Intel 格式和 Motorola格式。但是往往人们都是以一种习惯去选择,究竟两种格式具体的区别在哪里呢?我们需要明白两种格式对信号是如何排布的,又是按照什么顺序进行正确解析的。本篇文章就是作者根据在整理通讯矩阵和dbc 文件中遇到的一些问题 ,提出的自己的一些体会和见解 ,希望大家通过此篇文章对两种格式有更加深刻的理解。我们在设计初期 ,都会首先选择一种编码格式,这种选择大多都是根据设计者自己的习惯 ,具体 Intel 格式

2、和 Motorola格式哪个更有优势的问题,在这里没有区别 。但是就使用者而言,需要对接收到数据帧进行正确的解析,否则就无法得到想要的信号 。下面我们就来说一下两种格式的区别。首先我们需要明确一点 ,无论是 Intel 格式还是 Motorola格式,在每个字节中,数据传输顺序都是从高位( msb )传向低位 (lsb )。如下图所示 。bytexbit(8* x+7)bit(8* x)msblsbx=0,1,2,37图 1一般主机厂设计人员在设计初期都会定义好字节的发送顺序,定义 Byte0 为LSB, Byte7 为 MSB。第一种情况 :先发送 Byte0 ,然后 Byte1 到 Byt

3、e7 ;第二种情况:先发送 Byte7 ,然后 Byte6 到 Byte0 。根据我了解到的大部分主机厂都会采取第一种发送方法 ,很少会采取后者 。我们在用 CANoe 中的 CANdb+ 编辑数据库时 ,肯定会用到如下图所示的编辑界面。.专业 .专注.word 可编辑 .图 2结合工作中的出现的问题,有的网络设计者会在排布信号的时候出现误区。上图中用的是比较常规的排布方式,即位在字节中的索引是从右至左,还有一种是颠倒过来的 ,即从左至右 。 如下图所示 。图 3我们现在以第一种矩阵模式进行说明。在这种情况下 ,如果主机厂在初期定义先发送 LSB,再发送的 MSB 的形式,那么数据信号可以按照

4、从上到下,从左到右的顺序发送 ,非常方便 ,接收器解析起来也比较容易。如果主机厂定义先.专业 .专注.word 可编辑 .发送 MSB 再发送 LSB 的形式,那样数据传输比较复杂 ,所以一般都不建议用这种方案 。 至于设计者常出现的错误我们在下文中会重点说明,下面我们先了解一下 Intel 格式和 Motorola格式在 CANdb+ 中的区别 。一、Motorola编码格式 :如果我们选择使用Motorola编码格式 ,那需要知道它在CANdb+ 中的 3 种信号排布方式 。 这三种排布的主要区别在于它们的起始位不同。我们假设一个信号的位长为12,那么它就要跨字节排布。在 Motorola

5、格式中的第一种排布形式为 Motorola Forward LSB ,即从小端开始 ,它的起始位为 lsb (16);第二种排布形式为MotorolaForwardMSB,即从大端开始 ,它的起始位为msb( 11);第三种排布形式为 Motorola Backward ,它的起始位为第 8 位,这种形式基本不采用 ,因为排布规律相对于前两种比较复杂 。如下图所示 ;图 4针对上述Motorola格式第一种排布形式,信号的起始位为高字节的低位。在CANdb+ 中的具体体现如图所示 。.专业 .专注.word 可编辑 .图 5在 CANdb+ 中,无法区别这三种排布形式 ,它的起始位也是自动定义

6、的 ,所以我们在设计通讯矩阵时 ,一般都会采用第一种 ,即 Motorola Forward LSB 。只是有的工程师根据自己的个人习惯 ,去改变起始位 ,但我们需要明确一点就是,在 Canoe 软件中,一种格式的信号排布是没有区别的 。二、Intel 编码格式如果我们选择使用Intel 编码格式 ,它在 CANdb+ 中也有两种信号排布方式。我们假设一个信号位长为12,它也是要跨字节排布 。第一种排布形式为IntelStandard ,即标准形式 ,它的起始位为lsb (12)。信号的起始位为低字节的低位。如下图所示 :.专业 .专注.word 可编辑 .图 6图 7第二种排布形式为Inte

7、lSequential ,即顺序排布形式或者叫颠倒排布。这种形式不太常用 ,但我们也需要了解 ,它的起始位为 lsb (11 )。如下图所示 :图 8以上文字介绍了当信号的位长超过一个字节的情况下,信号分别以Motorola.专业 .专注.word 可编辑 .编码格式和 Intel 编码格式排布时的区别 。 我们现在假设一个信号的位长为4,观察在 CANdb+ 中信号的排布有什么区别。Motorola编码格式下的信号排布 :(绿色信号 )图 9Intel 编码格式下的信号排布:(绿色信号 ).专业 .专注.word 可编辑 .图 10由图可知 ,两种格式的起始位不同,但是他们的排布方式相同,都

8、是信号的高位放在该字节的高位(msb ),信号的低位放在该字节的低位( lsb )。所以,当一个信号的位长小于8 时,那么两种编码格式没有区别。如果信号的位长大于 8,那么两种编码格式将会产生很大差别 。 这是我们在网络通讯设计初期必须要掌握的 。下面我们说一下一些工程师在做通讯矩阵的设计时 ,常会出现的几个问题 :1. 在编写通讯矩阵时 ,在起始位的编写中 ,常会将 Intel 格式和 Motorola 格式弄混。例如 :如下图所示的通讯矩阵.专业 .专注.word 可编辑 .如果一个信号的位长为4,那么若是 Motorola编码格式 ,那它的起始位就是4;而若是 Intel 编码格式 ,那

9、它的起始位就是0。2. 在 CANdb+ 中进行通讯矩阵的调整时 ,首先应明确信号选取的编码格式 ,然后进行拖曳 ,有的工程师常常在没有区分编码格式 ,凭借主观感觉对通讯矩阵进行调整 ,这往往会导致信号的传输错误 。3. 在信号跨字节排布中 ,未明确 msb 和 lsb ,在拖曳过程中会出现错误 。综上所述 ,Motorola 编码格式和 Intel 编码格式主要区别还是在信号位长大于8 或者信位长不超过8 但是跨字节的情况下,前者的规则 :该信号的高位( S_msb)将被放在低字节 (MSB)的高位,信号的低位 ( S_lsb)将被放在高字节( LSB)的低位 ;后者的规则 :该信号的高位 ( S_msb)将被放在高字节( MSB)的高位,信号的低位 ( S_lsb)将被放在低字节 (LSB)的低位 。希望大家能从此篇文章中收获一些经验 。.专业 .专注.word 可编辑 .文中术语解释及定义 :1. 信号的高位 ,即最能表达信号特性的因子 ,比如:车速信号 500km/h 按照给定的公式 ,转换成十六进制数为 0x6A5 ,因为 6 代表的数量级最大(162),那么其中 6 就是其信号的高位 。2. 信号的低位 ,即最不能表达信号特性的因子 ,比如:车速信号 500km/h按照给定的公式 ,转换成十六进制数为 0x6A5 ,因为 5 代表的数量级最小(16 0),那么其中 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论