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

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

3天内不再提示

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

ZLG致远电子 2024-04-12 08:25 次阅读

CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送失败的问题来做一次探讨。

在了解CAN报文为什么会发送失败之前我们先看看一帧标准的CAN报文到底应该是怎么样的。表1是一帧正常标准数据帧的报文组成。
表1 标准数据帧报文格式组成24143244-f863-11ee-9118-92fbcf53809c.png

24197de4-f863-11ee-9118-92fbcf53809c.jpg

图1 标准数据帧格式CAN总线是一种基于广播的通讯方式,为了保证总线上的每一个正常节点都能正确的接收到报文,报文的发送者要求至少一个接收节点在报文发送结束前要作出应答,这也是报文里ACK存在的原因。

一帧CAN报文中ACK段长度为2个位,包含应答间隙(ACK Slot)和应答界定符(ACK Delimter)。在应答场里,发送器发送两个隐性位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK Slot)期间(发送ACK信号)向发送器发送一“显性”的位以示应答。

应答间隙:所有接收到匹配CRC序列(CRC SEQUENCE)的站会在应答间隙(ACK Slot)期间用一显性的位写入发送器的隐性位来作出回答。

应答界定符:ACK界定符是ACK场的第二个位,并且是一个必须为隐性的位。因此,应答间隙(ACK Slot)被两个隐性的位所包围,也就是CRC界定符(CRC Delimter)和ACK界定符(ACK Delimter)。

241d1c2e-f863-11ee-9118-92fbcf53809c.png

图2 正常ACK段报文

而如果总线上没有ACK应答(即应答间隙为隐性),发送器就会发送一个错误标志,并且发送错误计数器值加8,节点就会对报文进行自动重发,若自动重发依然收不到ACK,则在发送错误计数器计数满128后(即出现16帧错误帧),由错误主动转为错误被动状态,如图3所示。那导致ACK段出错的原因有哪些呢?下面小编总结了一些。

  • 总线上只有一个有效节点:发送报文的节点在发送出一帧报文后会检测总线上应答间隙的状态,如果检测到应答间隙为隐性位,则表示该帧报文没有得到ACK,发送失败,需要重发,而由于发送错误计数器会在发送失败后累加,直到该节点关闭。所以,当总线上只有一个有效节点时,这个节点是发不出去数据的,因为它所发出的数据帧中的ACK Slot没有另外一个节点来填充,将永远是隐性位,这个节点会一直重发数据直到发送成功或发送被取消。
  • 波特率不匹配或者节点没有初始化,导致没有ACK;
  • 总线线缆短路,断路,接反;
  • 高速CAN总线上接的节点不是高速CAN,而是容错低速CAN,导致不匹配。

24205d76-f863-11ee-9118-92fbcf53809c.jpg

图3 应答界定符错误帧242459c6-f863-11ee-9118-92fbcf53809c.png

图4 没有ACK的报文

当你在调试CAN总线时出现节点发送报文失败的情况时,一定要检查是不是以上几点疏漏导致你的总线上ACK异常。而借助恰当的仪器,可以在查找CAN总线错误时事半功倍。图4即采用致远电子的CANScope来对错误帧进行标记,同时找到错误帧对应的波形来查找出错误情况。CANScope还可以对CAN总线物理层、数据链路层、应用层做一系列的测试,为CAN工程师解决测试难题。

243449d0-f863-11ee-9118-92fbcf53809c.jpg

图5 CANScope测试项目

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

    关注

    145

    文章

    1812

    浏览量

    129600
  • 数据帧
    +关注

    关注

    0

    文章

    33

    浏览量

    6647
  • can报文
    +关注

    关注

    0

    文章

    3

    浏览量

    2287
