深度解析CAN-FD与CAN协议的差别
根据CAN规范ISO11898-2所定义的标准帧结构,一帧报文最大只能传输64位(8个字节)的数据,在最好的情况下总线负载达到70%左右,不过如果报文数据少于8个字节的情况下总线负载可能会更小。我们或者会提出疑问,为什么不可以把CAN标准的通信波特率改高一点呢?其实是有一个很重要的因素,CAN采用仲裁机制来判定不同节点CAN报文传输的优先级,在仲裁期同一总线上的所有节点必须在一个位的时间内到达。另一方面电信号有一个有限的传播速度。从大量经验中得出CAN总线以1Mbit/s运行的最长距离为40米。通信波特率越高,通信距离则越短。
CAN-FD与CAN主要区别
CAN-FD和CAN主要的区别有两点:
1、可变速率
CAN-FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。
2、新的数据场长度
CAN-FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
CAN-FD简介
1、CAN-FD 数据帧帧格式
CAN-FD 数据帧在控制场新添加EDL位、BRS位、ESI位,采用了新的DLC编码方式、新的CRC算法(CRC场扩展到21位)。CAN-FD数据帧格式如图 3所示。
2、新添加位介绍
EDL位:(Extended Data Length)原CAN数据帧中的保留位r, 该位功能为:
隐性:表示CAN-FD 报文 (采用新的DLC编码和CRC算法)
显性:表示CAN报文
BRS位:( Bit Rate Switch)该位功能为:
隐性:表示转换可变速率
显性:表示不转换速率
ESI(Error State Indicator),该位的功能为:
隐性:表示发送节点处于被动错误状态(Error Passive)
显性:表示发送节点处于主动错误状态(Error Active)
EDL位可以表示CAN报文还是CAN-FD报文;BRS表示位速率转换,该位为隐性位时,从BRS位到CRC界定符使用转换速率传输,其他位场使用标准位速率,该位为显性时,以正常的CAN-FD总线速率传输;通过添加ESI位,可以很方便的知道当前发送节点所处的状态。
3、新的CRC算法
CAN总线由于位填充规则对CRC的干扰,造成错帧漏检率未达到设计意图。CAN-FD对CRC算法作了改变,即CRC以含填充位的位流进行计算。在校验和部分为避免再有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。CAN-FD的CRC场扩展到了21位。由于数据场长度有很大变化区间,所以要根据DLC大小应用不同的CRC生成多项式,CRC_17,适合于帧长小于210位的帧,CRC_21,适适合于帧长小于1023位的帧。
4、新的DLC编码
CAN-FD 数据帧采用了新的新的DLC编码方式,在数据场长度在0-8个字节时,采用线性规则,数据场长度为12-64个字节时,使用非线性编码。如图 5所示。
广州致远电子股份有限公司是CAN-FD在中国的伙伴,ZLG致远电子在2009年就加入了CiA协会,是国内最早成为CiA会员公司的中国本土公司之一。ZLG致远电子示波器可支持CAN-FD协议解码功能,可助力您跟好的学习、研究、开发CAN-FD。
ZDS2024 Plus解码效果图
ZDS2024Plus 示波器
CAN-FDCAN协 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)