CAN总线相关

  • 汽车网络协议OSI模型划分

 

 

 

 

  • CAN网络硬件连接

          

 

灰色框中结构为一个Node(节点)//节点一般与ECU等同

节点一般包括:

1.微控制器(提供需要发送的数据,读取接收到的经过CAN控制器转换后的二进制数据(来自CAN总线上的位数据))<微控制器外接传感器、执行器>

2.CAN控制器(完成二进制数据与位电流之间的转换)(将传输的数据转化为报文帧,再将报文帧转化为位电平的形式)

3.CAN收发器

 

  • CAN报文在数据链路层传输的数据帧结构

SOF位置:显性,代表帧起始,总线空闲时发送

RTR位:显性——数据帧;隐性——远程帧(数据帧与对应远程帧ID一致,总线通过RTR位来仲裁数据帧优先级高于远程帧)

 IDE位:显性——标准帧;隐性——扩展帧

 ACK位:显性——应答; 隐性——无应答

CRC段用于存放CRC校验码 

CRC分隔符位给ECU提供时间和空间来计算CRC

ACK应答需要时间,由ACK分隔符提供

只有数据帧和远程帧之间有帧间空间(3个连续隐性位),CAN总线允许新的报文发送,如果没有报文发送则总线进入空闲状态

报文接收节点发送远程帧请求,然后报文发送节点发送数据帧

位填充存在于数据帧和远程帧的帧起始与CRC域之间(包括帧起始和CRC域、不包括CRC界定符)

 

 

 

  •  终端电阻

终端电阻的目的:CAN总线在显性状态时为寄生电容充电,进入隐性状态时寄生电容需要放电,加终端电阻加速寄生电容放电,使波形更接近方波;  吸收传输线反射能量,避免多次反射产生振铃现象。

终端电阻为何选取两个120Ω左右电阻并联:经实验测量CAN使用的传输线(双绞线)阻抗约为120Ω,根据传输线理论知识,可知终端电阻等于线缆阻抗时可消除终端产生的反射能量。

 

 

 

 

  • CAN-H和CAN-L是3.5V与1.5V的原因

 

 

  • Intel字节组织顺序(流格式)

 

表27表示,Intel方式的比特流排序示意;图7表示CAN FD线上实际顺序。

 

 

 

 

 

  •  SecOC(Secure Onboard Communication//车载通信安全)流程

 

其中MAC代表Message Authentication Code,即消息认证码

 

  • CRC循环冗余校验

发送方处理发送报文方式以及CRC校验码的计算过程

接收方判断是否误码

 

  •  位填充

位填充为了防止突发错误而设定;

发送方:当同样的电平持续 5 位时,则添加一个位的反型数据

接收方:当同样的电平持续 5 位时,删除后一位还原 原数据

为什么可以防止突发错误?
因为CAN总线是NRZ编码的。位填充可以确保至少每6个位时间就会产生跳变沿,这样的话才能让接收端的锁相环保持与发送端同步。
//锁相环实现同步方法原理(未学习)
  •  位时间、同步、位定时参考

参考https://blog.csdn.net/laifengyuan1/article/details/123428766

  •  CAN总线仲裁

当ECU检测到总线上连续11个及以上隐性位(指逻辑值为1,CAN-H与CAN-L电压差在0.5V以内)时,判定为总线处于空闲状态

引用https://zhuanlan.zhihu.com/p/549534554

总结:各ECU连接总线,采用线与方式实施仲裁,各ECU同时发送报文,显性码元(0码)优先仲裁(CAN收发器中有回采机制,采集总线数据并与发数据对比,如果不同则从仲裁机制中退出),通过这种方式各ECU发送的报文中只有较小的报文得以成功发送,由于上述特性使得报文标识符(报文ID)较小的报文先发(即优先级更高)

 

  • 总线负载率控制

总线负载过高,那么一个优先级相对低的节点需要发送报文时,会出现频繁的仲裁失败而导致发送延迟过大,ECU长时间没有接收到该有的报文会认为发生错误。因此,为了保证低优先级报文传输延迟在可接受的范围内,总线负载率不应超过30%。当负载率大于40%时,CAN通讯稳定性开始衰减,大于65%时,稳定性衰减加剧,超过98%时网络瘫痪。

 

  • can总线错误类型

1.主动错误  //ECU收到错误的报文,非自身错误,该ECU仍可以正常通信
2.被动错误  //ECU自身故障,该ECU可以通信,只发送被动错误标志
3.busoff(脱离总线) //ECU脱离总线,ECU可能仍在工作但该节点Controller关闭 不收发报文,进行快/慢恢复尝试恢复正常状态

busoff参考自https://zhuanlan.zhihu.com/p/499270596

 

  • 错误帧

 

 

主动错误标志位的由来:所有节点同时报主动错误,就是6个显性叠加,还是6个显性位;一个节点发6个显性,其他所有正常节点判定为填充错误开始发送主动错误标志位,发送6个显性位,6+6=12

 

posted @ 2022-09-05 15:20  DNW12580  阅读(323)  评论(0编辑  收藏  举报