不同总线的应用领域
1. 动力系统
- HS-CAN(高速CAN)
- TT-CAN(时间触发CAN)
- LIN
- FlexRay
2. 智驾系统
CANFD总线
- 单ECU刷写文件达到兆级
- OTA/智能驾驶/HMI新技术发展
- 安全机制要求
3. 舒适系统
- MS-CAN(中速CAN)
- FT-CAN(低速容错)
- SW-CAN(单线CAN)
- LIN
4. 信息娱乐系统
- IDB-C(硬件与高速CAN相同)
- IDB-1394
- MOST
- D2B
- Ethernet总线
5. 诊断
- CAN
6. 网段互联设备
- 转发器
- 网桥
- 路由器
- 网关
常用的总线协议
OSI七层协议参考模型
CAN总线基础介绍
1. 物理层
1.1 总线电压
1.2 拓扑结构
CAN线长度
终端电阻
- 120欧姆
- 为了防止电阻不匹配引起的信号反射
1.3 CAN线
- 双绞线
- 芯截面积
- 电容
- 屏蔽层接地
2. 基本通信机制
2.1 报文发送
节点发送报文时要检测总线状态
- 只有总线处于空闲,节点才能发送报文
- 在发送过程中进行**“回读”**,判断送出的位与回读的位是否一致
线与机制
- 显性位能够覆盖隐性位
- 通过ID进行仲裁,ID值越小,报文优先级越高
2.2 非破坏性仲裁
- 发送低优先级的节点退出仲裁后,在下次总线空闲时自动重发报文
2.3 报文接受过滤
- 如果相关则接收,不相关则过滤
2.4 NRZ编码与位填充
NRZ编码
- 确保报文紧凑-相同带宽下信息量更大
- NRZ编码不能保证足够的跳变沿用于同步,带来节点间计时器误差的累计-位填充
位填充
- 发送节点发送5个连续的相同极性位后,在位流中自动插入一个极性相反的位-位填充
- 接收节点对相同极性位的数量进行检测,从位流中将填充位去掉-清除填充
3. 数据链路层
3.1 数据帧格式
数据帧的两种格式
-
标准帧
-
扩展帧
帧起始-SOF
- 标识一个数据帧的开始,用于同步
- 固定格式:一个显性位
- 只有在总线空闲期间,节点才能够发送SOF
ID:标识符
- 唯一确定一条报文
- 表明报文的含义,可以包含报文的源地址和目标地址
- 确定报文的仲裁优先级,ID数值越小,优先级越高
- 标准帧11位,扩展帧29位
RTR位
- 用于区分数据帧和远程帧
- 数据帧,RTR=0
- 远程帧,RTR=1
IDE位
- 用于区分标准帧和扩展帧
- 标准帧,IDE=0(11位ID)
- 扩展帧,IDE=1(29位ID)
DLC
- 包含4位,表示数据场包含数据的字节数
- DLC=0-8
- DLC=9-15则DLC=8
数据场
- 具有0-8个字节长度,由DLC确定
- 包含CAN数据帧发送的内容
CRC
- 用于进行CRC校验
CRC界定符-DEL
- 界定CRC序列
- 固定格式,1个隐性位
- 注:CRC界定符之前进行位填充
ACK
- 确定报文被至少一个节点正确接收
EOF
- 表示数据帧结束
- 固定格式,7个连续的隐性位
ITM
- 固定格式
- 3个连续的隐性位
- ITM之后进入总线空闲状态,此时节点可以发送报文
3.2 CAN错误检测
错误检测的类型
- CRC检测-CRC错误
- 接收节点计算的CRC序列与接收到的CRC序列不同
- 格式检测-格式错误
- 固定格式位场(如CRC界定符、ACK界定符、帧结束等)含有一个或更多非法位
- ACK检测-ACK错误
- 发送节点在ACK位期间未检测到显性位
错误检测
- 发送节点-位错误、格式错误、ACK错误
- 接收节点-填充错误、格式错误、CRC错误
- 检测到错误后,发送错误标志
- 位错误、填充错误、格式错误或ACK错误产生后,错误标志在下一位发送
- CRC错误,错误标志在ACK界定符后发送
错误界定
- 接收错误产生时,REC增加;正确接收到数据帧,REC减少
- TEC也是同样
- REC、TEC的数值会引发节点状态改变
节点的状态
- Error Active
- 正常的进行总线通信
- 错误产生时,发送主动错误标志
- Error Passive
- 能够进行总线通信
- 错误产生时,发送被动错误标志(6个连续隐性位)
- 限制(连续2次报文发送)
- Bus Off
- 不能收发任何报文
- 不能收发任何报文
错误帧的格式
- 包括错误标志和错误界定符
- 错误标志
- 主动错误标志:6个连续显性位
- 被动错误标志:6个连续隐性位
- 错误界定符
- 8个连续隐性位
- 8个连续隐性位
错误标志叠加
- 主动错误
- 错误标志:6个连续显性位
- 破坏填充规则,诱发其他节点发送错误标志
- 破坏固定位场(CRC界定符、ACK界定符及EOF)的固定格式,诱发其他节点发送错误标志
- 0~6个错误标志叠加
- 错误标志发送后,每个站都送出隐性位,并监视总线,直到检测到隐形位,此后开始发送剩余的7个隐形位
- 错误标志:6个连续显性位
错误帧的发送
- 位错误
位定时
-
Time quantum时间份额
- CAN时钟是CAN控制器的工作时钟
- CAN时钟的一个周期称为时间份额tQ,它是CAN控制器工作的最小单位时间
-
位时间
- 一个位时间由若干个tQ组成(8~25)
- 波特率=1/位时间
-
位时间的组成
- 一个位时间分成了4个时间段
- 为了方便编程,许多CAN模块将传播段和相位缓冲段1合并为一个时间段,即只有3个时间段
- 采样点时刻读取的电平决定该位是“显性”还是“隐性”