概要

上世纪八十年代以来,汽车ECU越来越多,如ABS,电控门窗,电子燃油喷射装置。如果仍然采用常规的点对点布线方式,即电线一段与开关相接,另一端与用电设备相通,将会导致车上电线数目的急剧增加,从而带来线束的冗余及维修成本的提高。这就对汽车的线束分布及信息通讯提出了更高的要求。总线技术可以实现信息的实时共享,解决了传统布线方式中线束多,布线难,成本高等问题,CAN(Controller Area Network)总线技术应运而生。

传统汽车EE总线架构 汽车总线技术应用_数据

点对点通信

传统汽车EE总线架构 汽车总线技术应用_单片机_02

总线通信

CAN总线是由德国研发和生产汽车电子产品著称的BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。CAN总线是一种多主控(Multi-Master)的总线系统。传统总线系统如USB或以太网等是在总线控制器的协调下,实现从A节点到B节点大量数据的传输。CAN网络的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_03

CAN总线的很多优点,使得它得到了广泛的应用,如传输速度最高到1Mbps, 通信距离最远到10km,无损位仲裁机制,多主结构。

CAN总线标准

CAN总线标准之规定了物理层和数据链路层,至于应用层需要用户自定义。不同的CAN标准仅物理层不同。物理层和数据链路层:ISO11898;应用层:不同的应用领域使用不同的应用层标准。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_04

传统汽车EE总线架构 汽车总线技术应用_数据_05

CAN物理层

CAN拓扑网络

连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用的是双绞线,线上传输为对称的差分电平信号。下图为CAN总线网络示意图,节点主要包括Host、控制器和收发器。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压损坏收发器,控制器和Host设备也可以得到保护。

在发送数据时,CAN控制器把要发送的二进制编码通过CAN_Tx线发送到CAN收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low输出到CAN总线网络。接收数据过程,相反。采用差分信号,可以取得更好的电磁兼容效果。因此,CAN总线物理传输媒介只需要两根线。

传统汽车EE总线架构 汽车总线技术应用_物联网_06

高速CAN总线最高信号传输速率为1Mbps,支持最长距离40m。ISO11898-2要求在高速CAN总线两段安装端接电阻RL(端接电阻一般为120Ω,因为电缆的特性阻抗为120 Ω,为了模拟无限远的传输线。)以消除反射。低速CAN最高速度只有125Kbps,所以ISO11898-3没有端接要求。

传统汽车EE总线架构 汽车总线技术应用_单片机_07

因为传输距离越大,信号时延也越大,为了保证消息的正确采样,总线上的信号速率相应也要下降。下图是推荐的信号速率与距离的关系。

传统汽车EE总线架构 汽车总线技术应用_单片机_08

CAN收发器

CAN总线分高速CAN和低速CAN,收发器也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫Fault
Tolerance CAN,指的是即使总线上一根线失效,总线依然可以通信。如同串口中的MAX3232用作电平转换,CAN收发器的作用则是把逻辑信号转换为差分信号。

传统汽车EE总线架构 汽车总线技术应用_单片机_09

差分信号

CAN总线采用差分信号传输,通常情况下只需要两根信号线就可以进行正常的通信。在差分信号中,逻辑0和逻辑1是用两根差分信号线的电压差来表示。当处于逻辑1,CAN_High和CAN_Low的电压差小于0.5V时,称为隐性电平(Recessive);当处于逻辑0,CAN_High和CAN_Low的电压差大于0.9V,称为显性电平(Dominant)。

高速CAN

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_10

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_11

低速容错CAN (Fault Tolerance CAN)

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_12

CAN总线遵从“线与”机制:“显性”位可以覆 盖“隐性”位;只有所有节点都发 送“隐性”位, 总线才处于“隐性” 状态。这种“线与”机制使CAN总线呈现显性优先的特性。

传统汽车EE总线架构 汽车总线技术应用_数据_13

CAN总线连接器

传统汽车EE总线架构 汽车总线技术应用_单片机_14

下一部分将介绍CAN总线数据链路层,和CAN总线同步机制。

上一篇文章讲了CAN总线的历史、标准、物理层,现在接着介绍CAN总线数据链路层,和CAN总线同步机制。

CAN数据链路层

在SPI通信中,片选、时钟信号、数据输入及数据输出这四个信号都有单独的信号线。而CAN使用的是两条差分信号线,只能表达一个信号。简洁的物理层决定了CAN必然要配上一套更为复杂的协议。如何用一个信号通道实现同样甚至更强大的功能,答案就是对数据或操作命令进行打包。

通信机制

多主机(Multi-Master)

安全敏感的应用(如汽车动力)对通信系统的可靠性要求很高。将总线能否正常工作归结到单一节点是非常危险的,比较合理的方案是对总线接入的去中心化,即每个节点都有接入总线的能力。这也是CAN总线采用多主控(Multi-Master)线性拓扑结构的原因。

在CAN总线上,每个节点都有往总线上发送消息的能力,而消息的发送不必遵从任何预先设定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙碌的状态,这使得节点接入总线速度非常快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,基本对于ms级别的实时应用没有任何问题。

寻址机制

不同于其它类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)来区别消息。这种机制虽然会增加消息的复杂度(增加标识符),但是节点在此情况下可以无需了解其他节点的状况,而相互间独立工作。在总线上增加节点时仅需关注消息类型,而非系统上其他节点的状况。这种以消息标识符寻址的方式,让总线上增加节点变得更加灵活。

总线访问CSMA/CD+AMP

CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和非破坏性的仲裁机制(CSMA/CD+AMP)。CSMA(Carrie
Sense Multiple Access)指的是所有节点必须都等到总线处于空闲状态时才能往总线上发送消息;CD+AMP(Collision
Detection + Arbitration on Message Priority)指的是如果多个节点往总线上发送消息时,具备最高优先级的消息获得总线。

  • 多路载波侦听:网络上所有节点以多点接入的方式连接在同一根总线上,且发送数据是广播式的。网络上各个节点在发送数据前都要检测总线上是否有数据传输:若网络上有数据,暂时不发送数据,等待网络空闲时再发;若网络上无数据,立即发送已经准备好的数据。
  • 冲突检测:节点在发送数据时,要不停的检测发送的数据,确定是否与其他节点数据发送冲突,如果有冲突,则保证优先级高的报文先发送。
  • 非破坏性仲裁机制:通过ID仲裁,ID数值越小,报文优先级越高。

