大数跨境
0
0

CANFD每秒最多可以发送多少帧报文?CAN FD结构详解

CANFD每秒最多可以发送多少帧报文?CAN FD结构详解 汽车以太网技术研究实验室
2025-12-16
13
导读:CANFD每秒最多可以发送多少帧报文?CAN FD结构详解


点击蓝字

关注我们


我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。那么波特率更高,数据更长的CANFD,一秒钟最高可以发送多少帧CANFD报文呢?

想知道问题的答案,那么我们就要知道一帧CANFD报文由多少个位组成,再由具体波特率算出报文时间,最后就可以得出每秒能发送的帧数了。接下来,我们就一步步来算出答案。

要想知道CANFD报文由多少个位组成,那么我们就要了解CANFD帧结构,知道每个段占用位数从而得出CANFD报文位数。


帧结构

canfd_frame.png

如上图所示,分别为CANFD标准帧和扩展帧,其组成如下:

帧起始:起始信号,由1个显性位组成;

仲裁段:

  • SRR:替代CAN标准帧中的RTR位;

  • IDE:扩展帧标志位;

  • r1:保留位,为显性;

  • 标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位;

  • 扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位;

控制段:由EDL、r0、BRS、ESI、DLC总共8个位组成;

  • EDL:CANFD帧标识,CANFD为隐性, CAN为显性;

  • r0:保留位,为显性;

  • BRS:位速率切换,该位显性则仍采用仲裁域波特率;该位为隐性,则该位发送到采样点后,采用数据域波特率;

  • ESI:错误状态指示位,指示发送节点为主动错误状态(显性),还是被动错误状态(隐性);

  • DLC:数据段长度指示,4个位组成;

数据段:0 ~ 64字节,也就是0 ~ 512个位;

CRC段:由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)、CRC界定符(1位)组成,总共28或33位组成。

crc21.png

固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位;

  • 采用CRC17时,FSB为6个位;

  • 采用CRC21时,FSB为7个位;

填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成;

CRC:

  • 报文长度小于16时,采用CRC17,17位组成;

  • 报文长度大于16时,采用CRC21,21位组成;

CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率;

ACK段:由ACK位和ACK界定符位组成,总共2位;

  • ACK:接收节点应答位,接收节点应应答显性位;

  • ACK界定符,固定为隐性;

帧结束:固定为7个隐性位;

帧间隔:每次发送一帧报文后,需留3位时间作为帧间隔;


一帧CANFD报文位数

知道CANFD帧结构组成后,我们可以算出:

CANFD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)

从上述公式中可以看出,影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。那么我们通过帧类型、帧长度组合出不同情况报文位数:

  • 标准帧,数据0字节:

帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位

  • 标准帧,数据64字节:

帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位

  • 扩展帧,数据0字节:

帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位

  • 扩展帧,数据64字节:

帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位

仲裁域和数据域所占报文位数

由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。

  • 仲裁域波特率所占位数:

帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)

  • 数据域波特率所占位数:

控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)

主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率:

BRS位:由仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)组成;

CRC界定符:由数据域波特率 *  数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)组成;

我们此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。

位填充

当然,上述报文位数中,还未包含填充位个数。在CAN/CANFD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。

我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。

同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。

不同类型报文所占位数

基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示。

frame_bits.png

从上表可知:

当报文为CANFD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位。

当报文为CANFD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。


CANFD报文时间计算

最后,我们就可以根据波特率算出不同类型报文时间了,计算公式如下:

报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数

我们以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。

那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 =  1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CANFD标准加速帧,最多可以发送28089帧。

下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。

500K/2M波特率

500k_2M_frames.png

1M/5M波特率

1m_5m_frames.png

1M/8M波特率

1M_8M_frames.png


高性能CANFD接口卡

既然CANFD每秒最多可以发送28000帧报文(1M/5Mbps),那么什么样的设备可以能拥有如此高性能的收发能力呢?答案就是,致远电子最新发布八通道CANFD卡——USBCANFD-800U。

USBCANFD-800U采用创新型的ARM+FPGA架构,使得多路CANFD同时实现高性能收发。即使在1M/5M波特率下,也能够轻松实现满载收发不丢帧。

此外,其还具有硬件采集CAN总线负载、微秒级别的收发报文时间戳、微秒级别的定时发送精度等一系列特性,以满足用户的高阶需求


*免责声明:本文由作者原创或转发。如无意中侵犯了某方的知识产权,告之即删。以上图文来源于网络,如有侵权,请及时联系我们,我们将在24小时内删除。文章内容系作者个人观点,汽车以太网技术研究实验室转载仅为了传达一种不同的观点,不代表汽车以太网技术研究实验室对该观点赞同或支持,如果有任何异议,欢迎联系汽车以太网技术研究实验室。

原文链接:

https://blog.csdn.net/AQRSXIAO/article/details/139945129

【声明】内容源于网络
0
0
汽车以太网技术研究实验室
以客观、严谨的态度,讲解SOME/IP、AVB、TSN和SOA等相关知识。交流汽车以太网的最新资讯,包括网络、诊断、软件等。第一时间传递最新报道和深度解读。
内容 359
粉丝 0
汽车以太网技术研究实验室 以客观、严谨的态度,讲解SOME/IP、AVB、TSN和SOA等相关知识。交流汽车以太网的最新资讯,包括网络、诊断、软件等。第一时间传递最新报道和深度解读。
总阅读826
粉丝0
内容359