汽车电子技术——CAN总线系统

  • 1. CAN总线基本概念
    • 1.1 汽车常用总线网络分布
    • 1.2 分层结构
    • 1.3 电压及逻辑数值
  • 2. CAN总线的通信机制
    • 2.1 帧类型
    • 2.2 通信机制
  • 3. CAN总线错误处理机制
    • 3.1 错误检测的类型
    • 3.2 错误状态
  • 4. 位定时与同步
    • 4.1 同步类型
    • 4.2 同步原则
  • 5. 参考学习的书籍

1. CAN总线基本概念

1.1 汽车常用总线网络分布

CAN 全称是 Controller Area Network,是目前应用最广泛的总线之一。20 世纪 80 年代,德国博世公司提出了应用于汽车上的串行通信网络,即 CAN 总线,它可以有效的支持分布式控制系统或者实时控制系统。CAN 总线通信技术应用于在车载个电控单元之间进行数据信息交换,如发动机管理系统、车身舒适性系统等,形成一个汽车电子控制网络。目前,CAN 总线已经被国际标准组织 ISO 制定成国际标准(ISO-11898),且由于 CAN 总线具有可靠性高、实时性好等诸多优点,其已成为国际上各主机厂使用的标准协议,是现在各大车企应用最多的通讯协议之一,同样也广泛应用于各种其他工业领域,如航空、自动化设备、工业控制等。
其实除了CAN总线外,LIN、MOST 和 Flex Ray 等其他总线网络也是当今车载网络的代表,不过这四种总线之间存在巨大的差异,他们分别在车载总线网络中分担着不同的角色,并保持着在各自相应的领域的优势。首先CAN 总线是目前活跃在汽车总线网络上应用最为广泛,CAN 总线在汽车控制系统总线中的主导作用仍将持续相当长的一段时间。LIN 总线以其低廉的价格和易于实施,在低速总线上取得了成功。MOST 和 Flex Ray 分别在车载媒体系统、安全类线控系统中占据一席,但这两种网络在车载总线网络中并没有被广泛应用。MOST 和 Flex Ray 总线虽然在各自的应用系统中表现出众,但它们还无法成为一个像CAN 总线那样的通用车载网络标准。一般来说各大主机厂都有各自相关的CAN 总线通讯规范论述及要求,基本上都大同小异,本博文也将主要论述CAN总线的相关知识。
CAN总线本身是一种串行数据通信总线,其通信速率最高可达1Mb/s,CAN系统内任意节点之间最大传输距离与其位速率有关,以下为最大传输距离与其位速率的关系:

数据传输速率 总线长度(m)
1Mbps 40
500Kbps 130
250 Kbps 270
50 Kbps 1300
10 Kbps 6700

由于整车控制系统对数据传输量及实时性等要求的不同,CAN总线按照速率的不同一般分为两种:一种是高速CAN网络——驱动系统总线,传输速率为125kbps至1Mbps 之间,它主要应用于对实时性要求较高、通信数据量大的动力控制系统和与安全有关的系统;另一种是低速CAN网络——舒适系统总线,传输速率为40kbps至125kbps之间,主要应用于车身电子系统之间的通信,低速CAN总线可以增加总线的传输距离,提高总线的抗干扰能力,降低开发成本。不同的网络系统间可以通过网关实现不同通信协议之间的数据转换,从而实现不同电控系统之间的数据信息共享及交互。

高速CAN总线和低速CAN总线,两条总线是彼此独立的两个总线系统,通过网关将两条总线网络连接起来,从而实现不同总线间的数据传输与共享。两条总线彼此独立运行,只有在两条总线之间需要进行数据交换时,才会启用网关进行协议转换并传输数据。这种总线架构及其传输方式可以将不同类型、不同速率的数据信息分开处理,从而可以减轻每个总线网络的负担,提高数据传输的实时性及可靠性。
从上图中也可以看出,CAN总线包括CAN_H (代表CAN high)和 CAN_L (代表CAN low)两根线。节点通过CAN控制器和CAN收发器(Transceiver,是Transmitter/Receiver的合成词)连接到CAN总线上。

1.2 分层结构