传统汽车EE总线架构 汽车总线技术应用_单片机_15

发送低优先级报文的节点退出仲裁后,在下次总线空闲时自动重发报文。

传统汽车EE总线架构 汽车总线技术应用_单片机_16

高优先级的报文不能中断低优先级报文的发送。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_17

报文接收过滤

CAN控制器大多具有根据ID过滤报文的功能,即只接收某些ID的报文。节点对接收到的报文进行过滤:比较消息ID与选择器(Accepter)中和接受过滤相关位是否相同。如果相同,接收;如果不相同,则过滤。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_18

CAN的报文种类及结构

报文的种类

在原始数据段的前面加上传输起始标签、片选(识别)标签、控制标签,在数据的尾段加上CRC校验标签、应答标签和传输结束标签。把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了。各种各样的标签,起到了协同传输的作用。当整个数据包被传输到其他设备时,只要这些设备按格式去解读,就能还原出原始数据。类似这样的数据包就被称为CAN的数据帧。

为了更有效的控制通信,CAN一共规定了5中类型的帧,帧也称为报文。

传统汽车EE总线架构 汽车总线技术应用_数据_19

数据帧

数据帧在CAN通信中最主要,也最复杂。数据帧以一个显性位(逻辑0)开始,以7个连续的隐性位(逻辑1)结束。CAN总线的数据帧有标准格式(Standard
Format)和扩展格式(Extended
Format)的区分。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_20

数据帧可以分为七段:

  • 帧起始(SOF)

标识一个数据帧的开始,固定一个显性位。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_21

用于同步, 总线空闲期间的任何隐性到显性的跳变都将引起节点进行 硬同步。只有总线在空闲期间节点才能够发送SOF。

  • 仲裁段(Arbitration Field)

仲裁段的内容主要为本数据帧的ID信息。数据帧分为标准格式和扩展格式两种,区别就在于ID信息的长度:标准格式的ID为11位;扩展格式为29位。在CAN协议中,ID决定着数据帧发送的优先级,也决定着其他设备是否会接收这个数据帧。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_22

仲裁段除了报文ID外,还有RTR, IDE, SRR位。

  • 控制段

在控制段,r1(reserved1)和r0(reserved0)为保留位,默认设置为显性位。最主要的是DLC(Data Length Code)段,它是用二进制编码表示本报文中的数据段包含多少个字节。DLC段由4位组成,DLC3−DLC0,表示的数字为0-8.

传统汽车EE总线架构 汽车总线技术应用_物联网_23

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_24

  • 数据段

数据帧的核心内容,有0-8个字节长度,由DLC确定。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_25

  • CRC段

为了保证报文的正确传输,CAN的报文包含了一段15位的CRC校验码,一旦接收端计算出的CRC码跟接收到的CRC码不同,就会向发送端反馈出错信息以及重新发送。CRC部分的计算和出错处理一般由CAN控制器硬件完成,或由软件控制最大重发数。

在CRC校验码之后,有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。

传统汽车EE总线架构 汽车总线技术应用_单片机_26

传统汽车EE总线架构 汽车总线技术应用_单片机_27

  • ACK段

包含确认位(ACK slot)和界定符(Delimiter,
DEL)。ACK在发送节点发送时,为隐性位。当接收节点正确接收到报文时,对其用显性位覆盖。DEL界定符同样为隐性位,用于隔开。

传统汽车EE总线架构 汽车总线技术应用_物联网_28

传统汽车EE总线架构 汽车总线技术应用_单片机_29

  • 帧结束段(End-of-Frame, EOF)

帧结束段由发送端发送7个隐性位表示结束。

传统汽车EE总线架构 汽车总线技术应用_物联网_30

同步

CAN总线使用位同步的方式来确保通信时序,以及对总线的电平进行正确采样。

位时序

在讲位时序之前,先介绍几个基本概念。

Time Quantum 时间份额tQ :CAN控制器工作的最小时间单位,通常对系统时钟分频得到。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_31

波特率:单位时间内(1s)传输的数据位,公式:1/位时间。举个栗子,系统时钟频率36MHz,预分频因子为4,则CAN时钟频率9MHz,则Tq=1/9M。假设一个CAN位包含10个Tq,则一个位周期T=10Tq,从而波特率为1/T=0.9MHz.

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_32

为了实现位同步,CAN协议把每一位的时序分解成下图所示的四段。这四段的长度加起来即为一个CAN数据位的长度。一个完整的位由8-25个Tq组成。

传统汽车EE总线架构 汽车总线技术应用_物联网_33

  • 同步端(SS,Synchronization Segment)

一个位的输出从同步段开始。若总线的跳变沿被包含在SS段的范围之内,则表示节点与总线的时序同步。节点与总线同步时,采样点采集到的总线电平即可被确定为该电平的电位。SS段的大小为1Tq.

  • ·传播段(PTS,Propagation Time Segment)

用于补偿信号在网络和节点传播的物理延时时间,是总线上输入比较器延时和输出驱动器延时总和的两倍。通常1-8Tq

  • ·相位缓冲段1(PBS1, Phase Buffer Segment 1)

主要用于补偿边沿阶段的误差,其时间长度在重新同步时可以加长。初始大小1-8Tq.

  • 相位缓冲段2(PBS2,Phase Buffer Segment 2)

也是用于补偿边沿阶段的误差,其时间长度在重新同步时可以缩短。初始大小2-8Tq.

同步

CAN同步分为硬同步和重新同步。

同步规则:

  • 一个位时间内只允许一种同步方式
  • 任何一个“隐性”到“显性”的跳变都可用于同步
  • 硬同步发生在SOF阶段,所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内。
  • ·重新同步发生在一个帧的其他阶段,即当跳变沿落在同步段之外。

硬同步

当总线上出现帧起始信号(SOF,即隐性到显性的边沿)时,其他节点的控制器根据总线上的这个下降沿对自己的位时序进行调整,把该下降沿包含到SS段内。这样根据起始帧来进行的同步称为硬同步。

可以看到在总线出现帧起始信号时,该节点原来的位时序与总线时序不同步,因而这个状态的采样点采集到的数据是不正确的。所以节点以硬同步的方式调整,把自己的位时序中的SS段平移至总线出现下降沿的部分,获得同步,这时采样点采集到的数据是正确数据。

