[STM32F1] F103的CAN通讯时不时掉一帧,咋查?

[复制链接]
966|15
 楼主| 童雨竹 发表于 2025-5-18 08:04 | 显示全部楼层 |阅读模式
发了几十帧总有一帧发不出去,开了中断调试半天,也没找到是哪段卡住了。
Clyde011 发表于 2025-5-18 08:08 | 显示全部楼层
建议打开CAN状态寄存器看看。
公羊子丹 发表于 2025-5-18 08:09 | 显示全部楼层
是不是FIFO溢出了?
周半梅 发表于 2025-5-18 08:09 | 显示全部楼层
接收那边有没有ACK回给你?
帛灿灿 发表于 2025-5-18 08:10 | 显示全部楼层
波特率匹配确认过了吗?
 楼主| 童雨竹 发表于 2025-5-18 08:11 | 显示全部楼层
CAN滤波器有没有误设置?
万图 发表于 2025-5-18 08:11 | 显示全部楼层
有时候是驱动芯片接地没对好。
Wordsworth 发表于 2025-5-18 08:12 | 显示全部楼层
看看是不是中断处理太慢了。
Bblythe 发表于 2025-5-18 08:13 | 显示全部楼层
加了延时反而稳定了,我也奇怪。
Pulitzer 发表于 2025-5-18 08:14 | 显示全部楼层
我的问题是CAN_TX引脚没接对。
Uriah 发表于 2025-5-18 08:15 | 显示全部楼层
用逻辑分析仪抓下帧比较准。
hehhehee 发表于 2025-5-31 17:49 | 显示全部楼层
利用示波器或CAN分析仪抓包分析帧丢失的时机和总线状况。
三生万物 发表于 2025-6-9 18:30 | 显示全部楼层
CAN总线两端必须接120Ω终端电阻,若电阻值不正确,信号可能会发生反射,导致数据失真或丢失。在设计和部署CAN总线时,要注意电阻的质量与连接的可靠性,避免因电阻设置不当导致通信不稳定
冰春彩落下 发表于 2025-6-9 19:00 | 显示全部楼层
隐性电平(空闲状态)时,CANH≈2.5V,CANL≈2.5V;显性电平(传输状态)时,CANH≈3.5V,CANL≈1.5V。若电平异常,需检查CAN收发器(如TJA1050)是否损坏,或供电是否稳定
别乱了阵脚 发表于 2025-6-9 21:00 | 显示全部楼层
确认所有节点的波特率一致(包括同步段、位时间段等参数)。使用STM32CubeMX或示波器校准波特率,确保实际速率与配置一致
远山寻你 发表于 2025-6-9 22:32 | 显示全部楼层
检查CAN过滤器设置,确保接收节点能正确识别发送节点的ID。
夜阑风雨 发表于 2025-6-9 23:00 | 显示全部楼层
在CANH/CANL上加磁环或共模电感,抑制高频噪声。增加TVS二极管(如SMAJ33CA)保护总线免受浪涌冲击
淡漠安然 发表于 2025-6-10 01:00 | 显示全部楼层
使用双绞屏蔽线(CANH/CANL),避免与电源线平行走线,减少干扰。保证良好的接地设计,避免由于接地不良或电气干扰导致信号失真
江河千里 发表于 2025-6-10 08:00 | 显示全部楼层
若使用中断或DMA,需正确配置优先级和缓冲区,避免数据溢出或丢失。合理配置缓冲区大小,避免因缓冲区溢出导致数据丢失
光辉梦境 发表于 2025-6-10 10:00 | 显示全部楼层
加强错误处理机制,确保当出现通信错误或总线故障时,能够及时捕捉并采取相应的恢复措施。例如启用错误中断(如CAN_IT_ERROR),并在中断中处理总线关闭(Bus-Off)状态,自动恢复通信
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

6217

帖子

2

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