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总线
    +关注

    关注

    146

    文章

    2050

    浏览量

    135499
  • 数据帧
    +关注

    关注

    0

    文章

    49

    浏览量

    7139
  • can报文
    +关注

    关注

    0

    文章

    4

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32各版本CAN控制器差异与代码移植

    ID最小的被先发,发送失败时无限次重传,且溢出时丢弃最先收到的报文。 其中can_rearbitration_limit_set设定的重新仲裁次数是
    发表于 04-01 17:38

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

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

    中科芯CKS32F107XX系列MCU的bxCAN介绍

    CKS32F107xx系列产品的bxCAN支持CAN协议2.0A和2.0B标准。 该CAN 控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN
    的头像 发表于 01-22 09:06 3958次阅读
    中科芯CKS32F107XX系列MCU的bxCAN介绍

    使用 g430 的 CAN 功能进行组网

    同时重传会加剧总线占用,部分设备因仲裁失败无法接收数据。单设备测试无竞争,多设备时冲突概率骤增。解决办法:用PCAN软件监测总线负载率,若超70%就减少非关键数据发送频率、合并小报文;调整G430的
    发表于 12-11 18:04

    AT32F系列 CAN通讯模式使用

    ;MCU发送出来的数据以及会实时体现在上图PCAN-tool的Receive窗内;除了PCAN-tool工具的监控外,MCU端还通过LED2的翻转来指示收到帧ID为0x400的报文,通过 LED4的翻转来指示MCU有在周期性的发送报文
    发表于 10-20 16:29

    CAN盒通讯失败的常见原因

    通过这种由外至内、从硬件到软件的逐层排查,我能够高效地定位并解决绝大多数CAN盒通讯故障。
    的头像 发表于 10-14 15:15 1761次阅读

    广成科技蓝牙转CAN模块的作用和应用场景

    蓝牙转CAN设备通常内置CAN通信接口电路和蓝牙通信模块。它实时监听CAN总线和蓝牙总线,当检测到CAN总线上有数据时,会立即对数据进行解析,并将其转换为蓝牙通信格式,通过蓝牙模块
    的头像 发表于 09-29 11:05 1161次阅读

    如何同时指定can硬件滤波器的只接收id为0 和id为3的报文呢?

    如何同时指定can硬件滤波器的 只接收id为0 和id为3的报文呢 我目前只会用 RT_CAN_FILTER_STD_INIT(3, RT_NULL, RT_NULL)去指定id为3的报文
    发表于 09-28 07:46

    CAN发送只能使用中断或者DMA,为什么?

    今天看了CAN发送的底层配置发现,rtt的CAN设备发送好像只能选择DMA或者中断的方式进行发送,这种设定是为什么呢? rt_device
    发表于 09-25 07:19

    移植CANfestival,发现can无法接收数据,为什么?

    通过can的上位机来发送报文,发现如下的情况 无论发送任何数据,发现rt_device_read返回值是0,查了一下函数返回值发现读取失败 然后我在下面一行打印接收到的数据 发现接
    发表于 09-11 07:46

    ProfiNet转CAN/CANopen网关技术详解

    CAN 报文,提供了更高的灵活性。 其核心工作原理是数据映射,即在网关内部建立 PROFINET IO 数据区与 CANopen 对象字典或 CAN 报文标识符之间的对应关
    的头像 发表于 08-26 16:54 908次阅读
    ProfiNet转<b class='flag-5'>CAN</b>/CANopen网关技术详解

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

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

    车载 CAN-Bus 数据记录仪

    “黑盒子 ”,会记录所有的CAN 数据,以便于事后进行故障分析。 SG-CAN-200R 是一款便携的 2 通道 CAN 总线记录仪,可脱离 PC 单独工作,内置存储卡, 可以长时间记录 CA
    的头像 发表于 07-15 14:13 937次阅读
    车载 <b class='flag-5'>CAN</b>-Bus 数据记录仪

    如何解决CAN通讯故障?原因分析与解决方法全攻略

    在日常工作中,我们经常收到客户的反馈,他们表示CAN卡无法正常通讯,这给工作带来了诸多不便。今天,就让我们深入探讨一下导致CAN卡通讯失败的常见原因,以及相应的解决方法。单个CAN设备
    的头像 发表于 06-16 11:39 2367次阅读
    如何解决<b class='flag-5'>CAN</b>通讯故障?原因分析与解决方法全攻略

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

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