传统汽车EE总线架构 汽车总线技术应用_物联网_34

同步前

传统汽车EE总线架构 汽车总线技术应用_数据_35

同步后

重新同步

因为硬同步时只是在有帧起始信号时起作用,无法确保后续一连串的位时序都是同步的,所以CAN引入了重新同步的方式。在检测到总线上的时序与节点使用的时序有相位差时(即总线上的跳变沿不在节点时序的SS段范围),通过延长PBS1段或缩短PBS2段来获得同步,这样的方式称为重新同步。

分两种情况:第一种, 节点从总线的边沿跳变中,检测到它的时序比总线的时序相对滞后2个Tq,这是控制器在下一个时序中的PBS1段增加2Tq的时间长度,使得节点与总线时序重新同步。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_36

第二种,节点从总线的边沿跳变中,检测到它的时序相对超前2Tq,这时控制器在前一个位时序中的PBS2段减少2Tq的时间长度,获得同步。

传统汽车EE总线架构 汽车总线技术应用_物联网_37

在重新同步的时候,PBS1和PBS2段的允许加长或缩短的时间长度定义为,重新同步补偿宽度(SJW,reSynchronization Jump Width)。这里设置的PBS1和PBS2能够增减的最大时间长度SJW=2Tq,若SJW设置的太小则重新同步的调整速度慢,若太大,则影响传输速率。


概述

CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化、船舶、医疗等其它领域。相比于其它网络类型,如局域网(LAN, Local Area Network)、广域网WAN, Wide Area Network)和个人网(*PAN*, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名。

CAN总线是一种多主控(*Multi-Master*)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。

CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。CAN国际标准只涉及到 *OSI*(开放式通信系统参考模型 )的物理层和数据链路层。上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。

发展历史

  • ***1983***年,BOSCH开始着手开发CAN总线;
  • ***1986***年,在SAE会议上,CAN总线正式发布;
  • ***1987***年,Intel和Philips推出第一款CAN控制器芯片;
  • ***1991***年,奔驰 500E 是世界上第一款基于CAN总线系统的量产车型;
  • ***1991***年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);
  • 1993
    年,ISO发布CAN总线标准(
    ISO 11898
    ),随后该标准主要有三部分:
  • ISO 11898-1:数据链路层协议
  • ISO 11898-2:高速CAN总线物理层协议
  • ISO 11898-3:低速CAN总线物理层协议

注意:ISO 11898-2和ISO 11898-3物理层协议不属于 BOSCH CAN 2.0标准。

  • ***2012***年,BOSCH发布 *CAN FD 1.0* 标准(CAN with Flexible Data-Rate),CAN FD定义了在仲裁后确使用不同的数据帧结构,从而达到最高 12Mbps 数据传输速率。CAN FD与CAN 2.0协议兼容,可以与传统的CAN 2.0设备共存于同样的网络

标准化

CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是 ISO 11898 系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。

底层标准

CAN底层标准涵盖OSI模型中的物理层和数据链路层,底层标准包括:

  • *ISO 11898-1: 2015* 定义CAN总线的数据链路层(DLL)和电气信号标准,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式,详细说明逻辑链接控制(LLC)和介质访问控制(MAC)子层部分;
  • *ISO 11898-2: 2003* 定义高速CAN总线(HS-CAN)物理层标准,最高数据传输速率 1Mbps ,应用为两线平衡式信号(CAN_H, CAN_L),HS CAN是汽车动力和工业控制网络中应用最为广泛的物理层协议;
  • ISO 11898-3: 2006 定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准,数据传输速率在 *40Kbps ~ 125Kbps* 。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信,LS CAN主要应用于汽车车身电控单元之间通信;
  • ISO 11898-4: 2004 定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。注意,ISO 11898-1 是基于事件驱动(Event-Driven)的通信,它对于高负荷总线上,尤其是低优先级的消息会造成较大的延迟,而基于时间触发的ISO 11898-4 标准的初衷也正是为解决该问题,确保CAN总线上可靠的消息传输;
  • ISO 11898-5: 2007 对ISO 11898-2高速CAN总线的补充,并参照ISO 8802-2,定义在总线闲置时的节电特性;
  • ISO 11898-6: 2013 对ISO 11898-2 和 ISO 11898-5 的补充,并参照ISO 8802-2,定义使用可配置的帧实现选择性唤醒总线的机制;
  • ISO 16845-1: 2004 定义测试符合ISO 11898-1标准CAN应用的方法和条件;
  • *ISO 16845-2: 2014* 定义包括特定功能下可以选择性唤醒总线的CAN收发器的测试实例和测试要求,也称为CAN总线的一致性测试

CAN总线底层标准与***ISO/OSI***模型的对应关系,如图1所示。对于媒体专用接口(Medium Dependent Interface, MDI),没有统一的国际标准。CiA DS-102 (CiA: CAN in Automation )仅定义使用专用连接器(*DB9*),并对PIN定义作出一定规范。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_38

图1. CAN总线标准

上层标准

虽然底层标准相同,不同应用领域和组织会制定不同的上层标准。有的厂商开发并推广其应用层标准,在某些领域得以广泛应用。对于汽车行业来说,几乎每家厂商都有自己的CAN上层标准。比较流行的有工业自动化领域 CiA 的 *CANopen* ,*Rockwell*DeviceNet;嵌入式控制领域 Kvaser 的 *CAN Kingdom*;智能设备控制 *Honeywell* 的 *SDS*;汽车诊断 ISO 14229 定义的 *UDS*,和中重型汽车CAN总线标准 SAE J1939 。如表1示。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_39

表1. CAN上层标准举例

