CAN协议
作者:互联网
说在前面
CAN协议和CAN-FD协议笔记
参考文档
https://blog.csdn.net/qq_31710263/article/details/97015748
https://blog.csdn.net/liuligui5200/article/details/79030676
https://blog.csdn.net/LiuXF93/article/details/113954902?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2
背景
CAN是控制器域网 (Controller Area Network, CAN) 的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。
其模型结构只有3 层,即只取OSI 底层的物理层、数据链路层和传输层,保证了节点间无差错的数据传输。 CAN 总线上用“显性”(Dominant)和“隐性” (Recessive)两个互补的逻辑值表示“0”和“1”
如图所示,VCAN-H和VCAN-L为CAN总线收发器与总线之间的两接口引脚,信号是以两线之间的“差 分”电压形式出现。在隐性状态,VCNA-H和VCAN-L被固定在平均电压电平附近,Vdiff近似于0。显性位以大于最小阀值的差分电压表示。CAN 总线的通信距离最远可达10km(位速率为5 kbps) ,通信速率最快可达 1Mbps(此时最长通信距离为40m)。
架构
CAN由CAN控制器和CAN收发器还要CAN总线组成
CAN收发器:
协议
CAN以帧的形式进行通信,被称为CAN帧。
CAN的通信帧分成五种,分别为:
- 数据帧
- 远程帧
- 错误帧
- 过载帧
- 帧间隔
一个标准的CAN帧分为7段:
- 帧起始
- 仲裁段
- 控制端
- 数据段
- CRC段
- ACK段
- 帧结束
- 帧起始
由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;
- 帧结束
由7个隐形位(高电平)组成。
- 仲裁段
帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。
CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。
- 数据段
一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高。数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。
- 控制段
共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成如图下所示。
- CRC段
CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成如图28所示
- ACK段
当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平如图29所示。
CAN-FD
CAN FD具有四个主要优点:
- 增加数据长度
CAN FD 每个数据帧最多支持64个数据字节,而Classic CAN 支持8个数据字节。这减少了协议开销,并提高了协议效率。
- 速度提升
CAN FD支持双比特率:经典CAN中给定的标称(仲裁)比特率限制为1 Mbit / s,而数据比特率则取决于网络拓扑和收发器。实际上,可以实现高达5 Mbit / s的数据比特率。
- 改进的可靠性
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。例如,这对于车辆和工业自动化等对安全至关重要的应用至关重要。
- 平滑过渡
在某些条件下,可以混合使用CAN FD和经典CAN ECU。这样就可以逐步引入CAN FD节点,从而大大降低了OEM的成本和复杂性。
实际上,与经典CAN 相比,CAN FD可以将网络带宽提高3到8 倍,从而为数据增长提供了一种简单的解决方案。
CAN FD总线与CAN总线的区别主要在以下两个方面:
1. 可变速率:CAN FD采用了两种位速率。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同;
2. 新的数据场长度:CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
标签:协议,总线,电平,CRC,FD,数据,节点 来源: https://blog.csdn.net/liuhandd/article/details/123627809