『7x24小时有问必答』
通过之前对CAN总线的学习,我们已了解到CAN总线的波特率最大为1Mbit/s,有效数据域最大为8个字节,编码方式,帧结构也有一定的格式和局限。而今天的CAN  FD在保持着原来CAN的优良特性的前提下,已大大突破了以上的局限,波特率可达到15Mbit/s,有效数据域达到64个字节,编码方式和帧结构也采用了新的格式和CRC算法。下面让我们来一一了解。

1.CAN  FD的可变数据位速率

在传统CAN中,一帧报文中各个位的传输速率都是一致的,即为50kbit/s1Mbit/s。而在CAN  FD中,一帧报文中数据段的波特率是可变的,且理论上最高可达15Mbit/s,具体是从控制场的BRS位到ACK场之前(含CRC分界符)这一段的波特率可变,其余部分仍使用原来的CAN速率,如下图所示。

2.CAN  FD的有效数据域达到64个字节

在传统CAN中,一数据帧报文中数据域为0~8个字节,即一帧报文中,传输的有效数据最多为8个字节。而在CAN  FD中,有效数据域已经扩展到64个字节,大大提高了一帧报文中有效数据所占的比例,所以说,CAN  FD的使用更加的灵活,快速,可靠。CANCAN  FD的数据帧格式如下图。

3.CAN  FD采用新的CRC算法

在传统CAN中,由于填充位规则对CRC的干扰,导致错帧漏检率无法达到设计的要求。而在CAN  FD中,CRC算法得到了修改,即CRC以含填充位的位流进行计算。在校验和部分,为了避免连续位超过6个,确定在第一位及以后每4位添加一个填充位加以分割,这个填充位上的值是上一位的反码。作为格式检查,如果填充位不是上一位的反码,就作出错处理。
由于数据域长度有很大的变化区间,所以需要根据DLC的大小应用不同的CRC生成多项式。CRC  field如下图。

4.CAN  FD采用了新的帧结构

CAN  FD数据帧在控制场中添加了EDL位,BRS位,ESI位,用于区分CAN报文与CAN  FD报文,并确定是否转换为可变速度等。相比于ISO  11898-1的线性编码方式,CAN  FDDLC编码方式是以阶梯式的向上增加,而非逐一向上的非线性编码,如下图。

CAN  FD采用了新的帧结构,其数据帧在控制场中添加了EDL位,BRS位,ESI位,用于区分CAN报文与CAN  FD报文,并确定是否转换为可变速度等。相比于ISO  11898-1的线性编码方式,CAN  FDDLC编码方式是以阶梯式的向上增加,而非逐一向上的非线性编码。

如下图所示是CANCAN  FD的帧结构。

从帧结构中可以看到,CAN  FD的控制场(Control  field)比CAN的多了3BitCRC场多了2/6bit。下面分别对帧起始(SOF仲裁域(Arbitration  field控制场(Control  field数据域(Data  field循环冗余校验(CRC  field应答域(ACK  field结束段(EOF进行一一讲解。

1
帧起始(SOF)

帧起始(SOF),用来指示一个数据帧的开始,占1bit,用于CAN  FD网络中节点设备的硬同步,且出现在隐性至显性的脉冲下降沿,与CAN类似。

2
仲裁域(Arbitration field)

仲裁域(Arbitration  field),由11位的标识符和一个保留位构成,用于表示确定的待传输消息,其数值也作为待传输消息的优先级。注意:同一个网络中,不允许出现有两个节点同时发送具有相同标识符但却包括不同数据内容的帧。

3
控制场(Control field)

控制场(Control  field),由9位组成,包括IDEEDLr0BRSESI以及4DLC(数据长度代码)。可以发现,CAN  FD的控制场相对CAN的多了EDL位,BRS位和ESI位。这三个位的作用如下:

EDL位(Extend  Data  Length):原CAN数据帧中的保留位r
<  隐性:表示CAN  FD报文(采用新的DLC编码和CRC算法)
<  显性:表示CAN报文

BRS位(Bit  Rate  Switch):
<  隐性:表示转换为可变速率
<  显性:表示不转换为可变速率

ESI位(Error  State  Indicator:
<  隐性:表示发送节点处于被动错误状态(Error  Passive
<  显性:表示发送节点处于主动错误状态(Error  Active

四位的DLC表示此帧在数据段中传输字节数,当DLC小于或等于8时,采用ISO  11898-1的线性编码方式,当DLC大于8时,采用阶梯式向上递增,而逐一向上的非线性编码方式,如下图所示。

4
数据域(Data field)

数据域(Data  field),由0~64位组成,且全部均为有效数据字节。通常,数据段的传输都是从第一个字节开始,并且是从每一个字节的最高有效位开始。

5
循环冗余校验(CRC field)

循环冗余校验(CRC  field),跟在数据域之后,由17位或21位CRC序列和1位CRC界定符组成。接收器可以利用CRC序列来识别是否接收了错误的数据。

6
应答域(ACK)

应答域(ACK),由1个应答间隙位和1个应答界定符位组成。发送节点在ACK处发两个隐性电平(1),而接收节点在ACK窗口开始时发一个显性电平(0)认可,为了容许速差转换造成可能的错误,收到2个重叠的0也是合法的,ACK之后有一位1作为ACK分界符。

7
结束段(EOF)

结束段(EOF),表示帧的结束,由7个隐性电平的位组成。在传输EOF段的过程中,网络的各个接收器还有最后一次发出错误帧的机会。

EOF段之后还必须插入一个帧间空间(IFS),IFS之后才能开始传输下一个帧。IFS由3个隐性电平位组成,且不属于前一条帧的组成单元。在IFS空间,网络中的发送器可以发送过载帧,以增加IFS的时间,延迟其他节点发送下一个帧。

虹科汽车电子感谢您的关注!
微信号:hongkeqiche
了解更多请戳www.hongkeqiche.com

点击下方“阅读原文”了解更多虹科信息
↓↓↓

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码