总线特点

  • 符合OSI开放式通信系统参考模型;
  • 两线式总线结构,电气信号为差分式;
  • 多主控制。在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权;多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权;
  • 消息报文不包含源地址或者目标地址,仅通过标识符表明消息功能和优先级;
  • 基于固定消息格式的广播式总线系统,短帧结构;
  • 事件触发型。只有当有消息要发送时,节点才向总线上广播消息;
  • 可以通过发送远程帧请求其它节点发送数据;
  • 消息数据长度 0~8 Byte;
  • 错误检测功能。所有节点均可检测错误,检测处错误的单元会立即通知其它所有单元;
  • 发送消息出错后,节点会自动重发;
  • 故障限制。节点控制器可以判断错误是暂时的数据错误还是持续性错误,当总线上发生持续数据错误时,控制器可将节点从总线上隔离;
  • 通信介质可采用双绞线、同轴电缆和光导纤维,一般使用最便宜的双绞线;
  • 理论上,CAN总线用单根信号线就可以通信,但还是配备了第二根导线,第二根导线与第一根导线信号为差分关系,可以有效抑制电磁干扰;
  • 在40米线缆条件下,最高数据传输速率 1Mbps;
  • 总线上可同时连接多个节点,可连接节点总数理论上是没有限制的,但实际可连接节点数受总线上时间延迟及电气负载的限制;
  • 未定义标准连接器,但经常用9脚 DSUB

应用

在当今汽车应用领域,车内电控单元(Electrical Control Unit, ECU)可能多达 70 个,除了引擎控制单元(Engine Control Unit, ECU )外,还存在传动控制、安全气囊、ABS、巡航控制、EPS、音响系统、门窗控制和电池管理等模块,虽然某些模块是单一的子系统,但是模块之间的互连依然非常重要。例如,有的子系统需要控制执行器和接收传感器反馈,CAN总线可以满足这些子系统数据传输的需求。汽车内子模块的总线互连架构使得软件可以更轻易地实现安全、经济和便利等新特性,相比传统汽车网络架构中模块单元直接连接更加经济。 CAN总线实现汽车内互连系统由传统的点对点互连向总线式系统的进化,大大降低汽车内电子系统布线的复杂度,如图2所示。

背景:随着电气化和智能化,汽车上的电子单元越来越多,电控单元组网需求也日渐迫切!



 



福特Fusion汽车 @2013



 



-70个ECU单元



-75个传感器



-150个激励器



 



自动驾驶汽车 @2030 -Prediction



 



-120个ECU单元



-100个传感器



-200个激励器

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_40

图2. 传统网络结构 VS 总线式结构

在 *VW* 的定义(SSP 269)中,根据应用范围将车内CAN总线分为三类:

  • Convenience CAN /舒适CAN网络,主要控制车门窗、空调等设备,最高传输速度***100 kbps***
  • Powertrain CAN* /动力CAN网络,主要控制动力相关设备,如发动机、制动、ABS等,最高传输速度***500 kbps**
  • Infotainment CAN* /信息娱乐CAN网络,主要控制收音机、电话和导航等设备,最高传输速度***100 kbps**

根据数据传输速度不同CAN总线分两类:高速CAN(ISO 11898-2)和低速CAN(ISO 11898-3)。

高速CAN(按BOSCH说法,也叫***CAN-C***),数据速率在 125kbps ~ 1Mbps*,应用在实时性要求高的节点,如引擎管理单元、电子传动控制、ESP和仪表盘等;低速CAN(CAN-B*),数据速率在 5kbps ~ 125kbps**,应用在实时性要求低的节点,主要在舒适和娱乐领域,如空调控制、座椅调节、灯光、视镜调整等,这些节点对实时性要求不高,而且分布较为分散,线缆较易收到损坏,低速CAN的传输速度即可满足要求,而且单根线缆也可以工作,很好地适应了以上需求。不同速度类型的CAN总线设备不能直接连在同一路总线上,它们之间需要通过网关隔离。

CAN总线在汽车诊断领域的应用也非常广泛,ECU直接挂载在总线上,可以很快地获取诊断所需的信息。传统的汽车诊断接口(如KWP2000)应用逐渐减少。

