文章目录
【01】CAN — CAN总线介绍
一、CAN(Controller Area Network)总线概述
Controller Area Network
:控制器局域网络
1 定义
CAN
总线(Controller Area Network
)是一种广泛应用于汽车电子和工业控制领域的串行通信协议,以其高可靠性和实时性著称。
Q:什么是串行通信?
串行数据通信是一种数据传输方式,它在通信过程中将数据一位一位地依次传输,每次只传输一个比特(bit)的数据.
通俗理解:
- 在发送端,数据首先被转换为串行格式,比如一个8位的并行数据
01101011
,在转换为串行数据后,会按照一定的顺序(可以是先发送最高位,也可以是先发送最低位,一位一位地发送出去。(参考【字节序和位序】)- 在接收端,按照发送端的发送顺序,一位一位地接收
传输介质:
- 通常为双绞线:它由两根相互绝缘的导线按照一定的规则绞合在一起,能够有效减少电磁干扰。
优点:
- 硬件成本低:串行通信只需要一条传输线(不考虑地线和电源线等辅助线),可以节省布线成本和接口芯片成本
- 适合长距离传输:由于串行通信每次只传输一个比特的数据,数据信号在传输线上的干扰相对较小,而且可以通过一些技术(如调制解调)来增强信号的抗干扰能力,从而适合长距离传输。
- 易于实现同步通信:在串行通信中,通过起始位、停止位和波特率等机制,可以比较容易地实现发送端和接收端的同步。只要双方的波特率一致,并且能够正确识别起始位和停止位,就可以保证数据的正确传输。
缺点:
- 传输速率相对较低:因为每次只传输一个比特的数据,所以串行通信的传输速率通常低于并行通信。在需要快速传输大量数据的场景下,串行通信可能会受到限制。例如,在计算机内部的高速缓存和CPU之间的数据交换,如果采用串行通信,可能会导致系统性能下降。
2 CAN总线的结构概述
CAN总线有开环总线(不做介绍,有兴趣的自行查阅资料)和
闭环总线
两种,在我们汽车领域一般使用的是闭环总线
,如下图:
定义与工作原理
定义:
- 闭环CAN总线网络是一种高速、短距离的CAN网络,其总线两端各连接一个
120Ω
的电阻,两根信号线形成回路。工作原理
- 在闭环结构中,CAN总线的两根信号线(
CAN_H
和CAN_L
)形成一个闭合回路。发送端通过CAN收发器将逻辑电平转换为差分电平输出到总线上,接收端通过监听总线电平,将总线上的消息读入自己的CAN收发器。
电气特性
终端电阻
- 总线两端各连接一个120Ω的电阻,用于匹配总线阻抗,减少信号反射,确保信号完整性。
信号电压
- 在
ISO 11898
标准中,隐性电平的电压差接近0V
,显性电平的电压差约为2V
。抗干扰能力
- 采用差分信号传输,具有较强的抗干扰能力,能有效抑制外部电磁干扰。
网络拓扑结构
线性总线拓扑
- 通常采用线性总线拓扑结构,所有节点都连接在这条总线上,信号在总线两端反射,终端电阻的使用可以消除这种反射。
应用场景
汽车电子
- 在汽车中,
闭环CAN总线
常用于动力系统、底盘系统等需要高实时性和高可靠性的场景。工业自动化
- 在工业自动化领域,闭环CAN总线适用于需要
高速数据传输
的场合,如机器人控制、自动化生产线等。
与其他结构的比较
与开环结构相比
- 闭环结构支持更高的通信速率(最高
1Mbit/s
),但传输距离较短(在1Mbit/s时最长40m
);开环结构则适用于低速、远距离的通信场景。与其它总线相比
- 相比
RS485
等其他工业总线,CAN总线具有更高的实时性和可靠性,适用于对实时性要求较高的场合。
3 CAN总线的数据收发机制
通俗理解,ECU给其他ECU发消息,是
通过CAN收发器往总线上输出差分电平
,其他ECU通过检测总线的电平情况,即可收到消息。
比如在T0时刻ECU要传输比特0,就通过CAN收发器输出0的差分电平,其他ECU检测到总线电平变化,就相当于收到比特0了。
发送数据
- ECU的CAN控制器将需要发送的数据转换为逻辑电平(0和1),这些电平通过TX线发送到CAN收发器。
- CAN收发器将这些逻辑电平转换为差分电平,输出到CAN总线上的两根线(CAN_H和CAN_L)。
- 显性电平:当发送逻辑0时,
CAN_H
线电压升高到3.5V
,CAN_L
线电压降低到1.5V
,两者的电压差为2V
,表示显性状态。- 隐性电平:当发送逻辑1时,
CAN_H
和CAN_L
线的电压都保持在2.5V
,电压差为0V
,表示隐性状态。接收数据
- CAN总线上的信号通过CAN_H和CAN_L线传输到CAN收发器。
- CAN收发器将差分电平转换为逻辑电平(0和1),并通过RX线发送到ECU的CAN控制器。
- ECU的CAN控制器将接收到的逻辑电平转换为相应的数据,并进行处理。
差分信号的优势
- 抗干扰能力强:由于CAN总线使用差分信号传输,两根线的电压变化同步,可以有效抵抗电磁干扰。
- 高可靠性:差分信号的传输方式使得CAN总线在复杂的电磁环境中仍能保持稳定的数据传输。
4 CAN总线的传输速率
通俗理解,在
越短
的时间内,ECU的CAN收发器向CAN总线输出的差分电平越多
,传输速率越快
。所以这对ECU的CAN收发器有更高的要求,需要收发器具有更高的驱动能力,以快速切换电平
。
位时序
- CAN总线通过位时序来定义传输速率。一个位由多个时间段组成,包括同步段、传播时间段、相位缓冲段1和相位缓冲段2。这些时间段由最小时间单位
Tq
(Time Quantum
)组成,Tq
是CAN总线的最小时间单位
。采样点
- 采样点是读取总线电平并将其作为位值的时刻。采样点通常设置在位时间的
75%
处,确保数据的稳定性。波特率预分频器
- 通过设置波特率预分频器,可以调整CAN控制器的
时钟频率
,从而控制传输速率。预分频器的值越小,传输速率越高。传输速率与总线长度的关系
- 传输速率与总线长度密切相关。当总线长度较短时,传输速率可以达到
1Mbps
;而当总线长度较长时,传输速率会降低以适应长距离传输。
Q:为什么CAN总线的传输速率与总线长度有关?
通俗理解,在CAN总线中,
ECU_A
改变总线电平输出信号后,ECU_B
接收到电平变化需要时间,这个时间与总线长度
和电平信号传输速率
有关。
信号传播延迟
- 位时序与传播延迟的关系:信号在总线上以有限的速度传播,通常为每米
5ns
,总线越长,信号传播所需的时间就越长。例如,在1Mbps
的信号速率下,总线长度为40米
时,线缆的单向延迟为200ns
。如果总线长度过长,信号的传播延迟可能会超过CAN协议规定的位时序范围,导致接收端无法正确采样到信号,从而影响数据传输的准确性。- 对传输速率的影响:传输速率决定了信号的
频率
和位时间
。较高的传输速率意味着更短的位时间,这要求信号在更短的时间内完成传播和采样。例如,在1Mbps
的速率下,位时间为1000ns
,而最迟采样点约为850ns
。为了确保信号在总线上的传播延迟不超过位时序允许的范围,长总线需要降低传输速率,以给信号足够的传播时间,避免因延迟过大而导致的数据错误。信号反射
- 反射的产生:在长总线中,信号在传输过程中可能会遇到
阻抗不匹配
的情况,例如总线两端未正确匹配终端电阻
。这种情况下,信号会在阻抗不匹配的点发生反射,反射的信号与原始信号相互叠加,可能导致信号失真
。- 对传输速率的影响:反射的信号会
干扰
原始信号,使得接收端难以准确识别信号的电平状态。为了减少反射的影响,长总线需要降低传输速率,以降低信号的频率,减少反射的幅度和影响。信号衰减
- 衰减的原理:信号在总线上传输时,会因为导线的电阻、电容和电感等因素而逐渐
衰减
。总线越长,信号衰减的程度就越大。- 对传输速率的影响:信号衰减会导致信号的幅度减小,可能使接收端无法正确识别信号。为了确保信号的幅度足够大,能够被接收端准确识别,长总线需要降低传输速率,以减少信号的衰减程度。
电磁干扰
- 干扰的来源:长总线更容易受到外界
电磁干扰
的影响,例如来自其他电子设备或电源线的干扰。这些干扰会叠加在信号上,导致信号失真
。- 对传输速率的影响:为了降低电磁干扰的影响,长总线需要
降低传输速率
,以减少信号的频率,使信号更容易抵抗干扰。双向延迟和采样点
- CAN协议规定了双向延迟(
PROP_SEG
),这是为了确保每个节点在采样前有足够的等待时间。总线长度和信号传播速度共同决定了双向延迟,从而影响采样点的设置。收发器的环路延迟
- 除了线缆的传播延迟,收发器的
环路延迟
(包括驱动器和接收机的延迟)也会影响总延迟。每个收发器的环路延迟需要足够低,以支持高传输速率下的长总线长度。
二、CAN总线特点
1 高可靠性设计
抗干扰能力强
- 采用差分信号传输,通过两根信号线(
CAN_H
和CAN_L
)的电压差表示数据,抑制共模噪声,适应汽车引擎舱、工业电机等高电磁干扰环境。- 终端电阻匹配:总线两端连接
120Ω
的终端电阻,减少信号反射,提高信号完整性。错误检测与处理机制
- 具备多层错误检测(位错误、填充错误、格式错误、
CRC
校验、ACK
错误)和自动重传机制,确保数据传输的准确性。- 错误处理策略:自动重传、错误计数器(
TEC/REC
)触发节点隔离(被动错误状态或总线关闭)
2 实时性与优先级机制
高实时性
- 适合对实时性要求较高的应用(如汽车电子和工业自动化),能够快速响应和处理数据,确保关键指令(如刹车、安全气囊)优先传输,延迟可控(
微秒级
)。优先级机制
- 基于消息
ID
的优先级仲裁,高优先级消息优先传输,确保关键数据及时送达。- 优先级驱动的延迟控制,高优先级消息的传输延迟可预测,满足实时需求
非破坏性仲裁
- 基于消息
ID
优先级(ID值小则优先级高),显性位(0
)覆盖隐性位(1
),仲裁失败节点自动退避,无数据冲突.灵活通信模式
- 支持
事件触发
(如故障报警)与周期传输(如传感器数据),满足实时控制需求。
3 系统设计与扩展性
拓扑与扩展
- 线性总线拓扑,支持星型、树型等变体,布线简单(双绞线)。
多主架构
- 无中心控制器,节点自主发起通信(如发动机
ECU
、ABS
模块),避免单点故障。拓扑结构
- 灵活性:支持线性总线、星型、树型和混合型等多种拓扑结构。
- 扩展性:节点可方便地添加或删除,不影响网络正常运行。
- 节点容量:理论支持
110
个节点,可通过中继器或网关扩展,成本低。- 布线简化:线性总线拓扑,降低线束复杂度和成本。
- 广泛兼容性:主流微控制器集成
CAN
控制器,开发门槛低。
4 物理层与通信效率
传输特性
- 速率与距离平衡:
1 Mbps
(40米
)至5 kbps
(10千米
)。- 逻辑电平:显性电平(0,CAN_H=
3.5V
/CAN_L=1.5V
),隐性电平(1,CAN_H=CAN_L=2.5V
)。高效通信
- 广播式传输:所有节点接收数据,仅目标节点处理,减少冗余通信。
- 数据帧结构灵活:标准帧(
11位ID
,8字节数据
)与扩展帧(29位ID
),兼容传统和复杂网络。- CAN FD:灵活数据速率(最高
5Mbps
),数据段最大64字节,减少分包传输开销。数据传输
- 灵活的数据传输速率:支持
1Mbps
(短距离)至5kbps
(长距离)的速率,适应不同场景需求。- 数据帧格式:支持标准帧(
11位ID
)和扩展帧(29位ID
),兼容复杂网络拓扑。- 广播式通信:所有节点接收消息,但只有目标节点处理,提高通信效率。
通信效率
- 低延迟:通信延迟低,适合实时控制系统。
- 高效数据传输:通过位填充、
CRC
校验和确认机制确保数据传输的可靠性。
5 差分信号传输
双绞线设计
- 通过电压差表示逻辑状态,显性电平(差分电压
2V
)和隐性电平(差分电压0V
)确保信号稳定。传输距离与速率平衡
- 支持灵活配置(如
1Mbps/40米
至5kbps/10千米
)。
6 完善的错误检测与容错机制
多层错误检测
- 位错误、填充错误、格式错误、
CRC
校验、ACK
错误等。错误处理策略
- 自动重传、错误计数器管理(
TEC
和REC
),避免故障节点干扰总线。
7 应用场景广泛
汽车电子
ECU
通信(发动机、电池管理)、车载诊断(OBD-II
)。工业控制
PLC
网络、生产线设备同步、智能传感器网络。其他领域
- 电梯控制、医疗设备(
MRI
)、航空航天。
8 安全与演进方向
CAN FD增强
- 数据段速率提升(
5 Mbps
)、数据长度扩展(64字节
)、增强CRC
(21位
)。未来趋势
CAN XL
(更高带宽)、TSN
(时间敏感网络)融合,提升实时性与兼容性。局限性
- 传统CAN缺乏加密机制,需依赖应用层协议(如
CANsec
)。
三、总结
CAN总线以
差分信号
、多主仲裁
、错误容错
为核心
,兼具实时性
、可靠性
与低成本
,成为复杂控制系统的通信基石。通过CAN FD及后续演进,持续拓展高速大数据场景的应用边界