【CAN总线协议】CAN和CANFD的区别、CAN FD帧结构解析
【CAN总线协议】CAN和CANFD的区别、CAN FD帧结构解析
1.概述
2.CANFD
2.1 CAN总线的局限性
2.2 CAN FD的改进
3.CAN FD与CAN 2.0的协议异同
3.1 定义不同
3.2 传输速率不同
3.3 数据长度不同
3.4 帧格式不同
3.5ID长度不同
4.CANFD帧结构解析
4.1 中贞走己女台
4.2.仲裁域
4.3 控制域
4.4 数据域
4.5 CRC
3.6 ACK
3.7 帧结尾
强烈推荐一位讲解CAN的博主:基础知识_口袋里のInit的博客-CSDN博客
can协议层学习参考链接如下,也是上述博主的,感觉CSDN解释CANFD都是借鉴这位博主哈哈哈
CAN总线(一)——CAN总线是什么,在哪用,怎么用?-CSDN博客
CAN总线(二)——CAN2.0标准与协议分析_can 协议规范有哪些-CSDN博客
CAN总线(三)——CAN FD协议及其与CAN2.0的异同_canfd和can 2.0-CSDN博客
1. 概述
CANFD:可以理解成CAN协议的升级版,只升级了协议,物理层未改变。
Can与CanFD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。
2. CANFD
CAN FD(CAN with Flexible Data rate)的引入正是为了克服传统CAN总线在数据量和速度方面的限制。
以下是CAN总线的局限性以及CAN FD的改进:
2.1 CAN总线的局限性
- 数据传输带宽受限:CAN 2.0的每帧数据段仅有8字节,数据速率最高为1 Mbit/s。通常车辆中使用的速率为500 kbit/s。随着车载电子控制单元(ECU)数量的增加,数据交互频繁,导致总线负载不断增加。
- 带宽利用率不高:在CAN报文中,只有约40-50%的带宽被用于实际的数据传输,其他时间被用于报文控制和错误检测。这在数据量大的应用场景中会导致通信效率低下。
- 响应机制延迟:由于汽车布线的物理特性,CAN总线的响应速度受到各种因素限制,包括控制器中的ACK确认延迟、收发器的传播延迟以及导线本身的传输延迟等。
2.2 CAN FD的改进
CAN FD协议在2011年开始开发,2015年被纳入ISO 11898-1标准。其主要改进包括:
- 增加数据段长度:CAN FD支持每帧最多64字节的数据段,而不是传统CAN的8字节,使得单次传输的有效数据量大幅提升。
- 动态数据速率:CAN FD允许在数据帧中采用不同的位速率。消息头保持原有速率,以确保与传统CAN兼容;在数据段和校验部分则可以采用更高的速率,从而实现更快的数据传输。
- 降低延迟,提高带宽利用率:CAN FD优化了帧结构和错误检测机制,提高了带宽利用效率,从而在同样的总线负载下提供更多的有效数据传输。
CAN FD的这些改进,使其能够适应更复杂的汽车应用场景,支持更大的数据吞吐量并减少总线负载。
3. CAN FD与CAN 2.0的协议异同
下图直观对比CAN FD与CAN 2.0,稍后从定义、传输速率、数据长度、帧格式、ID长度重点介绍。
3.1 定义不同
CAN
- Controller area network,即控制器区域(局域)网络;
- CAN总线是国际上应用较广泛的现场总线之一;
- 目前已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。
CAN-FD
- 英文为CAN with Flexible Data-Rate,翻译为 “可变速率的CAN” ;
- 经典CAN基础上增加传输速率,数据域可传输64Byte,也就是可变速的功能,简单说就是CAN的升级版。
3.2 传输速率不同
Can
- 最大传输速率1Mbps。
CanFD
- 速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps,如下图所示:
3.3 数据长度不同
Can
- 一帧数据最长8字节。
CanFD
-
一帧数据最长64字节,主要关注 DLC>8 时。
-
CAN FD 对数据场的长度作了很大的扩充:
DLC 最大支持 64 个字节,在 DLC 小于等于 8 时与原CAN 总线是一样的; 大于 8 时则有一个非线性的增长,最大的数据场长度可达 64 字节。
3.4 帧格式不同
CanFD
- CAN FD 新增FDF、BRS、ESI位:
- FDF:表示CAN报文还是CAN-FD报文。
- BRS:表示位速率转换,该位隐性时,速率可变(即BSR到CRC使用转换速率传输),该位为显性 时,以正常的CAN-FD总线速率传输(恒定速率);
- ESI:表示发送节点状态。
3.5 ID长度不同
CAN
- 标准帧ID长度最长11bit
CANFD
- 标准帧ID长度可扩展到12bit
4. CANFD帧结构解析
-
CAN FD节点可以正常收发CAN报文,但CAN节点不能正确收发CAN FD报文,因为其帧格式不一致。
-
与CAN一样,CAN FD一共具有:帧起始SOF,仲裁段,控制段,数据域,CRC域,ACK域,帧结束 共七个部分组成。
CAN FD的帧结构如下:
4.1 帧起始
-
CAN与CANFD使用相同的SOF标志位来标志报文的起始。
-
帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
4.2.仲裁域
-
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。
-
IDE用于区分标准帧和扩展帧。
4.3 控制域
-
CANFD与CAN有着相同的IDE,res,DLC位。同时增加了FDF、BRS、ESI三个bit位。FDF为隐性时,表示为CAN FD报文;
-
BRS为速率转换开关,当其隐性时,速率可变,当其显性时,以正常的CAN-FD总线速率传输(恒定速率);
-
ESI用于表示错误状态,主动错误发送显性位,被动错误发送隐性位。
4.4 数据域
CAN FD兼容CAN的数据格式,同时最大还能支持12, 16, 20, 24, 32, 48, 64byte。
4.5 CRC
-
CAN FD对CRC算法进行了改进,CRC对填充位也加入了计算。
-
在校验和部分为避免有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。
-
CAN FD的CRC场扩展到了21位。
3.6 ACK
ACK紧跟着CRC结束标识位。
不同的是,CAN FD支持2bits的ACK的识别。
3.7 帧结尾
- 与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
尊重原创,再次强调,原文链接:https://blog.csdn.net/wangguchao/article/details/124719188