图2a示意了汽车内总线系统及电子设备的逻辑分布,总线系统包括 CAN、LIN、FlexRay 和 MOST 。注意,车载以太网在图中未列出,但它的应用日渐广泛。以上不同类型和速度的总线,通过网关 Gateway 模块相互通信。(图片来源:链接

传统汽车EE总线架构 汽车总线技术应用_数据_41

图2a. 汽车内总线系统举例

局限性

  • 由于CAN总线仲裁的特点,即使往总线上周期性发送消息,也不能保证节点可以确定(周期) 地收到消息,CAN不适合对时间特别敏感的应用;
  • 最高传输速率只有 1Mbps* ,对于汽车自动驾驶应用的数据传输,或者视频音频传输带宽不足。为解决这方面的需求,CAN FD* 速度有所上升,另外还有 MOST*LVDS*以太网等;
  • 对于简单的应用,高成本的CAN总线虽然可靠性很高,但有点浪费。*LIN* 总线相比CAN具有成本优势,更适合应用于车窗座椅空调等设备

电路基础

硬件拓扑

连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用为非屏蔽双绞线(UTP),线上传输为对称的电平信号(差分)。图3示为CAN总线网络示意图,节点主要包括Host、控制器收发器三部分。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压,损坏收发器,控制器和Host设备也可以得到保护。

传统汽车EE总线架构 汽车总线技术应用_单片机_42

图3. CAN总线节点示意图

高速CAN总线最高信号传输速率为1Mbps,支持最长距离 40m*ISO 11898-2 规定要求在高速CAN总线的两端安装端接电阻*(RL)以消除反射,而低速CAN最高速度只有 125Kbps,因此 ISO 11898-3 没有要求端接。ISO 11898 规定的CAN总线上最多 *32* 个节点。实际应用中要考虑到CAN总线收发器的性能,以及工作的CAN网络是高速CAN还是低速CAN。在传输距离方面,由于距离越大,信号时延也越大,为确保消息的正确采样,总线上的信号速率相应也得下降,表2列出推荐的信号速率与距离的关系。

传统汽车EE总线架构 汽车总线技术应用_物联网_43

表2. CAN总线长度与信号速率关系(推荐)

收发器

CAN收发器包括 *CANH* 和 *CANL* 两根信号,CANH和CANL信号采用差分电平,这样可以取得更好的电磁兼容效果。CAN总线物理传输媒介只需要两根线。

前面的标准部分有介绍,CAN总线分高速CAN和低速CAN,收发器因之也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫 Fault Tolerant CAN ,指的是即使总线上一根线失效,总线依然可以通信。图4示例高速CAN收发器的基本电路结构。当两个晶体管都关断时,CANH和CANL上电压相同,且都为 *0.5*VCC* ;而当两个晶体管都打开时,CANH 和 CANL 上即存在一定的压差,且压差与负载电阻值相关。ISO 11898-2 要求此时 CANH 和 CANL 压差在 *2V* 左右。

CAN收发器的特性包括非常低的电磁辐射和很强的抗击共模噪声的能力。另外,CAN收发器可以提供高达 *8KV* 的ESD保护,在电路设计中可以在收发器附近增加共模电感以进一步降低电磁辐射(图5)。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_44

图4. CAN总线收发器(MCP2551)

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_45

图5. 共模电感降低辐射

信号电平

高速CAN和低速CAN总线在物理层信号电平上定义有所不同。图6和图7表示高速和低速CAN总线上信号电平与总线逻辑的对应关系。

高速CAN,定义 CANH 和 CANL 电压相同(CANH = CANL = 2.5V)时为逻辑“*1*”,CANH和CANL 电压相差 *2V*(CANH = *3.5V*, CANL = *1.5V*) 时为逻辑“*0*”。高速CAN收发器在共模电压范围内(-12V ~ 12V),将CANH和CANL电压相差大于 0.9V 解释为显性状态(Dominant),而将CANH和CANL电压相差小于 *0.5V* 解释为为隐性状态(*Recessive*)。收发器内部有迟滞电路可以降低干扰。

低速CAN,定义CANH和CANL电压相差 *5V* (CANH = *0**V*, CANL = *5V*)时为逻辑“1”,相差 2.2V (CANH = *3.6V*, CANL = *1.4V*)时为逻辑“0”。

在CAN总线上,逻辑“0”和“1”之间显著的电压差是总线可靠通信的保证。参照上面的描述,CAN总线上两种电平状态分别为:

  • 显性(Dominant ): 0
  • 隐性(Recessive ): 1

CAN总线的信号电平具有线与特性,即显性电平(*0*)总是会掩盖隐性电平(1)。如果不同节点同时发送显性和隐性电平,总线上表现出显性电平(0),只有在总线上所有节点发送的都是隐性电平(1)时,总线才表现为隐性。线与特性是CAN总线仲裁的电路基础。详细仲裁过程见下文“仲裁机制”部分。

传统汽车EE总线架构 汽车总线技术应用_单片机_46

图6. 高速CAN信号电平( ISO 11898-2)

传统汽车EE总线架构 汽车总线技术应用_单片机_47

图7. 低速CAN信号电平( ISO 11898-3)

连接器

在前文有提到,业界只规定了*9 Pin D-Sub* 类型的CAN总线连接器,其信号定义如图8所示。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_48

图8. CAN 9 Pin D-Sub引脚定义

三种CAN标准物理层比较

除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即 *Single Wire CAN*。单线CAN可以减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如此又会让它自身的辐射能力增加,因此必须降低其信号传输速率以达到电磁兼容的要求。综上,单线CAN仅适合应用在低速的车身电子单元、舒适及娱乐控制领域。低速CAN总线由于信号速度不高,在一根信号线失灵的情况下,仍可工作于单线模式。

三种CAN总线物理层的对比如表3列出。总线连接拓扑图如图9,对于端接,高速CAN端接是在总线两端,而低速CAN和单线CAN的端接都是在各节点位置。

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_49

表3. 三种CAN物理层标准比较

传统汽车EE总线架构 汽车总线技术应用_物联网_50

图9. 三种CAN总线物理层的比较

通信原理

Multi-Master

安全敏感的应用,比如汽车动力,对通信系统的可靠性要求很高。将总线工作正常与否归结到单一节点是极其危险的,比较合理的方案是对总线接入的去中心化,亦即每个节点都有接入总线的能力。这也是CAN总线采用多主控(*Multi-Master*)线性拓扑结构的原因。在CAN总线上,每个节点都有往总线上发送消息的能力,而且消息的发送不必遵从任何预先设定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙的状态,这使得节点接入总线速度非常快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,基本上对于毫秒级的实时应用没有任何问题。

寻址机制

不同于其它类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(*Identifier*)来区别消息。CAN总线消息是广播式的,也就是说在同一时刻所有节点都检测到同样的电平信号。接受节点通过识别消息中的标识符,与该节点预设的过滤规则对比,如果满足规则就接收这条消息,发送应答,否则就忽略这条消息,关于这部分介绍见下文“条件接收”部分。这种机制虽然会增加消息帧的复杂度(增加标识符),但是节点在此情况下可以无须了解其它节点的状况,而相互间独立工作,在总线上增加节点时仅须关注消息类型,而非系统上其它节点的状况。这种以消息标识符寻址的方式,让在总线上增加节点变得更加灵活。

CSMA/CD+AMP

CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和仲裁机制(*CSMA/CD+AMP*),CSMA(Carrier Sense Multiple Access )指的所有节点必须都等到总线处于空闲状态时才能往总线上发送消息;*CD+AMP*(Collision Detection + Arbitration on Message Priority)指的是如果多个节点往总线上发送消息时,具备最高优先级(标识符最小)的消息获得总线占有权。

帧分类

CAN总线定义四种帧类型,分别为数据帧、远程帧、错误帧过载帧。数据帧就是总线上传输用户数据的帧,其最高有效载荷是 8 Byte,除了有效载荷外,数据帧还包括必要的帧头帧位部分以执行CAN标准通信,比如消息标识符(Identifier)、数据长度代码、校验信息等。远程帧是用来向总线上其它节点请求数据的帧,它的帧结构与数据帧相似,只不过没有有效载荷部分;错误帧是表示通信出错的帧。数据帧和远程帧有标准格式和扩展格式两种格式。标准格式有 *11* 位的标识符 , 扩展格式有 *29* 位标识符。

各种帧的用途分别为:

  • 数据帧:用于发送单元向接收单元传送数据的帧;
  • 远程帧:用于接收单元向具有相同标识符的发送单元请求数据的帧;
  • 错误帧:用于当检测出错误时向其它单元通知错误的帧;
  • 过载帧:用于接收单元通知其尚未做好接收准备的帧

数据帧

数据帧的帧结构如图10所示,图中示例标准数据帧(Standard)和扩展数据帧(Extended)两种格式。各字段定义及长度分别为:

  • ***SOF:***表示数据帧开始;(1 bit)
  • ***Identifier:***标准格式11 bit,扩展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit),该区段标识数据帧的优先级,数值越小,优先级越高;
  • ***RTR:***远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1 bit)
  • *IDE:* 标识符扩展位,0时表示为标准格式,1表示为扩展格式;(1 bit)
  • ***DLC:***数据长度代码,08表示数据长度为08 Byte;(4 bit)
  • ***Data Field:***数据域;(0~8 Byte)
  • ***CRC Sequence:***校验域,校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)
  • ***DEL:***校验域和应答域的隐性界定符;(1 bit)
  • ***ACK:***应答,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。发送节点将此位为1,接收节点正常接收数据后将此位置为0;(1 bit)
  • ***SRR:***替代远程请求位,在扩展格式中占位用,必须为1;(1 bit)
  • ***EOF:***连续7个隐性位(1)表示帧结束;(7 bit)
  • ***ITM:***帧间空间,Intermission (ITM),又称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间。