国际标准化组织(ISO)的开放系统互联(OSI)参考模型共分七层,CAN总线协议遵循了开放系统互联参考模型,并在该标准化模型的基础之上建立的。CAN总线模型包括三层协议,分别为:物理层、数据链路层与应用层。CAN总线协议定义了部分物理层与数据链路层,同时应用层则根据不同的应用领域由用户来定义。CAN总线层次参考模型结构框图如下图所示:

ISO11898是高速CAN的标准,ISO11519是低速CAN的标准。在最初发布时,高速CAN的数据链路层和物理层都在标准ISO11898中规定;在后面的更新中,将标准拆分为ISO11898-1——数据链路层和ISO11898-2——物理层。其中标准ISO 11519-2-1994已经在2006年被ISO 11898-3-2006代替,也就是说符合标准ISO 11898-3的产品也是支持符合ISO 11519-2标准的产品,ISO 11898-3已经兼容涵盖了ISO 11519-2。以下是ISO11898的各个相关标准:

Road vehicles – Controller area network (CAN)
ISO 11898-1:2003 Part 1: Data link layer and physical signalling
ISO 11898-2:2003 Part 2: High-speed medium access unit
ISO 11898-3:2006 Part 3: Low-speed, fault-tolerant, medium-dependent interface
ISO 11898-4:2004 Part 4: Time-triggered communication
ISO 11898-5:2007 Part 5: High-speed medium access unit with low-power mode

以下为高速CAN和低速CAN的一般拓扑结构:

1.3 电压及逻辑数值

CAN总线使用两根信号线上的差分电压传递信号,前述已给出两根信号线分别被称为CAN_H 和 CAN_L,以下图中的高速CAN为例,在静态时两信号线上的电压均为2.5V,表示逻辑“1”,称为隐性位或者隐性电平。传递逻辑“0”时,则成为显性位或显性电平,这需要CAN_H上的电压比CAN_L电压高总线上形成电压差2V,此时CAN_H信号线上电压为3.5V,CAN_L上电压为1.5V。只有总线上全部发送节点均为隐性电平时,总线才会传递隐性位。当两个节点同时分别向总线发送隐形电平和显性电平时,总线将为显性电平,即显性电平可以覆盖隐形电平。

2. CAN总线的通信机制

2.1 帧类型

根据用途的不同,CAN 消息帧分为四种不同类型:数据帧,主要用于数据传输;远程帧,主要用于向总线上的其他节点请求数据;错误帧,主要用于标识总线上的错误;超载帧,主要用于延迟下一个帧的发送。
下面主要围绕数据帧来展开论述。数据帧由 7 个场组成,主要包括帧起始(Start of Frame)、仲裁场(Arbitration Field)、控制场(Control Field)、数据场(Data Field)、CRC(循环冗余码)场(CRC Field)、应答场(ACK Field)、帧结尾(End of Frame)。

