0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【Z站推荐】CANFD每秒最多可以发送多少帧报文?

ZLG致远电子 2022-07-29 09:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 帧结构

e1778be2-0ecc-11ed-9ade-dac502259ad0.png

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

1. 帧起始:起始信号,由1个显性位组成。2. 仲裁段:

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

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

IDE:扩展帧标志位;

r1:保留位,为显性;

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

  • EDL:CANFD帧标识,为隐性;
  • r0:保留位,为显性;
  • BRS:位速率切换,该位显性则仍采用仲裁域波特率;该位为隐性,则该位发送到采样点后,采用数据域波特率;
  • ESI:错误状态指示位,指示发送节点为主动错误状态(显性),还是被动错误状态(隐性);

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

4. 数据段:0~64字节,也就是0~512个位。5. CRC段:由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)CRC界定符(1位)组成,总共28或33位组成。e18bc9d6-0ecc-11ed-9ade-dac502259ad0.png6. 固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。

采用CRC17时,FSB为6个位;

采用CRC21时,FSB为7个位;

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

8. CRC:

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

9. CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。10. ACK段:由ACK位和ACK界定符位组成,总共2位。

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

ACK界定符,固定为隐性;

11. 帧结束:固定为7个隐性位。
12. 帧间隔:每次发送一帧报文后,需留3位时间作为帧间隔。


e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 一帧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位


e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 仲裁域和数据域所占报文位数

由于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界定符采用数据域波特率以方便计算。

e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 位填充

当然,上述报文位数中,还未包含填充位个数。在CAN/CANFD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。同理,字节0xFF或0x00,其二进制位1111 1111或00000000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。

e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 不同类型报文所占位数

基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示。e1d62bfc-0ecc-11ed-9ade-dac502259ad0.png从上表可知:当报文为CANFD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位。当报文为CANFD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。

e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 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波特率

e1fb7416-0ecc-11ed-9ade-dac502259ad0.png1M/5M波特率

e20a508a-0ecc-11ed-9ade-dac502259ad0.png

1M/8M波特率

e215f296-0ecc-11ed-9ade-dac502259ad0.png

e171443a-0ecc-11ed-9ade-dac502259ad0.jpg 高性能CANFD接口

既然CANFD每秒最多可以发送28000帧报文(1M/5Mbps),那么什么样的设备可以能拥有如此高性能的收发能力呢?答案就是,致远电子最新发布八通道CANFD卡——USBCANFD-800U。USBCANFD-800U采用创新型的ARM+FPGA架构,使得多路CANFD同时实现高性能收发。即使在1M/5M波特率下,也能够轻松实现满载收发不丢帧。此外,其还具有硬件采集CAN总线负载、微秒级别的收发报文时间戳、微秒级别的定时发送精度等一系列特性,以满足用户的高阶需求。

e22f0218-0ecc-11ed-9ade-dac502259ad0.png

【版权声明】本文为ZLG开发者社区用户原创内容,未经授权不得转载。欢迎更多用户到社区交流互动、创作博文,一经采用,可获得百元京东E卡。