收藏 人收藏

    评论

    相关推荐

    CAN报文格式和发送总流程

    在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
    发表于 04-11 10:07 352次阅读
    <b class='flag-5'>CAN</b>的<b class='flag-5'>报文</b>格式和<b class='flag-5'>发送</b>总流程

    TC275多路CAN节点,报文接收时需要开启多路的CAN接收中断吗?

    TC275配置使用一路CAN0时,收发都可以,收报文是开启的CAN0接收中断,然后接收报文;现在使用两路CAN
    发表于 02-20 08:27

    TC387模块CAN0的节点2作为CANA使用,CANA既收不到报文也发不出报文如何解决?

    TC387模块CAN0的节点2作为CANA使用,CAN1的节点0作为CANB使用,配置基本相同。但CANB的通信正常,而在TJA1145正常情形下,CANA既收不到报文,也发不出报文
    发表于 02-19 06:43

    MCU怎样判断CAN发送状态?

    (); } 如此配置发现在一帧报文发送完了后,不能进入can发送中断, 2、能有别的标志位来判断can
    发表于 02-18 08:33

    CAN FD在发送报文时会有发不出去的现象怎么解决?

    现象描述: 在发送多帧报文数据时,出现了较为严重的报文丢失现象。编写测试程序,在for循环中循环发送id为0-7ff的报文,对返回值进行了判
    发表于 02-02 07:48

    使用CYT2B75芯片CANFD模块无法发送消息是什么原因导致的呢?

    你好,我使用SDL的example中的CANFD代码测试CYT2B75芯片CANFD模块,对部分代码进行了硬件适配修改,详见附件,配置为每秒发送一次CAN报文。 问题:消息发送
    发表于 02-02 06:57

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

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

    TSMaster报文发送的信号生成器操作说明

    信号生成器功能是TSMaster分析中的报文发送模块。信号生成器用于发送和配置每个CAN/LIN信号的值变化行为,简而言之,这是一个可以控制和调整C
    的头像 发表于 12-23 08:21 334次阅读
    TSMaster<b class='flag-5'>报文</b><b class='flag-5'>发送</b>的信号生成器操作说明

    S32K144搭载S32K1XX_MCAL4_2_RTM_1_0_6以及S32DS编译软件使用CAN模块无法发送报文怎么解决?

    下的MCAL422_EB_project,编译环境使用的是S32 Design Studio for S32 Platform 3.4,主工程如附件文件夹下的MCAL422_S32DS_project。不知是否可以检查我的项目哪里配置或使用不当导致CAN报文
    发表于 11-13 08:29

    车载时钟同步can_tsync同步原理

    master在t01时刻以广播的形式发送一个sync报文,并把时间秒部分的时间放到报文上,发送到time slave;使用can conf
    的头像 发表于 10-27 14:32 1083次阅读
    车载时钟同步<b class='flag-5'>can</b>_tsync同步原理

    求一种基于infineonPSOC62开发板的多功能CAN报文记录仪设计方案

    在汽车领域,经常会涉及到CAN报文收发,目前应用最广泛的就是是CAN2.0B协议。CAN报文对整车控制起着至关重要的作用。
    的头像 发表于 07-18 16:17 762次阅读
    求一种基于infineonPSOC62开发板的多功能<b class='flag-5'>CAN</b><b class='flag-5'>报文</b>记录仪设计方案

    CAN FD报文时间计算

    1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。 那么一秒钟最多可以发送报文呢?由于报文发送成功
    的头像 发表于 07-18 10:49 1514次阅读
    <b class='flag-5'>CAN</b> FD<b class='flag-5'>报文</b>时间计算

    一帧CAN报文多少字节

    一帧CAN FD报文位数 根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数: CAN
    的头像 发表于 07-18 10:48 4851次阅读

    M453单片机的CAN中断接力发送发送报文数量丢失怎么解决?

    1、我使用新唐M453单片机,使用CAN1进行实验,将CAN1的后4个报文缓存RAM做为发送缓冲区来使用。通过线程启动报文
    发表于 06-15 07:26

    CAN报文固定协议转发教程

    CAN总线通信的应用领域中,很多客户需要将CANID 放在CAN报文中,这样更方便接入不同的设备,有利于用户通过模块更方便的组建自己的网络,使用自定的应用协议。但是要实现这样的应用,用户往往需要
    的头像 发表于 05-12 10:40 604次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>报文</b>固定协议转发教程