CANFD 协议在程序刷写中的研究与应用

2021-12-30 08:46潘文卿刘兴义王飞飞宋炳雨穆大芸
汽车电器 2021年12期
关键词:报文字节速率

潘文卿,刘兴义,王飞飞,宋炳雨,穆大芸

(潍柴动力股份有限公司,山东 潍坊 261061)

在汽车领域,因为功能越来越多,越来越复杂,负载率越来越高,传统CAN总线难以满足当前需求,又不可能直接放弃传统CAN总线技术,为了解决负载率问题还要兼容传统的CAN总线,CANFD应运而生。2011年BOSCH首次发布了CANFD(CAN with Flexible Data rate)方案,在满足CAN总线特性的基础上升级了波特率和数据长度的两大特性,在数据段传输时既可以提升速率又可以增加数据长度,最大可以一次传输64字节,大大节省了数据传输的时间,CANFD同时还继承了传统CAN的主要特性,采用双线串行通信协议,非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制。

1 CANFD简介

1.1 CANFD与CAN

对比传统的CAN[1]如图1所示。

1)CANFD不支持远程帧,所以原来RTR位用RRS替代,并且始终为显性位“0”。

2)为了区分CANFD与CAN,增加了FDF(FD Format)位,0表示传统CAN,1表示CANFD。

3)CANFD最显著的特征就是数据段可以提升传输速率,在CANFD仲裁场增加BRS(Bit Rate Switch)位,1表示进行速率切换,0表示不进行速率切换。

图1 CANFD帧格式

4)CANFD最大可传输64字节的数据,所以原来4个字节的DLC(Data Length Code)需要重新编码,既支持传统的CAN,也要支持最大64个字节的CANFD,具体编码方式见表1。

5)CRC(Cyclic Redundancy Check)校验在传统CAN的基础上进行了升级,如果数据段的长度大于16个字节时,CRC的长度为21bits,小于16个字节时,CRC的长度是17bits,CANFD对CRC算法做了改变。在校验和部分从第1位开始每4bits添加一个填充位加以分割,这个填充位的值是上一位的反码。

6)ESI(Error State Indicator)错误知识状态位,0表示CANFD节点处于主动报错状态,1表示CANFD节点处于被动报错状态[2]。

1.2 CANFD的波特率和采样点的配置

传统CAN仅有一套预分频方式,CANFD确定仲裁段预分频因子和数据段预分频因子有两种方式[3]:①两套独立的预分频配置方式,仲裁段预分频因子不等于数据段预分频因子。②一套共享的预分频配置方式,仲裁段预分频因子等于数据段预分频因子。

表1 CAN&CANFD DLC编码表

在研究和应用中发现如果采用第1种两套独立的预分频配置方式,采样会有误差,所以选用第2种配置方式。根据实际应用中基于单片机时钟配置,仲裁段和数据段设置相同的分频因子。同时考虑仲裁段和数据段的波特率都会在1Mb/s以上,为保证信号采集的准确性,采样点的配置需要大于80%以上。

2 CANFD数据传输理论计算

分析基于扩展帧格式的传统CAN和CANFD报文的传输时间理论上均以有效位计算,不考虑填充位。传统CAN通信,按照最大波特率1Mb/s,传输1bit的时间是1μs,报文数据长度是8字节,一帧不计算数据填充位的报文长度是128bits,传输一帧报文的时间是128μs。

根据实际应用中CANFD报文的仲裁段按照1Mb/s波特率配置,其中BRS速率切换指示位是数据段波特率加速过渡阶段,BRS阶段前半段为仲裁段,会采用仲裁段的波特率,后半段采用数据段的波特率,所以计算BRS的整体脉宽则是分别取两种波特率脉宽的一半,进行累加,CRC界定符同理[4]。仲裁段按照图1的帧格式计算传输时间为45μs,数据段按照不同的波特率和不同数据长度,传输时间见表2。

数据段按照2Mb/s波特率配置,传输一帧报文的时间按照两种波特率的配置方式计算,仲裁段是1μs/bit,数据段0.5μs/bit,按照传输数据的长度,如果是最大64字节数据,一帧报文仲裁段45bits,数据段543bits,传输一帧64字节数据的CANFD报文的时间是仲裁段45μs,数据段271.5μs,传输一帧数据是64字节的CANFD报文不考虑填充位的理论时间是45μs+271.5μs=316.5μs;如果是8字节数据,一帧报文仲裁段45bits,数据段91bits,传输一帧8字节数据的CANFD报文的时间是45μs+45.5μs=90.5μs。

表2 数据段不同配置对应报文时间

对比分析同样是一帧8字节数据的报文,传统CAN采用1Mb/s波特率,需要128μs;通过CANFD协议,仲裁段采用1Mb/s,数据段采用2Mb/s传输,需要90.5μs。整条报文的传输时间相较于传统CAN并未提升50%,仅仅提升了(128-90.5)/128=29.3%左右,原因主要有两点:①CANFD的数据长度加长了,传统CAN是128bits,CANFD是136bits;②数据传输时间提升是在数据段的91bits,仲裁段的45bits依然是按照1Mb/s的波特率,1μs/bit的时间传输。

CANFD在刷写中的理论计算如下。

