【车载开发系列】CAN通信总线再理解(上篇)
【车载开发系列】CAN通信总线再理解上篇
- 【车载开发系列】CAN通信总线再理解(上篇)
- 一. CAN的概念
- 1)硬件组成
- 2)编码与负载
- 3)收发数据
- 4)半双工通信
- 二. CAN总线历史
- 三. CAN总线通信速率
- 四. CAN的特点
- 1)多主控制
- 2)开闭环总线
- 3)安全性
- 4)故障封闭功能
- 5)连接节点多
- 五. 物理层特征
- 1)显性电平
- 2)隐性电平
- 六. CAN收发器芯片介绍
- 七. CAN故障排查
- 八. 选择CAN的考虑点
- 1)省线材低能耗
- 2)可靠性
- 3)通信数据少
- 4)设计成本
一. CAN的概念
- CAN(Controller Area Network:控制器局域网),是ISO国际标准化的串行通信协议。
- 为满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。
- CAN通信协议是一种基于广播的通信方式,它采用多主结构;
- 即网络中的每个节点都可以在任何时候主动地向网络上其他节点发送信息,而不分主从,通信方式灵活。
1)硬件组成
- CAN通信节点由一个MCU应用程序,CAN控制器及CAN收发器组成
- 控制器与收发器(电平转换)之间通过CAN_Tx及CAN_Rx信号线相连;
- 收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。
- MCU应用程序可分为:
- 业务逻辑代码:根据项目需求而定,比如读取传感器数据并对其做出响应逻辑处理。
- 协议层代码:比如CANOpen。
- 底层驱动代码:配置CAN总线相应参数、控制收发的代码。
2)编码与负载
- 由于CAN通信协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,还可以通过中继器增强负载量。
3)收发数据
- 当CAN节点需要发送数据时,控制器把要发送的二进制编码通过CAN_Tx线发送到收发器,然后由收发器把这个普通的逻辑电平转化为差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线网络。
- 而通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化为普通的逻辑电平信号,通过CAN_Rx输出到控制器中。
4)半双工通信
- 由于CAN总线协议的物理层只有1对差分线,在一个时刻只能表示一个信号,所以对通信节点来说,CAN通讯是半双工的,收发数据需要分时进行。
- 在CAN的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。
二. CAN总线历史
CAN总线的发展历史大致可以分为下面的四个阶段。
年份 | 事件 |
---|---|
1986年 | 博世公司开发出CAN通信协议 |
1993年 | ISO发布CAN标准ISO11898及ISO11519 |
2011年 | 博世公司开发出CAN FD |
2024年 | CAN已经发展成为了汽车网络的标准协议 |
- 各类CAN的帧格式都不同,不同类的CAN帧是通过特定的bit来标记识别的,均实现了向后兼容。即经典CAN设备能接收并可能忽视CAN FD帧,但不能发出经典CAN帧,否则会使CAN FD设备解析错乱。
三. CAN总线通信速率
CAN种类 | 参照标准 | 通信速率 | 通信长度 |
---|---|---|---|
低速CAN | ISO11519 | 10~125kbps | 总线长度可达1000米 |
高速CAN | ISO11898 | 125kbps~1Mbps | 总线长度 <= 40米 |
CAN FD | ISO11898-1 | 5Mbps | 同经典CAN |
- 高速CAN也称为经典CAN。一般用在需要实时计算的场景,例如发动机、ABS、安全气囊、电控悬架、巡航、电池、ESP、EPS、能耗、尾气排放量等。
- 低速CAN,对数据的实时性要求较低,无关行车安全。应用场景包括灯光、雨刮、座椅、门锁、后视镜、空调、胎压等。注:部分也可能被LIN总线代替。
四. CAN的特点
- 每个设备都可以主动发送数据,没有了主从设备的概念;
- 没有类似地址的信息,添加设备不改变原有总线的状态,增加了柔软性;
- CAN总线协议已广泛应用在汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。
1)多主控制
- 总线空闲时,所有单元都可发送消息,而两个以上的单元同时发送消息时,根据标识符(ID, 非地址)决定优先级。
- 两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。
- 仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立即停止发送而进行接收工作。
2)开闭环总线
- 闭环通讯网络是一种高速、短距离网络,它的总线最大长度为40m,通信速度最高1Mbps,总线的两端各需要一个120Ω的电阻;
- 开环总线网络是低速、远距离网络,它的最大传输距离1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各需要串联一个2.2kΩ的电阻。
3)安全性
- 具有错误检测/错误通知和错误恢复功能
4)故障封闭功能
- CAN可以判断出错误的类型是总线上数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生次序数据错误时,可将引起此故障的单元从总线上隔离出去。
5)连接节点多
- CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通信
五. 物理层特征
- CAN是一种异步通信,CAN_High和CAN_Low两条信号线构成一组差分信号线,以差分信号的形式进行通讯。
- CAN控制器根据CAN_L和CAN_H的电位差来判断总线电平。总线电平分为显性电平和隐性电平。
- 显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。
1)显性电平
- 逻辑0,用于表示CAN总线上的某个节点正在发送数据;
- 当总线上有一个或多个节点发送显性电平时,总线状态被置为显性电平。
- CAN_High的电平通常为3.5V,CAN_Low的电平通常为1.5V,相差2V左右;
2)隐性电平
- 逻辑1,用于表示CAN总线处于空闲状态,没有节点发送数据。
- 当总线上所有节点都停止发送数据或发送隐性电平时,总线状态被置为隐性电平。
- CAN_High和CAN_Low线上的电压均为2.5V,相差0V。
六. CAN收发器芯片介绍
- (1)CAN收发器芯片常见有:TJA1050、TJA1042、SIT1050T。
- (2)收发器芯片原理图:
(3)CAN芯片引脚介绍
引脚 | 功能 |
---|---|
D | 接STM32 CAN_TX,CAN发送引脚 |
GND | 接地 |
VCC | 该芯片工作电压为5V |
R | 接STM32 CAN_RX,CAN接收引脚 |
RS | 高速/静音模式选择(低电平为高速) |
CANH | 高电位CAN电压输入输出端 |
CANL | 低电位CAN电压输入输出端 |
Vref | 参考电压输出 |
七. CAN故障排查
主要有这几类:
- 电磁辐射干扰;
- 工作电压不正常,包括电源故障、电路元件不符合电路设计规范(含电阻阻抗不对)等;
- 各类原因导致的线路短路、断路,包括线松、线断、潮湿、线接错等。
- 线路物理性质变化引起通信信号衰减或失真,如高温
- ECU故障,即传输协议或软件程序有bug
- 数据链路层本身的出错概率非常小,各种芯片都很成熟了,只是通常在这层入手排查物理层问题,物理层的故障通常需要电子工程师用CANoe,示波器、万用表来检测。
- 应用层都是脚本自动化生成代码,高层框架也成熟,这层出bug应该是必现的。正如CAN的名字里有“局域网”,本地网络的问题风险相对可控。
八. 选择CAN的考虑点
- CAN就是成本和带宽双低。车载网络的开发模式是先设计后选择,而不是先选择高性能且贵的部件。
1)省线材低能耗
跟其它拓扑结构(星形、环形等)比,总线结构能省线材。线材少意味着成本少,布线工作量少,车能减重就能降能耗。汽车线束重量每增加50kg,每百公里油耗会增加0.2L。优化车载网络设计,能减少9-17kg,电缆长度缩短200-1000m。
2)可靠性
在物理层表现为通过差分电压和屏蔽双绞线抗电磁干扰,数据链路层主要表现在加入CRC检验等多种措施来发现错误,还有关闭节点发送功能来防止持续错误。
3)通信数据少
跟传统以太网的数据链路层比(我们熟知的“MAC地址”在这一层),CAN每帧(frame)的bit更少
4)设计成本
跟车载以太网比,车载以太网在成本、带宽上胜出,但延时较大、实现较复杂,且沿用CAN的系统设计改动少,还需时日才能替换。