CAN总线规范 11898-1-优快云博客(参考道友的博客)
CAN总线协议11898包括:
本次要介绍的是11898-1,属于比较重要的协议,协议学习还看看原文档,第一手资料比较重要
该协议介绍了数据链路层和物理信号层上的内容,同时介绍了CAN总线的属性、电气特性等
前言部分:
介绍了数据链路层和物理层对应OSI(网络通信协议)经典模型中的层1和层2
该模型同样适用于TCP/IP通信 ,HTTP应用层、传输层TCP/UDP 、网络层IP、网络接口层
电气属性:
规定了两根差分信号,以高速CAN信号为例CAN_High和CAN_Low线上电压均为2.5V,当压差为0V时,表示显性,即逻辑0,当CAN_High为3.5V,CAN_Low为1.5V时,差值是2V时,为隐性,表示逻辑1.
总线架构(介绍了CAN数据类型、帧类型、CAN总线属性特点)
1 CAN数据类型:经典CAN、CANfd(传输速度超过CAN,1Mbit/s)、是否支持扩展(CAN base 、 CAN extend)
2 CAN帧类型
数据帧:传输数据
过载帧:告诉接收单元还未做好接受准备(中止一段时间数据帧发送)
远程帧/遥控帧:用于接收单元向具有相同ID的发送单元发送数据请求。
错误帧:检测出错误的是时候,通知其他帧错误帧,
间隔帧:将数据帧和远程帧与前面的帧分开
帧结构:
3 CAN总线特点:
分层架构
DLL和PL:如下分层
我做的项目中设计到下面层的有:
描述了三个层面的开发规范:物理层、数据链路层、交互层
然后就是一个网络相关诊断的规范(故障诊断开发需要看、bussof故障、超时故障)
物理层:(所有标准都要遵从 ISO 11898-1 -2 -5)
1比如说定义ECU通过双绞线正常通信速率是500kbit/s
2 Can收发器和can控制器推荐使用什么型号匹配
3定义了总线的can高和can低的电压(3.5 1.5)
4 差分电压上升沿和下降沿时间
5 can通信正常工作电压范围(不能过压和欠压工作,否则ecu就不能正常通信)
6 静电释放和过压保护的需求 ()测试最大电压等
推荐任何一个车身模块静电释放保护电压大于16KV
7 收发器(从传输到接收的时间延迟)回路延迟最大是300ns
数据链路层:
1 定义了一个位定时参数表,里面的内容和can控制器预分频系数的配置有关,比如说定义了采样位置、采样数量、位定时参数的最小值和最大值
2 can通信的数据帧格式要符合11898标准(can矩阵必须定中义DLC长度)
交互层
1 位格式和字节格式总共64个bit,大端还是小端传输接收、byteodertepy
2 报文发送方式
(周期(周期偏差不大于+-10% 小于20ms时候不大于+-百分之20 )、
事件(为了避免丢失,事件发送后重复发送多少次、每次间隔多少时间,规范定义了这些由整车厂确定,一般在can通信矩阵可以看到)
、周期事件:事件没发生就周期发送、事件发送就按事件报文发送
网络诊断:
1 定义了欠压过压恢复后要经过时间T,才开始网络相关诊断功能,定义了这个T的时间是多少(标称值1500ms,好像是恢复的这段时间可能不稳定才设置了一段这样的时间)
2 Busoff故障内容(以及故障发生条件):can协议定义了每个节点有一个错误计数器和接收错误计数器,检测到错误帧增加、发送和接收正确的后计数器减1。
3 ECU进入bussoff模式,需要执行:1初始化、2t时间内暂停发生报文尝试恢复(快恢复和慢恢复)3 恢复正常can通信
执行最多5次快恢复、任然存在错误转换到慢恢复(定义了这些时间值)
然后连续多少次的busoff模式,触发bussoff的超时监测(定义了这个次数)
3 节点超时故障,定义了检测到超时,多久时间应该存储故障码的最小时间、标称值、和最大值
CAN总线的知识点扩展:
总线型拓扑+广播发送机制——》导致发送冲突
此时需要总线仲裁(仲裁机制:逐位仲裁) 根据每个数据帧的唯一的数据ID
1 :线与机制
2 :回读机制
通信过程:
总线上的CAN报文,在总线空闲状态的时候,总线上的节点都会收到该报文,然后经过MAC层,MAC层就会进行错误检测、ACK应答、然后数据封装,
讲数据传输到LLC层,进行ID过滤,在该层中;LLC会进行过滤,判断是否是本节点需要的,需要就进行接收,往MCU进行发送,发送到应用层