如果要传输2048个字节的数据,按照传统的UDS刷写协议[6],采用传统CAN-1Mb/s的波特率传输,需要295条报文,理论计算用时295*128μs=37760μs。

采用CANFD协议,仲裁段1Mb/s,数据段2Mb/s,第一种情况:数据长度8字节,理论计算用时295*90.5μs=26697.5μs。第二种情况:最大数据长度是64字节,需要32条64字节报文,1条48字节报文,2条8字节报文;理论计算用时,32*316.5μs+252.5μs+2*90.5μs=10561.5μs。表3为CANFD数据传输中速率提升。

表3 CANFD数据传输中速率提升

通过理论计算分析可以得出,在传输2048个字节时,CANFD协议如果仅仅是提升数据段的波特率到2Mb/s,字节长度不变的情况下,相较于传统CAN速率会提升29.3%,这与前面分析的传输一帧报文的速率提升一致,当数据长度最大到64字节时,同样是传输2048字节的数据,数据段波特率为2Mb/s,相较于传统CAN,速率会提升72%。

3 CANFD在刷写中的实际应用

CANFD最大可支持的长度是64字节,标准的UDS刷写协议[6]是针对8字节的传统CAN,所以如果要用CANFD协议刷写,需要修改传统的数据传输协议,同时兼容8字节,最大64字节的数据长度。

3.1 传统ISO 15765-2协议的升级

相较于传统的ISO 15765-2协议,在CANFD协议刷写的过程中,需要通过数据长度来决定单帧的字节长度究竟是使用哪个字节来表示,如表4所示,如果CANFD协议传输的数据长度大于8,则通过Byte1来表示有效字节长度,如果是等于8的数据长度,依然使用传统的Byte0的Bit3-0表示有效字节长度[5]。

表4 ISO 15765-2升级

3.2 CANFD协议在刷写中的实际应用

图2是传统CAN采用1Mb/s波特率刷写一段完整的程序数据的报文记录,用时209.199s-17.941s=191.258s。

图2 传统CAN-1Mb/s刷写时间

同一段程序数据采用CANFD协议,仲裁段1Mb/s,数据段2Mb/s的波特率,最大是8字节的数据长度进行刷写,用时229.188s-66.000s=163.188s,如图3所示。

综合实际测试结果,数据段不同波特率和不同最大数据长度的情况下,同一段程序数据的刷写所用的时间和传统CAN波特率是1Mb/s的刷写时间及速率提升见表5。

图3 CANFD-1Mb/s-2Mb/s-8字节

表5 不同波特率不同数据长度下刷写情况

图4 CANFD-1Mb/s-2Mb/s擦除等待

图5 CAN-1Mb/s擦除等待

在实际刷写应用中,CANFD在提升数据段波特率和数据长度的情况下,提升速率与理论计算传输2048个字节的传输提升速率有偏差,主要是因为,在传统的刷写流程[6]中有写入等待,擦除等待,数据一致性校验等待,在线监测等时间优化是微小的,如图4和图5,分别截取了CANFD和传统CAN协议刷写过程擦除同一块Block时的擦除等待时间,可以通过时间戳看出,CANFD协议在刷写过程中的擦除等待时间如图4所示:72.380s-53.948s=18.432s,擦除同一块区域,传统CAN协议等待时间如图5所示,57.840s-38.455s=19.385s。CANFD协议与传统CAN协议在擦除同一块区域的时间仅仅差了19.385s-18.432s=0.953s,这个差距主要是因为CANFD协议数据段提升了速率,发送报文的时间短的优势。刷写的过程中是按照单片机的Block块进行擦除写入的,在擦写时会根据Block块的大小有不同的等待时间,在这些不可优化的流程上,CANFD是没有优势的,所以CANFD的优势在刷写流程中主要体现在数据传输过程中。

4 结论

本文介绍了CANFD协议相较于传统CAN的升级,以及分析了CANFD协议在数据段不同波特率,不同数据长度情况下一帧报文的传输时间的不同,比较了CANFD协议传输一帧8字节的报文和传统CAN传输一帧报文所用时间的差异和速率提升,CANFD在传输数据时波特率提升主要体现在数据段,仲裁段的波特率最大是1Mb/s。通过理论计算分析了传输同一块2048个字节的数据,CANFD协议在不同数据段波特率和数据长度下的用时和相较于传统CAN的速率提升。实际应用中,基于CANFD协议刷写功能的开发,在传统ISO 15765-2不满足数据长度的地方做了升级。刷写一段完整的程序数据,不同波特率和数据长度时分别做了时间戳的记录,分析计算不同情况下的用时,并针对理论计算的速度提升率和实际应用中速度的提升率差异作了分析。通过研究分析,CANFD协议在实际刷写过程中优势主要体现在数据传输阶段,在擦除和写入过程中的等待时间无法优化。

猜你喜欢
报文字节速率
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
No.11 字节跳动计划自研芯片:仅供内部使用
避免饥饿的CAN 总线高优先级反转算法
No.8 字节跳动将推出独立出口电商APP
基于报文类型的限速值动态调整
盘点高考化学反应速率与化学平衡三大考点
化学反应速率与化学平衡考点分析
人类进入“泽它时代”
通过提高心理速率改善记忆