传统汽车EE总线架构 汽车总线技术应用_数据_51

图10. CAN标准格式和扩展格式的数据帧/远程帧格式

远程帧

一般地,数据是由发送单元主动向总线上发送的,但也存在接收单元主动向发送单元请求数据的情况。远程帧的作用就在于此,它是接收单元向发送单元请求发送数据的帧。远程帧与数据帧的帧结构类似,如上图X所示。远程帧与数据帧的帧结构区别有两点:

  • 数据帧的 *RTR* 值为“0”,远程帧的 *RTR* 值为“*1*
  • 远程帧没有数据块

远程帧的 *DLC* 块表示请求发送单元发送的数据长度(Byte)。当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 *RTR* 位是显性的,数据帧将在仲裁中赢得总线控制权。

错误帧

用于在接收和发送消息时检测出错误时,通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的帧结构如图11示。

  • 错误标志:
    6-12
    个显性/隐性重叠位
  • 主动错误标志(6个显性位): 处于主动错误状态的单元检测出错误时输出的错误标志
  • 被动错误标志(6个隐性位): 处于被动错误状态的单元检测出错误时输出的错误标志
  • 错误界定符:*8* 个隐性位

传统汽车EE总线架构 汽车总线技术应用_嵌入式硬件_52

图11. 错误帧的帧结构

过载帧

过载帧是用于接收单元通知发送单元它尚未完成接收准备的帧。在两种情况下,节点会发送过载帧:

  • 接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输;
  • 帧间空间(Intermission)的 3 bit 内检测到显性位

每个节点最多连续发送两条过载帧。过载帧由过载标志和过载界定符(8 个隐性位)构成。数据帧的帧结构如图12所示。

传统汽车EE总线架构 汽车总线技术应用_单片机_53

图12. 过载帧的帧结构

仲裁机制

如果多个节点同时往总线上发送消息,总线的使用权是通过消息帧标识符的逐位仲裁机制决定的,在仲裁过程中消息是不会丢失的。这里的不会丢失的意思是指仲裁完成后,获得总线控制权的消息内容没有被仲裁过程篡改,将继续在总线上发送没有传输完的消息。
在CAN总线上,标识符值越小,消息的优先级越高。标识符全零的消息,由于它将总线电平保持在显性的时间最长,因此优先级最高。CAN总线的仲裁机制如图13所示,几点说明:

  • ***Wire-AND Bus Logic:***只有节点发送的全是隐性,总线电平才表现为隐性;
  • ***Arbitration Logic:***所有发送节点在发送数据的同时,也检测总线上的电平状态。如果总线电平状态与它发送的电平状态一致,则继续发送(Next);如果发送为显性,总线电平状态为隐性,则传输出现故障(Fault);如果发送为隐性,总线电平状态为显性,则该节点退出对总线占用权的竞争(Stop);
  • 节点A和节点C同时向总线上发送数据,在仲裁阶段,逐位对比总线上电平与自身发送的电平,在标识符的第四位(ID7),节点C检测到总线上电平与其自身发送电平不一致,它自动退出对总线的竞争,节点A则继续发送数据

传统汽车EE总线架构 汽车总线技术应用_物联网_54

图13. CAN总线仲裁机制

如上介绍,CAN总线上的逐位仲裁机制与 I2C 总线的仲裁都应用到线与逻辑的电路基础,不同的是I2C的仲裁只是在主机间进行,而CAN总线没有主从机的概念。另外I2C的消息本身是不分优先级的;CAN消息则是带优先级,有的消息出身高贵(标识符值越小),在仲裁中总会取胜。

为消息划分优先级比较适合于实时控制系统,这样可以确保重要的信息优先发送,相对次要的消息延迟发送,系统设计师应该根据应用的特点为不同消息确定不同的优先级(标识符),在类似 DeviceNet 这些规范组织的定义中,对于同样类型的消息,比如温度传感器,即使它们可能来自不同的供应商,但消息标识符是一致的。

对于车身控制CAN网络(舒适+信息娱乐),其特点是消息标识符种类多,而且消息发送没有固定频率或规律,在此类应用的CAN控制器,例如 FreescaleMSCAN(Motorola Scalable Controller Area Network)的设计中,控制器内部包括 FIFO 寄存器,它将具有相同标识符的消息按顺序保存,从而避免接收缓冲器溢出。而对于动力系统控制的CAN网络,总线上的消息特点是速度快,但是存在一定规律,此类应用的CAN控制器,例如 Freescale 的 *FlexCAN*CAN 2.0B-Compliant),它包括 16 ~ 64 个称为“*mailbox*”的接收缓冲器,运行时根据特定的过滤规则,将不同标识符的消息送到各自对应的 *mailbox*

条件接收

前面有提到消息在CAN总线上是广播式的,但并不是所有节点都会对总线上所有消息感兴趣。节点通过控制器中过滤码(Filter Code )和掩码(Mask Code),再检验总线上消息的标识符,来判断是否接收该消息(Message Filtering)。

对于掩码,“1*”表示该位与本节点相关*,“0*”表示该位与本节点不相关*。举例如下:

**例1:**仅接收消息标识符为00001567(十六进制)的帧

  • 设置过滤码为00001567
  • 设置掩码为1FFFFFFF

节点检测消息的标识符的所有位(29位),如果标识符为00001567接收,否则舍弃。

**例2:**接收消息标识符为00001567 到 0000156F 的帧

  • 设置过滤码为00001560
  • 设置掩码为1FFFFFF0

