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

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

3天内不再提示

一帧CAN报文多少字节

麦辣鸡腿堡 来源:美男子玩编 作者:不脱发的程序猿 2023-07-18 10:48 次阅读

一帧CAN FD报文位数

根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:

CAN FD报文位数 = 帧起始(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界定符采用数据域波特率以方便计算。

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

    关注

    3000

    文章

    7462

    浏览量

    161602
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2471

    浏览量

    459310
  • 报文
    +关注

    关注

    0

    文章

    31

    浏览量

    3968
收藏 人收藏

    评论

    相关推荐

    TC364&TJA1145特定CAN报文丢失怎么解决?

    客户现场进行急加速和急减速过程中,出现了特定ID的报文丢失,其它报文发送正常,CAN块用的工具配置生成,家里进行测试Busoff后能正常恢复,从来没有碰到过这种丢
    发表于 01-23 06:03

    关于can模块的发送报文问题。

    本人使用英飞凌的xc886单片机,此单片机内含muliCAN模块。请教下:can发送报文能连续发多个报文吗(非FIFO模式,就是一帧一帧的发
    发表于 11-23 15:47

    can协议 发送自动重传的问题

    最近,在调试STM32的can总线,遇到个问题,can发送报文时,有个自动重传模式。也就是can
    发表于 01-02 10:23

    如何确保平铺顺序结构上一帧数据都处理完才进入下一帧

    在进行数据处理时,下一帧会用到上一帧计算出的数据,但是上一帧有好多输出的时候,有些数据并没有处理出来,就进入了下一帧,导致最后结果错误。该怎么办么?加了等待时间什么的,也不管用…
    发表于 02-27 10:39

    有关串行通信里面一帧一帧发送数据的问题!!!!

    我想实现一帧一帧的发送数据,一帧发送数据的长度可以自己定义,请问要怎么修改一帧发送数据的长度啊?怎么实现啊?
    发表于 07-26 10:29

    k60单片机can通讯如何使用多个邮箱接收报文

    飞思卡尔的K60单片机CAN模块共有16个邮箱,那么如何使用多个邮箱来接收CAN消息呢?比如邮箱MB1,MB2,MB3初始为接收邮箱,并且都清空,当第一帧消息来时,报文存入MB1,第二
    发表于 12-08 16:56

    关于CAN发送的问题

    现在我的设备需要发送3共24个字节的数据给上位机,但是在上位机的通讯要求中只给了报文ID 0X1FD08063,我以前只试过用三个报文
    发表于 12-19 16:42

    Can通讯检测,根据协议发送请求多,只能收到第一帧,请问这是为什么?如何解决?

    用NI的xnet卡 来做can检测我作为Tester 发送 1X XX XX XX 。。。。发多指令。在送3X XX XX。。流控制,等待多连续
    发表于 07-02 16:31

    请问STM32F4的OTG模块一帧内32最大可以传输多少字节给PC?

    我使用的是OTG_FS的bulk方式传输,PC为主机,单片机为设备。1:一帧内32最大可以传输多少字节给PC?一帧内可以传输多少次事务,次事务传输可以传输多少个数据包,
    发表于 11-14 09:03

    can总线报文的数据结构原理

    CAN 总线的报文传输是通过 4 种不同类型的(Frame)来表示和控制的:• 数据(Data Frame) 用来在数据传输过程中携带数据。• 远程
    发表于 12-17 10:59

    CAN报文定义

    1. CAN报文定义CAN报文是指发送单元向接受单元传送数据的。我们通常所说的CAN
    发表于 09-14 09:23

    CAN报文的单次发送和循环发送问题请教

    CAN报文怎样设置单次发送和循环发送?类似图片可以单次发送也可以循环发送,循环时间也可以修改,数据内容也可以修改问题关键在于多报文怎样去设置?当前的思路是每一帧
    发表于 10-26 11:54

    为什么一帧数据之间有几十ms的间隔呢?

    代码如下:发送400左右个字节rt_device_write(dev, 0, USART3_TX_BUF, n);然后串口调试助手显示如下:问题1:为什么一帧数据之间有几十ms的间隔呢?这样导致我
    发表于 08-08 10:16

    S32G2 FlexCAN CAN FD使用DMA接收字节顺序错误的原因?怎么解决?

    我在 goldbox 上以 DMA 模式使用 flexcan 时遇到字节字节序错误。因为没有DMA,发送正常。当接收到第一帧CAN FD报文
    发表于 04-27 07:09

    CAN报文为什么会发送失败?

    CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送失败的问题来做一次探讨。在了解CAN
    的头像 发表于 04-12 08:25 208次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>报文</b>为什么会发送失败?