帧起始:一个显性位组成,它标识了数据帧或远程帧的开始,在总线空闲时开始发送。
仲裁场:根据帧格式的不同,分为两种:标准帧格式的仲裁场包含 11 位标识符和 RTR 位(远程帧请求位),扩展帧格式的仲裁场包含 29 位标识符、RTR 位、SRR 位(替代传输请求位)及 IDE 位(标识符扩展位)。具体展开如下:
RTR位用于区分数据帧和远程帧:数据帧,RTR=0;远程帧,RTR=1;所以数据帧优先级高于远程帧。
SRR位表明在该位代替了标准帧中的RTR,该位无实际意义,SRR永远置1
IDE位用于区分标准帧和扩展帧:标准帧,IDE=0(11位ID;扩展帧,IDE=1(29位ID) 所以标准帧优先级高于扩展帧。
控制场:由6个数据位组成,包含两个保留位及数据长度码(DLC)。保留位用于以后扩展,发送显示电平,DLC 由4位组成,标识了数据场的数据长度。
数据场:其中是数据帧要被发送的消息,其长度不超过8个字节。
CRC场:包含两个部分,由15个数据位组成的CRC序列和 1 个数据组成的CRC 界定符。

应答场:包含两个部分,应答间隙(1 位)和应答界定符(1 位),发送节点发送的应答间隙是隐性电平,当接收节点成功接收到报文后,将应答间隙改为显性电平发送, 应答界定符是隐性位,位于应答间隙后面。

帧结束:由7个隐性位组成,用来标识一个数据帧或远程帧的结束。
间歇场(Intermission—ITM),间歇场禁止任何节点在间歇期间传送数据帧或远程帧,间歇场只有一个任务就是标识过载情况的出现,这是间歇场的作用。间歇场的长度是3个“隐性”位。

2.2 通信机制

首先要明确总线空闲状态:当总线上的上出现连续的11位隐性电平,那么总线就处于空闲状态。也就是说对于任意一个节点而言,只要它监听到总线上连续出现了11位隐性电平,那么该节点就会认为总线当前处于空闲状态,它就会立即向总线上发送自己的报文。
总线上的信息发送都是有先后顺序的,需要判断优先级的情况分为以下几种:
(1)当总线上没消息传递时,优先权归第一个开始发送消息的单元。
(2)若出现多个单元同时开始发送消息的情况时,优先权的归属需要根据起始于第一位仲裁的结果判断,优先权归能够持续输出“显性”最多的节点。数据帧和远程帧ID相同时,优先权归属于仲裁段的 RTR 为显性的数据帧。
(3)标准格式 ID 与具有相同 ID 的远程帧或者扩展格式的数据帧在总线上竞争时,优先权归属于标准格式的 RTR 位为显性位的帧
以下图为例,假设节点A、B、C要发送报文,则首先要检测总线状态,此时检测到总线处于空闲,三个节点同时发送报文。由前述可知,当两个节点同时分别向总线发送隐形电平(逻辑“1”)和显性电平(逻辑“0”)时,总线将为显性电平,即显性电平可以覆盖隐形电平。每个节点在在发送报文过程中都会进行“回读”,判断送出的位与回读的位是否一致,若不一致则节点退出仲裁,进入“只听”状态。所以在仲裁场中,本例中节点A在标识符为5时候回读的数据与发出数据位不一致,则退出仲裁进入“只听”状态;后续在RTR位中,节点B仲裁失败,进入“只听”状态;最终节点C的报文数据成功发送。由前述可知,其实节点C是数据帧,RTR=0,节点B是远程帧,RTR=1,数据帧优先级高于远程帧。
这是一种非破坏的仲裁机制,既不会造成已发送数据的延迟,也不会破坏已经发送的数据。

如上例中,节点C仲裁成功,在CAN总线上将报文成功发送,但是对于仲裁失败的其他节点A和B呢?当然这次没仲裁失败没有能发送成功,但他们依然监听着总线的状态,一旦在总线空闲时则进行报文重发。重新进行发送和新一轮的仲裁,下图给出了上例的各节点的报文发送情况。

总线协议规定了“位填充”规则。当各节点在发送报文中有连续5个相同极性位后必须插入一个极性相反的位使总线上接收节点有足够多的边沿进行同步。接收节点在接收到报文后,删除插入位后再进行报文处理。

3. CAN总线错误处理机制

3.1 错误检测的类型

CAN 总线协议共有五种互不干涉的错误类型,分别是:位错误、填充错误、CRC错误、形式错误、应答错误。下图是错误检测的示图:

对于该部分的知识理解,可结合联系前面帧类型的知识,下面给出五种错误产生的条件如下:
(1)位错误 :检测到位错误的出现要在发送的位值和所监视到的位值不同时,由于总线上每个单元对总线进行监视,所以一旦出现不同时,就会检测到一个位错误。有两种情况下即使节点发现了总线上的“显性”位出现了也不会判断出现位错误,这两种情况就是在ACK间隙或仲裁场的填充位流期间发送“隐性”位的情况,也就是说此时即使发现总线上一“显性”位,也不作为位错误处理。
(2)填充错误 :CAN 总线协议中的填充错误伴随着以位填充的方法对信息编码时,填充错误的出现一定伴随着连续的6个相同的位电平。
(3)CRC错误 :CAN总线协议的循环冗余检查可以帮助系统提高准确性,CRC错误出现在发送器的CRC计算结果与接收到的CRC结果顺序不同时,这两端的CRC的计算方法是一致的(接收器和发送器之间)。
(4)形式错误 :形式错误的出现是由于总线上检测到一个固定形式的位场含有不少于一个的不合法位而引起的。
(5)应答错误 :应答错误出现在应答间隙(ACK SLOT)所检测到的位是“隐性”位时。

3.2 错误状态

CAN 总线上的节点的 3 种状态:主动错误状态、被动错误状、总线关闭状态。根据不同的状态可以了解总线的工作情况。
(1)主动错误状态 :主动错误状态也叫错误激活状态,是正常参加总线通信的状态。该状态下的单元只是具有输出主动错误的标志的能力,不影响它的参加通信的状态。
(2)被动错误状态:被动错误状态虽然是可以参加总线通信的状态,但是为了不影响其他单元接收发送报文,在发送错误通知给总线时就不能做到非常积极。它的这种兼容性会出现这样的情况:单元检测出错误时,还需要满足其它处于主动错误状态的单元也发现错误才能定义总线上产生了错误。当处于被动错误状态的单元需要再一次发送数据时加上“延迟”作用,这几个隐性位才能保证处于被动错误状态单元可以重新发送总线报文。
(3)总线关闭状态:总线关闭状态禁止任何信息的接收和发送,处于该状态下的单元不能参与总线通信。三种状态下的发送错误计数值(TEC)和接收错误计数值(REC)的不同,根据 TEC和 REC 来确定总线单元究竟处于三种状态中的哪一个。
下图表明了三种总线状态之间的关系。

4. 位定时与同步

在CAN的数据流中不包含时钟,CAN总线规范中定义的同步保证报文可以不管节点间积累的相位误差正确地译码。CAN规范定义了两种类型的同步:硬同步和重新同步。由协议控制器完成通过硬同步或重新同步来适配位定时参数。一个系统的波特率是一定的,同步涉及到了位时间(位时间是标称位速率的倒数),下图所示位时间可划分几个时间片段。同步段中有一个跳沿,传播段补偿物理延时,相位缓冲段1,2补偿相位误差。采样点出现在相位缓冲段1和2之间,在重同步期间被移动整数时间份额,时间份额是预期比例因子和最小时间份额的乘积。移动的时间宽度就是重新同步跳转宽度(RJW),长度为1到4。

4.1 同步类型

1.硬同步(Hard Syhchronization):CAN总线协议规定硬同步的结果就是使内部的位时间从同步段重新开始。一般硬同步都位于帧的起始,也就是说总线上有个报文的帧起始决定了各个节点的内部位时间何时开始。
2.重新同步(Resyhchronization):节点参照沿相位误差的情况来调整其内部位时间,目的是把节点内部位时间与来自总线的报文位流的位时间调整到接近或相等。总线上的各个节点振荡器频率是不同的,这种情况需要重新同步做以调节。总线进行重新同步后,相位缓冲段 1和缓冲段2的长度改变,从而使节点能够正确地接收报文。

4.2 同步原则

影响 CAN 总线同步设置的因素包括:总线传输最大距离和受最大距离影响的振荡器时钟频率、波特率等。所以考虑到系统性能最优化的需求,在调整同步的时候首先要计划好采样点的位置和采样次数,振荡器时钟频率、总线传输距离对同步的影响,因此,系统要求设计者合理设置同步参数。无论是硬件同步还是重新同步都遵从如下规则:
(1)一个位时间里只允许一个同步。仅当采集点之前探测到的值不等于紧跟沿之后的总线值时,开始同步该边沿。
(2)总线空闲期间,只要出现隐性向显性跳变的沿,都会引起硬同步。
(3)符合规则(1)的所有从隐性跳变到显性的沿都可以用做重新同步。有一例外情况,即当发送一显性位的节点不执行重新同步而导致一隐性转化为显性沿,此沿具有正的相位误差,不能用做重新同步。

5. 参考学习的书籍

《汽车CAN总线系统 原理、设计与应用》罗峰等 著
《汽车电子技术—硬件、软件、系统集成和项目管理》Kai Borgeest 著 武震宇 译

=文档信息=
本学习笔记由博主整理编辑,仅供非商用学习交流使用
由于水平有限,错误和纰漏之处在所难免,欢迎大家交流指正
如本文涉及侵权,请随时留言博主,必妥善处置
版权声明:非商用自由转载-保持署名-注明出处
署名(BY) :zhudj
文章出处:https://zhudj.blog.csdn.net/

汽车电子技术——CAN总线系统相关推荐

  1. 汽车CAN总线系统原理、概述、设计与应用之论述章 ---- 个人自学笔记

    目录 一.现代电子汽车技术 1.2现代电子汽车技术的发展阶段 1.2.汽车电子系统的基本构成 1.3汽车电子系统网络化 二.计算机网络 2.1.概述 2.2.计算机网络体系结构 ISO/OSI模型 2 ...

  2. 汽车数字化技术CAN总线数据应用是落脚点

    在现代汽车技术发展中,已经有95%以上的汽车采用了CAN总线协议,部分娱乐系统采用了以太网,结合4G/5G的商业化应用,已经将原有封闭式的内部数据闭环的汽车连接到互联网,我们的用户不但可以远程解锁他们 ...

  3. CAN总线系统(一)---基础介绍

    EVERYONE: 1.概念 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准( ...

  4. 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统

    本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...

  5. Linux内核总线系统 —— 通用总线和平台设备

    在 Linux内核输入子系统框架_Bin Watson的博客-CSDN博客 这篇文章中,我们详细分析了输入子系统.了解到了 dev 和 handler 分层的思想.而在 jz2440_输入子系统驱动程 ...

  6. java消息总线ibus_IBUS智能照明总线系统的应用

    好文网为大家准备了关于IBUS智能照明总线系统的应用的文章,好文网里面收集了五十多篇关于好IBUS智能照明总线系统的应用好文,希望可以帮助大家.更多关于IBUS智能照明总线系统的应用内容请关注好文网. ...

  7. 基于IAP和USB技术的嵌入式系统应用程序升级

    对于内含IAP功能的嵌入式微控制器提出基于IAP和USB技术的系统应用程序升级的新方法.U盘被用作程序代码的存储设备,将微控制器的存储器Flash和SRAM进行有效的区间分配,经外部扩展接口USB,微 ...

  8. 煤矿安全检测技术与监控系统

    煤矿安全检测技术与监控系统 第一章 瓦斯爆炸的条件 一定浓度的瓦斯 火源 充足的氧气 井下生产事故类型 瓦斯爆炸 煤尘爆炸 火灾事故 突水或透水事故 片帮冒顶事故 中毒窒息事故 机电事故 井下安全生产 ...

  9. 【计算机组成原理】知识梳理(一)总线系统

    总线的基本概念 在计算机系统中,各部件之间传输信息的通路. 按总线的位置分 内部(CPU)总线 系统总线 通信总线 按总线的功能分[系统总线] 地址总线(Address Bus) 数据总线(Data ...

  10. 计算机组成原理 — 总线系统

    目录 文章目录 目录 总线系统 总线的分类 总线的功能 总线判优控制 总线通信 出错处理 总线类型 系统总线 ISA.EISA 和 VESA 总线 PCI 和 PCI-E 总线 主板接口插槽示意图 总 ...

最新文章

  1. 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理
  2. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
  3. Eclipse添加Spket插件实现ExtJs智能提示
  4. php输入对话框,如何使用JavaScript实现输入对话框
  5. django的models常用字段、属性
  6. BP神经网络的MATLAB实现
  7. 平均无故障时间100万小时_【行业动态】三菱J系列重型燃气轮机达新里程碑:100万商业运行小时数...
  8. mysql gis空间数据库_GIS开发:使用空间数据库
  9. (libgdx学习)Net的使用
  10. 如何使用VS2012进行简单程序的DEBUG(入门级)
  11. MyBatis使用总结+整合Spring
  12. 计算机网络——数据链路层
  13. 集成电路总设计(Ⅴ)
  14. 荣耀6plus+android5.1,荣耀6Plus Emui3.1-Android5.1.1 Root教程
  15. Endnote导出目标期刊的参考文献的格式
  16. 大数据scala面试题汇总
  17. vue源码学习(第一张) this访问data数据 拆散之后并不难
  18. JSR303校验的简单使用以及自定义校验规则的代码编写
  19. PS仿制图章工具、油桶工具、渐变
  20. 离职原因该怎么说才比较好 ?

热门文章

  1. 机器学习之---马尔可夫随机场的应用
  2. matlab中散点图的线性拟合_matlab画散点图并拟合函数曲线MATLAB画散点图和二次函数...
  3. cocoscreator 资源加密
  4. 贝叶斯公式的通俗理解
  5. 一张图概括淘宝直播背后的前端技术 | 赠送多媒体前端手册
  6. 人工智能自然语言处理技术处理专业领域的运用
  7. 等宽字体 Monospaced Font
  8. 什么是黑帽seo?黑帽seo技术盘点。
  9. 软考中级软件设计师-计算机系统知识点速查
  10. 网络基础之TCP/IP五层模型