概述
can总线优点
- 成本
- 高实时性
- 高可靠性
- 售后服务
CAN总线标准
- OSI参考模型
应用层
数据链路层
物理层
- 底层标准
Bosch CAN2.0
ISO11898
- CAN总线底层标准与CAN实现的关系
典型拓扑图
数据链路层
概述
- 多主的基于优先级的总线访问
- 非破坏性的基于竞争的仲裁
- 远程数据请求
- 配置灵活性
- 错误检测
- 报文自动重发
- 临时与永久错误界定
缩写
通信机制
报文发送
- 检测总线状态
- 空闲
- 回读
- “线与”机制
- 显性位能够覆盖隐性位
- 通过ID进行仲裁(ID越小,报文优先级越高)
- 非破坏性仲裁
- 优先级低的报文节点退出后,在下次总线空闲时自动重发报文
报文接收过滤
- 报文滤波器
NRZ编码与位填充
- NRZ编码:确保报文紧凑、位填充
位填充
发送节点:5个相同极性位,插入一个极性相反的位
接收节点:相同极性位的数量进行检测,清除填充
数据帧
- 起始帧 SOF:用于同步、固定格式:一个显性位、总线空闲,才能发送
- ID:标识符
- 唯一确定一条报文:含义、可包含源目地址;仲裁优先级;
- 标准帧:11位;扩展帧:29位
- RTR位:区分数据帧(0)和远程帧(1)
- IDE位:区分标准帧(0,11位ID)和扩展帧(1,11+18位ID)
- SRR位(扩展帧中):代替了标准帧中的RTR,永远置1
- r0、r1位(扩展帧中):保留位、置0
- DLC:4位,数据场包含的字节数
- 数据场:0-8个字节长度(由DLC确定),包含CAN数据帧发送的内容
- CRC:CRC校验
- CEC界定符
- ACK:发送节点-》隐性,接收节点-》显性覆盖
- EOF:数据帧结束,7个连续的隐性位
- ITM:总线空闲,3个连续的隐性位
错误检测
-
位检测:位错误
-
填充检测:填充错误
-
CRC检测:CRC序列计算和接收的不同
-
ACK检测:ACK错误
-
错误检测:
-
- 发送节点:位错误、格式错误、ACK错误
-
- 接收节点错误:填充错误、格式错误、CRC错误
-
- 位错误、填充错误或ACK错误产生后——》错误标志在下一位发送
-
- CRC错误——》在ACK界定符后发送
-
错误界定
-
- 错误产生:REC增加,正确接收减少
-
- TEC同
-
- RET、TEC的数值会引发节点状态改变
-
节点状态
-
- 主动错误:6个连续显性位,正常通信
-
- 被动错误:6个 连续的隐性位,限制(连续2此报文发送)
-
- 总线关闭:不能收发任何报文
-
错误帧格式
-
- 包括错误标志与错误界定符(8个连续隐性位)
-
-
错误标志叠加
-
- 主动错误:破坏填充规则、破坏固定格式
-
- 被动错误:发送节点发送 诱发 接收节点;特例:仲裁期间,如果有其他节点发送、ACK期间
-