参考资料
1. 汽车网络架构与常用总线汇总
1.1 汽车 CAN 总线简述
1.1.1 定义
- CAN (Controller Area Network,控制器局域网)
- 1983 年德国 Bosch 公司为解决众多测量控制部件之间的数据交换问题而开发的一种串行数据通信总线
- 主要用于汽车的监测与控制,目的:减少线束的数量、通过多个网络进行大量数据的高速传输
1.1.2 点对点和总线
-
早期的 ECU(Electronic Control Unit,电子控制单元、车载电脑)物理层线束连接
- 线束成本增加、布线复杂度增加、网络扩展困难
- 线束成本增加、布线复杂度增加、网络扩展困难
-
总线型的 ECU 物理层线束连接
- 解决了点对点方式的缺点
- 总线带宽成为网络传输速率的瓶颈
1.1.3 CAN 总线发展历史
1.2 汽车网络架构简述
- 汽车网络是将汽车上所有电子传感器、执行器和电子控制单元 (ECU) 连接组网的通信形式,根据通信速率,汽车工程师协会 (SAE) 定义了如下类别的汽车网络
1.3 常用汽车总线汇总
-
当前的车用总线对比
- CAN(CAN FD)、LIN、MOST、FlexRay、车载以太网
- CAN(CAN FD)、LIN、MOST、FlexRay、车载以太网
-
汽车 CAN 网络细分
- 动力 CAN 网络
- 车身 CAN 网络
- 组合仪表 CAN 网络
- 诊断 CAN 网络
1.4 汽车网络典型应用
- PTCAN(动力 CAN)、BCAN(车身 CAN)
2. CAN 总线在汽车网络中的优势
2.1 曾经的车用总线
- SAE J1850 (Class2)
- SAE J1708
- K-Line
- BEAN
- Byte flight
- D2B
2.2 CAN 通信特性
- (1) 节点间采用多主机通信方式
- (2) 采用短帧结构,报文帧的有效字节数为 8 个,可达汽车实时响应要求
- (3) 报文 ID 值越小,优先级越高。报文 ID 可分成不同的优先级,进一步满足汽车网络报文的实时性要求
- (4) 非破坏性总线仲裁处理机制
- (5) 可靠的 CRC 校验方式,传输数据出错率极低,满足汽车数据传输的可靠性要求
- (6) 报文顿仲裁失败或传输期间被破坏有自动重发 (机制)
- (7) 节点在错误严重的情况下,具有自动脱离总线的功能,切断它与总线的联系,不影响总线的正常工作
- (8) 通信距离最远达 10km (速率 5Kbps 以下)
- (9) 通信速率最高 1MB/s (此时距离最长 40m)
- (10) 节点数实际可达 110 个
- (11) CAN 节点设计成本较低,通信介质采用双绞线
3. CAN 物理层如何保证汽车通信要求
-
OSI 模型与 CAN 的关系
-
CAN 总线与 ECU 架构
3.1 CAN 收发器
- CAN 收发器逻辑信号和物理信号之间的转换采用差分电平方式
- 将逻辑数字信号转换成物理信号
- 将物理信号转换成逻辑数字信号
3.1.1 CAN 信号电平
-
CAN 总线有 ISO11898(高速 CAN,默认) 和 ISO11519(低速容错 CAN) 两个标准
-
为什么要采用两根线 (双绞线)的差分电平信号?
- 双绞线传输差分信号时受到共模信号干扰后,电平差值不变,信号解码正常
- 双绞线传输差分信号时受到共模信号干扰后,电平差值不变,信号解码正常
-
单个 CAN 节点
-
多个 CAN 节点:线与原理
- 只要其中一个节点输出低电平,总线就为低电平
- 当所有节点输出高电平时,总线才为高电平
3.1.2 CAN 编码方式
- CAN 编码采用 NRZ 非归零编码,相同带宽情况下,NRZ 编码方式的信息量更大
3.1.3 CAN 异步串行通信
-
异步串行通信省去了时钟信号线,但根据波特率做采样,波特率的误差会产生通信错误
-
波特率误差带来的错误
-
如何减少波特率的误差带来的通信错误?
-
解决方法:CAN 总线规定信号的跳变沿时刻进行同步,将误差累计限制在两个跳变沿
-
该解决方法存在问题:当发送数据出现都为 0 或者 1 的时候,同样不跳变造成误差累计怎么办呢?
-
新解决办法:采用填充位在连续 5 个相同位后插入一个相反位,产生跳变沿,用于同步
-
3.1.4 CAN 采样点
-
一个标称的位时间 = 1 / 波特率
-
位时间分为:同步段、传播段、相位缓冲段 1、相位缓冲段 2
-
CAN 采样点 – 时间份额参考
3.2 CAN 终端电阻
-
背景问题
- 根据电磁场和微波理论,高频电路中负载阻抗需与传输线的特性阻抗一致,否则电信号在线束终端遭遇阻抗突变,发生反射现象,造成波形震荡
- 根据电磁场和微波理论,高频电路中负载阻抗需与传输线的特性阻抗一致,否则电信号在线束终端遭遇阻抗突变,发生反射现象,造成波形震荡
-
解决方案
-
总结:CAN 终端电阻作用
- 保证信号在传输过程中的阻抗连续性
3.3 CAN 总线电缆
- 选作 CAN 总线的电缆必须达到下面给出的规格(ISO11898-2),这些规格主要用于标准化电气特性,并不涉及机械或材料方面的参数
3.4 CAN 节点物理结构
- CAN 控制器/收发器
- 分别对应 ISO/OSI 模型的数据链路层和物理层,完成 CAN 报文的收发
- 功能电路
- 完成特定的功能,如信号采集或控制外设等
- 主控制器与应用软件
- 控制各个硬件部件工作
- 按照 CAN 报文使用规则解析 CAN 报文
- 采集并发送数据等
4. CAN 数据链路层详解
4.1 CAN 报文帧种类与格式解析
4.1.1 数据帧
-
用于发送节点向接收节点传送数据,是使用最多的帧类型
-
帧起始
-
仲裁段
-
控制段
-
数据段
-
CRC 段
-
ACK 段
-
帧结束
4.1.2 远程帧
- 用于接收节点向某个发送节点请求数据
4.1.3 错误帧
- 用于当某节点检测出错误时向其他节点通知错误的帧
4.1.4 过载帧
- 用于接收节点向发送节点通知自身接收能力的帧
4.1.5 帧间隔
- 将数据帧或远程帧与前面的帧分离的帧
4.2 CAN 总线竞争与仲裁机制
CAN 总线上有多个节点同时要发送数据,谁先发送呢?这就是总线竞争的问题
-
CAN 总线非破坏性仲裁机制
- 仲裁发生在仲裁段
- 采用 “线与” 机制
- ID 值越小,优先级越高
- 仲裁失败进入 “只听” 模式
-
非破坏性仲裁机制的前提
-
仲裁的线与机制
4.3 CAN 节点状态与错误处理机制
-
CAN 错误类型
-
错误检测区域
-
错误帧:用于当某节点检测出错误时向其他节点通知错误的帧
-
CAN 节点状态
-
CAN 错误处理流程
5. CAN FD 与 CAN2.0 的区别
5.1 为什么会有 CAN FD
- 该协议能够支持更高的速率,可以更快的刷写 ECU
- 在单个数据帧内传送率可达 64 字节,避免了经常发生的数据分拆传输的状况
- 对汽车行业而言,CAN-FD 协议显得非常重要,CAN 线束和其它物理层面元件可重新再利用
- 更高的带宽,在电动车以及今后的动力 CAN 上应用更有优势
- 上层应用层架构不需要改变,在原来基础上扩展即可
5.2 CAN FD 是如何提速的
5.3 CAN FD 标准化
- 2011 年,Bosch 发布了 CAN 替代总线 CAN FD 1.1 版;2015 年,ISO 11898-1——Classical CAN and CAN FD data link layer 正式将 CAN FD 标准化
- 2012 年底到 2015 年中之间,有很多厂家已经开发了 CAN FD 产品,但是属于非 ISO 标准的 CAN FD 产品,并且已经有少部分产品已经在市场流通。而这些非 ISO 产品的供应商也没法完全收回或者销毁原有产品,所以这些供应商仍然需要解决这个问题
- 非 ISO CAN FD 与 ISO CAN FD
- 共同点:传输速率一致,数据长度一致
- 区别:后者引入了一个 3 位的填充位计数器以及额外的校验位,另外,CRC计算值也不同,所以两者是不兼容的
- 建议:所有的 CAN FD 应用,需注明 ISO CAN FD 或 non ISO CAN FD
5.4 CAN FD 的波特率
- SAE 标准
- SAE J2284-4:推荐汽车 CAN FD 网络应用采用 500k/2M 的波特率
- SAEJ2284-5:推荐汽车 CAN FD 点对点通信应用采用 500k/5M 的波特率
- CiA 标准