地址:https://developer.zlg.cn(长按复制到PC端打开)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    59

    文章

    3097

    浏览量

    473483
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    测试高温实验时出现睡眠唤醒后第三3C诊断报文未响应的情况,为什么?如何处理?

    54 31 00 CB,100,点亮,0 2、发送的间隔超过4s因此21这条点亮接收报文用作MCU的第一唤醒,再之后第二: 2025-07-16 06:48:00:.323,主机
    发表于 04-16 07:00

    是否可以在非从 CSI MIPI 接口发送的视频上使用 IMX8MP(Vivante ISP8000)的自动曝光算法?

    我想知道是否可以在非从 CSI MIPI 接口发送的视频上使用 IMX8MP(Vivante ISP8000)的自动曝光算法?具体来说,如果ISP8000来自外部相机的,我想使用自
    发表于 04-03 07:09

    CAN总线报错看不懂?5种错误+5步排查法一次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五种错误类型,并提供五步排查法,助你快速定位问题根源。错误的作用错误是CAN总线用于错误通知的报文。当任一节点检测到通信错误时,会立即
    的头像 发表于 03-16 11:36 410次阅读
    CAN总线报错看不懂?5种错误<b class='flag-5'>帧</b>+5步排查法一次讲清

    【瑞萨RA × Zephyr开发板评测】+ CANFD

    感谢【瑞萨RA x Zephyr评测】三、CAN模块测试_瑞萨 zephyr-CSDN博客 上述并未实现CANFD已经扩展接收 板子接线如下图: P401接CAN收发器TXD P402接CAN
    发表于 02-03 00:08

    RDMA设计31:RoCE v2 发送模块3

    本博文主要交流设计思路,在本博客已给出相关博文已100多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 (b)应答状态机 当 RoCE v2 发送模块检测到接收
    发表于 01-28 07:58

    RDMA设计29:RoCE v2 发送及接收模块设计2

    本博文主要交流设计思路,在本博客已给出相关博文约100篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 (1)RoCE v2 发送模块 RoCE v2 发送模块
    发表于 01-26 16:47

    【瑞萨FPB-RA6E2试用】【原创】【瑞萨RA × Zephyr开发板评测】+进阶级任务测试之CAN发送数据测试

    ;counter_frame, K_MSEC(100), NULL, NULL); k_sleep(K_MSEC(500)); } } 如上线程主要实现发送两条报文,一条是标准报文,ID为0x10,一条是扩展
    发表于 12-31 13:32

    modbus消息的模块化架构介绍

    MODBUS消息的模块化架构 1. 地址字段:通信寻址的核心 Modbus RTU协议采用单字节(8位)地址字段,支持1-247个从设备(0保留为广播地址)。 广播机制:地址0的报文会被所有从
    发表于 11-17 08:15

    【CPKCOR-RA8D1】+ 4. 解析CANFD 的DBC协议,破解整车厂奥秘

    DBC文件是一种集成了CAN和CANFD报文格式的数据库,和整车厂合作开发项目时,必定会接触到DBC文件,解析DBC文件是考验一个汽车诊断工程师的终极水平题目!!!!!! 手头上刚好有和宝马
    发表于 10-18 18:12

    【中科昊芯Core_DSC280025C开发板试用体验】+4. CAN外设调试(含源码)

    报文 调试与验证 我使用周立功的CAN盒进行数据数据收发通讯: 可以看到发报文发送时正常的,间隔时间也是200Ms 接线来打入断点,通过上位机发送
    发表于 08-05 20:46

    如何使用20829 can-fd发送64字节扩展标识符数据

    numberOfFIFOElements更改为16。 使用两个20829 EVK进行测试,最大传输数据大小为15个字节。DLC范围是0~15 uint32数据,但实际上,另一个节点每最多只能接收15个字节。 如何确保它们能够发送
    发表于 08-04 06:56

    stm32支持canfd和dma结合使用吗?

    stm32支持canfd和dma结合使用吗
    发表于 08-01 07:15

    CANFD节点的采样点如何测量?

    本文导读为提升CAN/CANFD网络的通信可靠性,各节点需尽可能配置合适且一致的采样点。然而在设备CAN通信采样点参数未知的情况下,如何验证各节点采样点设置的一致性?本文结合ZPS-CANFD设备
    的头像 发表于 07-31 11:34 1561次阅读
    <b class='flag-5'>CANFD</b>节点的采样点如何测量?

    CANFD 0 通道 2 上收到的所有消息传递到 CANFD 1 通道 0,是否可以使用 DAM 通道?

    你好 我正在尝试将 CANFD 0 通道 2 上收到的所有消息传递到 CANFD 1 通道 0,是否可以使用 DAM 通道?如何。 我在配置 CANFD 1 通道 0 中的源 FiFo
    发表于 07-14 06:56

    ATS失效请求报文问题的故障排除步骤

    本篇文章提供了解决 ATS 失效请求报文问题的故障排除步骤,主要聚焦在 CQ 接口上未显示主机发送报文的情况。
    的头像 发表于 06-09 15:17 1926次阅读
    ATS失效请求<b class='flag-5'>报文</b>问题的故障排除步骤