0 序
1 CAN总线-概述
1.0 简介
- CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。
1.1 优点
- 传输速度高。传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。
- 低成本:ECUs通过单个CAN接口进行通信,布线成本低。
- 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。
- 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。
- 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。
- 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。
1.2 CAN总线网络
- CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输.
- 为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω?因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。
1.3 CAN收发器
CAN收发器
的作用是负责逻辑电平和信号电平之间的转换。
即:从
CAN控制芯片
输出逻辑电平到CAN收发器;然后,经过CAN收发器【内部转换】将逻辑电平转换为差分信号输出到CAN总线
上,CAN总线
上的节点都可以决定自己是否需要总线上的数据。
具体的引脚定义如下:
1.4 CAN信号表示
CAN总线
采用不归零码位填充技术。
也就是说,
CAN总线
上的信号有两种不同的信号状态,分别是: 显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。
- 显性电平与隐性电平的解释:
- CAN的数据总线有两条,一条是黄色的
CAN_High
,一条是绿色的CAN_Low
。- 当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。
- 当有信号发送时,
CAN_High
的电平升高1V,即3.5V,CAN_Low
的电平降低1V,即1.5V。
- 按照定义的:
CAN_H
-CAN_L
< 0.5V 时候为隐性的,逻辑信号表现为"逻辑1" - 高电平。CAN_H
-CAN_L
> 0.9V 时候为显性的,逻辑信号表现为"逻辑0" - 低电平。
1.5 CAN信号传输
- 发送过程:CAN控制器将CPU传来的信号转换为逻辑电平(即: 逻辑0-显性电平 或者 逻辑1-隐性电平)。CAN收发器(发射器)接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。
- 接收过程:CAN发射器(接收器)将
CAN_H
和CAN_L
线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。
1.6 CAN数据传输
- CAN总线传输的是CAN帧,CAN的通信帧分成5种,分别为:
数据帧
、远程帧
、错误帧
、过载帧
和帧间隔
。 数据帧
根据仲裁段长度的不同,而分为:标准帧(2.0A)和扩展帧(2.0B)。
帧起始
- 由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;
帧结束
- 由7个隐形位(高电平)组成。
仲裁段
-
只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。
-
CAN总线控制器在发送数据的同时监控总线电平:
- 如果电平不同,则:停止发送并做其他处理。
- 如果该位位于仲裁段,则:退出总线竞争;
- 如果位于其他段,则:产生错误事件。
-
假设节点A、B和C都发送相同格式、相同类型的帧,如标准格式数据帧,它们竞争总线的过程是:
-
帧ID越小,优先级越高。
- 由于数据帧的RTR位为显性电平,远程帧为隐性电平。所以,帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
数据段
- 一个数据帧传输的数据量为0~8个字节,这种短帧结构使得
CAN-bus
实时性很高,非常适合汽车和工控应用场合下图所示。
- 数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。