节点检测消息的标识符的高25位,最低的4位则不care。如果标识符最高25位相同则接收,否则舍弃。

**例3:**接收消息标识符为00001560 到 00001567 的帧

  • 设置过滤码为00001560
  • 设置掩码为1FFFFFF8

节点检测消息的标识符的高26位,最低的3位则不care。如果标识符最高26位相同则接收,否则舍弃。

**例4:**接收所有消息帧帧

  • 设置过滤码为0
  • 设置掩码为0

节点接收总线上所有消息。

应答机制

应答位(ACK)用来表示节点已经收到有效的帧。任何节点如果准确无误地接收到帧,则要向总线上发送显性位,该显性位将掩盖发送节点输出的隐性位,使总线上表现为显性。如果发送节点检测应答位为隐性,那么说明没有节点收到有效帧。接收节点可能在应答位输出隐性表示它没有收到有效帧,但另外有收到有效帧的节点也可能输出显性表示它收到有效帧,这样总线上总体上表现为显性,发送节点也无从得知是否总线上所有节点都收到有效的帧。

位填充

CAN总线使用到的是非归零编码(NRZ),NRZ编码的优点是效率高,但却不易区分哪里是bit开始,哪里是bit结束。因此为确保在同步通信过程中有足够的电平跳变,规范中应用到位填充机制,即在每连续 5 个相同电平后插入 ***1***个反相电平,接收节点在收到消息后自动将填充位删除。在帧内除了CRC界定符、ACK域和EOF外,其余部分均应用到位填充机制。在应用到位填充的域,检测到连续 *6* 个显性位或隐性位均视为报错。检测到错误后,节点将发出主动错误标志。注意如前文述,主动错误标志为连续6个显性位,它是不符合位填充规则的,因此检测到该电平的所有节点都会报错。
位填充意味着实际传输的数据帧长度可能更长,图14示例位填充前后的数据帧的变化,紫色位是位填充增加的位,接收节点收到消息后会自动删除这些位。

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_55

图14. 数据帧在位填充前后的比较

错误检验

完善的错误校验机制是CAN总线高可靠性的有效保证。CAN总线包括 5 种错误校验机制,其中 3* 种在消息层面(Message Level*),2* 种在比特层面(Bit Level) 。如果消息出现五种错误中的任何一种,接收节点将不接收消息,并且产生错误帧通知发送节点重新发送消息,直到接收节点正确地收到消息。如果失效的节点持续不断地报错,导致总线挂死,那么在报错次数达到设定的上限时,它将被控制器从总线上移除(详见“故障限制”部分)。
消息层面的错误校验机制体现在数据帧(图10)中的 CRC* 校验域和 ACK* 域。CRC校验域包括传输数据的 15 bit Checksum值和 1 bit 界定符。ACK域包括 1 bit ACK位和 1 bit 界定符。消息层面的校验还包括格式错误校验
,格式错误校验会检查消息帧中必须为隐性的位,如果这些位表现为显性,那么节点将报格式错误。格式错误检查的隐性位包括SOF、EOF、ACK界定符和CRC界定符。
在比特层面,发送节点在发送消息的同时会检测总线电平,如果检测到总线的状态和它发送的状态不符,则发送节点将报错。该过程的两处例外是消息帧处于标识符仲裁阶段和消息应答阶段。
最后一种错误校验机制源于CAN总线的
位填充机制*。除了错误标志和EOF,如果节点检测到连续 *6* 个相同电平,它即报填充错误。主动错误标志包括连续6个显性位,总线上所有检测到主动错误标志的节点都会报错,而产生各自的错误帧,这意味着总线上的错误帧可能由原先的 *6 bit* 到反馈叠加至 *12 bit* 不等。错误帧后面紧接着8个隐性位界定符(如图10)。在总线空闲时,消息通过竞争仲裁获得总线占用权后将重新传送。

综上,CAN总线的错误类型包括以下五种:

  • CRC错误(CRC Error)

在发送消息时,发送节点会根据特定的多项式计算出由数据帧SOF位到数据域最末位的Checksum值,并将该值放在数据帧的CRC域,随着数据帧广播到总线上。接收节点在收到数据后,应用同样的多项式计算Checksum值,并与收到的Checksum值对比。如果两者一致,正常接收;如果不一致,则舍弃该消息,并发送错误帧请求发送节点重传消息。CRC校验过程如图15所示。

CAN 2.0 规范定义CRC校验应用的多项式为:

传统汽车EE总线架构 汽车总线技术应用_单片机_56

传统汽车EE总线架构 汽车总线技术应用_传统汽车EE总线架构_57

图15. CRC校验机制

  • 应答错误(ACK Error)

发送单元在ACK位中检测到隐性电平时所检测到的错误(ACK没被传送过来时所检测到的错误)。

  • 格式错误(Form Error)

检测出与固定格式的位段相反的格式时所检测到的错误。

  • 位错误(Bit Error)

比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。

  • 填充错误(Stuff Error)

在需要位填充的段内,连续检测到 6 位相同的电平时所检测到的错误。

故障限制

CAN总线上的每个节点控制器都会检测消息是否出错,如果节点发现消息出错,它将发送错误标志,从而打断总线上正常的数据传输。总线上其它没有发现原始消息错误的节点,在收到错误标志后将采取必要的措施,比如舍弃当前总线上的消息。CAN节点内部有两种错误状态计数器 TEC 和 *REC* 。节点通过特定的规则管理这两个计数器的值,其中:

  • TEC /Transmit Error Counter,发送错误状态计数器,出现一次错误该计数器值 +8
  • REC /Receive Error Counter,接收错误状态计数器,出现一次错误该计数器值 *+1*
  • 消息成功发送或接收一次,对应的 *TEC*REC 值相应 -1

*TEC* 增加的速度快于 *REC* 增加的速度,这是因为有很大概率地是发送节点,而不是接受节点出错!基于 *TEC* 和 ***REC***数值的变化,CAN规范定义了节点的 3 种基本错误状态:

  • ***Error Active:***正常状态,在此状态下,节点可以发送所有类型的帧,包括错误帧;
  • ***Error Passive:***节点可以发送除错误帧以外的所有帧;
  • ***Bus Off:***节点被控制器从总线上隔离

节点的三种错误状态切换关系如图16所示。

传统汽车EE总线架构 汽车总线技术应用_数据_58

