一文读懂CAN系统架构和帧结构

关注菲益科公众号—>对话窗口发送 “CANoe ”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。

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

点对点通信

总线通信

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

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

发展历史

  • 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主要由两个协议定义:ISO11898和ISO11519-2,具体区别、对比如下图:

CAN主要由两个协议定义:ISO11898和ISO11519-2,具体区别对比

CAN总线标准

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

物理层、数据链路层和应用层

物理层、数据链路层和应用层

标准化

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定义作出一定规范。

上层标准

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

表1. CAN上层标准规格

同时,面向汽车的通信协议以通信速度为准进行了分类:

OSI基本参照模型

OSI参考模型为7层,物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而CAN通信底层仅使用了物理层和数据链路层

CAN通信底层仅使用了物理层和数据链路层


CAN物理层

网络拓扑

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

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

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

端接电阻接法

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

Bus Length(m) Signaling Rate(Mbps)
40 1
100 0.5
200 0.25
500 0.1
1000 0.05

收发器

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

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

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

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

图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 = 0V, 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总线仲裁的电路基础。详细仲裁过程见下文“仲裁机制”部分。

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

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

连接器

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

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

三种CAN标准物理层比较

除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即 Single Wire CAN。单线CAN可以减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如

CAN(Controller Area Network,控制器局域网)总线协议是一种广泛应用于工业自动化、汽车电子等领域的串行通讯协议。其帧格式如下: <img src="https://img-blog.csdnimg.cn/20200925125252655.png" width="400"> CAN总线协议的帧分为标准帧扩展帧两种,其中标准帧包含11位标识符,扩展帧包含29位标识符。在CAN总线上,所有节点都可以同时发送接收数据,因此需要在帧中包含发送方接收方的信息。 帧格式的具体解释如下: 1. 帧起始符(SOF):一个固定的位模式,表示帧的起始。 2. 报文控制(CTRL):包含几个控制位,如IDE、RTR等。其中IDE表示标识符的类型,0表示标准帧,1表示扩展帧;RTR表示远程请求帧,0表示数据帧,1表示远程请求帧。 3. 标识符(ID):11位或29位的标识符,用于区分不同的CAN消息。 4. 控制域(CTL):包含几个控制位,如DLC、EDL等。其中DLC表示数据长度,即数据域的字节数;EDL表示数据长度是否扩展,0表示标准数据帧,1表示扩展数据帧。 5. 数据域(DATA):0~8字节的数据。 6. CRC:用于校验数据是否正确。 7. 确认位(ACK):由接收方发送的确认信息,表示数据是否正确接收。 8. 结束符(EOF):一个固定的位模式,表示帧的结束。 以上就是CAN总线协议的帧格式。在实际应用中,节点之间通过CAN总线进行数据交换,通过解析帧中的各个字段,可以判断消息的发送方、接收方、数据内容等信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值