[STM32F1] 为什么在用F103VET6做CAN通讯测试时消息偶尔会丢掉

[复制链接]
517|14
公羊子丹 发表于 2025-9-13 07:17 | 显示全部楼层 |阅读模式
两个节点互发数据,发现总有个别帧接收不到。
Clyde011 发表于 2025-9-13 07:22 | 显示全部楼层
可以加个错误计数调试。
 楼主| 公羊子丹 发表于 2025-9-13 07:23 | 显示全部楼层
会不会是滤波器配置不对?
周半梅 发表于 2025-9-13 07:24 | 显示全部楼层
我感觉可能是仲裁冲突。
帛灿灿 发表于 2025-9-13 07:25 | 显示全部楼层
试试降低波特率?
童雨竹 发表于 2025-9-13 07:26 | 显示全部楼层
终端电阻加了吗?
万图 发表于 2025-9-13 07:28 | 显示全部楼层
我也遇到过丢帧的情况。
Wordsworth 发表于 2025-9-13 07:29 | 显示全部楼层
是不是FIFO溢出了?
Bblythe 发表于 2025-9-13 07:30 | 显示全部楼层
数据线是不是有干扰?
Pulitzer 发表于 2025-9-13 07:31 | 显示全部楼层
多发几次看看规律。
Uriah 发表于 2025-9-13 07:32 | 显示全部楼层
我觉得收发器电源有关系。
galaxyYIN 发表于 2025-9-24 11:43 | 显示全部楼层
以下是可能导致CAN通讯丢帧的常见原因及解决方案

两个节点的波特率计算参数不一致(如分频值、BS1/BS2时间段),建议:使用相同的波特率计算工具,确保时钟配置一致

当总线利用率超过70%时可能丢帧,建议降低发送频率或优化ID过滤设置

终端电阻缺失(120Ω)或接触不良,PCB布局问题导致信号反射(建议检查走线长度和匹配)

软件处理延迟,接收FIFO溢出(未及时读取邮箱),建议:优化中断服务程序,及时处理接收数据

未使用双绞线或屏蔽层接地不良,可以通过示波器观察总线波形质量

排查步骤建议:

先确认物理层波形正常

检查双方波特率寄存器配置值是否相同

测试低负载状态下是否仍会丢帧

启用错误中断监测错误计数器

调整总线波特率容差(建议控制在1%以内),并增加重发机制。
probedog 发表于 2025-9-24 15:21 | 显示全部楼层
终端电阻可能不匹配。
stormwind123 发表于 2025-9-24 16:21 | 显示全部楼层
总线两端各接一个120Ω终端电阻。
stormwind123 发表于 2025-9-24 17:22 | 显示全部楼层
用示波器检查CAN_H和CAN_L的差分电压,正常应为1.5V~3.5V,无振铃或过冲。
七毛钱 发表于 2025-9-24 17:23 | 显示全部楼层
收发器供电是否稳定。
内政奇才 发表于 2025-9-24 18:23 | 显示全部楼层
收发器电源加100nF~10μF去耦电容,靠近芯片引脚放置。
海滨消消 发表于 2025-9-24 19:24 | 显示全部楼层
可能是CAN_H/CAN_L走线过长、未做阻抗匹配。
豌豆爹 发表于 2025-9-24 20:25 | 显示全部楼层
地线干扰?
麻花油条 发表于 2025-9-24 17:25 | 显示全部楼层
CAN波特率配置可能存在错误吧。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

199

主题

6523

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部