图16. CAN总线节点错误状态切换图

波形举例

图17示例CAN通信过程信号波形。在 1 时刻,节点A向总线上发送消息;在 *2* 时刻,节点B和C收到消息,发送响应应答;在 3 时刻,节点B和C同时向总线上发送消息,竞争仲裁后节点C获得总线占用权,在 4 时刻继续发送未传输完毕的数据;节点A和B在 *5* 时刻响应C发送的消息;在总线空闲的 6 时刻,B发送消息到总线上;在 *7* 时刻节点A和B响应节点B发送的消息;在 *8* 时刻,节点A向空闲总线上发送消息。

传统汽车EE总线架构 汽车总线技术应用_数据_59

图17. CAN通信过程举例

编后记

一直以来,对CAN总线的认识仅限于收发器、电平端接以及高低速的区分。作为“业内人士”,对汽车电子行业内最为基础的通信协议却不甚了了,颇有些“平生不识陈近南”的遗憾,因此很早军规就萌生撰写一篇CAN总线文章的念头。然而手头资料太多,不知从何下手,终于好不容易鼓起勇气,在印象笔记内敲下“CAN总线协议”的标题,也是整整一年前的事了(2016/05/31)。

拖延症如此严重,*\Database\Portocol\CAN* 文件夹中囤积的资料越来越多。军规悲观地发现,这些文档虽然保存在本地,但99%以上的文档,既然在下载的时候都没有认真地阅读和消化,又如何指望在未来的某一天与它再次重逢?

于是,自上月末起,军规每日下班后抽出 1-2 小时,如此持续将近两周,将先前搜集有关CAN总线的资料罗列、拼凑到这个地方,试图将该命题下所有的知识点收服在自己的知识框架下。每写完一个知识点,就删掉本地几篇讲解同样内容的文档。如同妖怪吸干人体之精华,吐掉无用的躯壳,大呼过瘾!

当然,本文还是很原始的版本,其中不免有许多错误,而且还有不少知识点,比如同步、加密等,都没有涉及到。鉴于此,军规会在后续不断地修正和完善它。(2017/05/06


CAN总线的应用

CAN总线在组网和通信功能上的优点以及其高性价比据定了它在许多领域有广阔的应用前景和发展潜力。这些应用有些共同之处:CAN实际就是在现场起一个总 线拓扑的计算机局域网的作用。

不管在什么场合,它负担的是任一节点之间的实时通信,但是它具备结构简单、高速、抗干扰、可靠、价位低等优势。CAN总线最 初是为汽车的电子控制系统而设计的,目前在欧洲生产的汽车中CAN的应用已非常普遍,不仅如此,这项技术已推广到火车、轮船等交通工具中。

**(1)CAN总线技术的应用:**国外知名汽车基本都已经采用了CAN总线技术,例如沃尔沃、林肯、奥迪、宝马等,而国内汽车品牌,例如奇瑞等公司也已经有几款车型应用了总线技术。

CAN总线技术就是通过遍布车身的传感器,将汽车的各种行驶数据发送到“总线”上,在这个信息共享平台上,凡是需要这些数据的接收端都可以从“总线”上读 取需要的信息,从而使汽车的各个系统协调运作、信息共享、保证车辆安全行驶、舒适和可靠。

一般来说,越高档的车配备的CAN_BUS数量越多,价格也越 高,如途安、帕萨特等车型当中都配备了多个CAN总线。

**(2)汽车CAN总线节点ECU的硬件设计:**汽车CAN总线研发的核心技术就是对带有CAN接口的ECU进行设计,其中ECU的CAN总线模块由CAN控制器和CAN收发器构成。CAN控制器执行完整的CAN协议,完成通讯功能,包括信息缓冲和接收滤波。CAN控制器与物理总线之间需CAN收发器作为接口,它实现CAN控制器与总线之间逻辑电平信 号的转换。

**(3)CAN总线在国内自主品牌汽车中的应用:**由于受成本控制、技术实力等因素的限制,CAN_BUS总线技术一般都出现在国外高端汽车,在A级及以下级别车型当中,该项技术大多出现在合资品牌当中,如POLO、新宝来等。在自主品牌中,采用CAN总线技术的车型中很少,风云2则是其中的代表车型。

风云2 CAN总线技术,可以实现发动机、变速箱、ABS、车身、仪表及其他控制器的通讯,做到全车信息及时共享。在风云2的组合仪表盘当中,阶段里程、未关车门精确显示、安全带未系提醒等20多项信息全部可以显示,比同级产品增加一倍,这样增加了驾驶过程中的安全度。

**(4)未来智能传感器发展趋势:**CAN总线作为一种可靠的汽车计算机网络总线已在许多先进汽车上得到应用,将CAN总线应用于智能传感器中, 使传感器获得的信号能通过总线实时地、可靠地、高速而准确地进行传输,使得各汽车计算机控制单元能够通过CAN总线共享所有信息和资源,达到简化布线、减 少传感器数量、避免控制功能重复、提高系统可靠性、降低成本、更好地匹配和协调各个控制系统的目的。

同时,由于整个智能传感器网络采用全数字化的通信,因此,总线也具有很好的抗干扰能力,是未来智能化传感器和智能化控制网络的发展趋势。

另外,在 CAN总线技术的帮助下,内部各种传感器实现信息共享后,大大减少了车体内线束和控制器的接口数量,避免了过多线束存在的互相干涉、磨损等隐患,降低了汽车电气系统的故障发生率。

打开发动机舱盖,看到的是清晰简洁的舱内布局。维修方面,CAN总线技术的应用也使得故障排查得到最便利的保证。CAN总线智能 管家系统符合欧美OBDII标准法规,实现了在线诊断的功能。在车辆发生故障后,各个控制器通过CAN总线智能管家系统存储故障代码,由专业人员,通过诊断仪为车辆诊断出各种故障状态,快速准确地查找到故障点,第一时间排除故障。

利用CAN总线技术实现系统集成的信息传输,大大提高了各部件的响应速度,减少了配件磨损发生率,也相应的降低了维修成本;而且,先进集成技术的应用,也大幅提高了车辆自身的科技含量,增强了产品竞争力。

CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视,它在汽车领域上的应用是最广泛的。世界上一些著名的汽车制造厂商大都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。

同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。 CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。