找回密码
 立即注册
查看: 153|回复: 3

关于CAN通讯接收的数据的处理

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2025-3-21 11:10:00 | 显示全部楼层 |阅读模式
大家好,我用STC的CAN做了一个接收数据,再回复的板子,
每几十秒收一次数据,然后马上回复,
程序是用例程《CAN总线标准帧收发测试》(汇编)改的,程序的工作过程是这样的,
1、CAN总线收到数据,置位一个标志。
2、一个4mS的中断去读这个标志,有数据,就读出。
3、识别是否是发给自己的数据,是的话,就把回复的数据写入发送缓冲区.
4、另一个4mS的中断,读发送缓冲区中是否有数据,有的话,就写入CAN发送缓冲区,启动CAN发送。

在实际测试中发现有时不回复,几个小时才出现一次,我还没有用示波器抓到是哪个环节出了问题。
我看例程中,每次发送数据之前,都会检测当前CAN是否在BUS-OFF 状态,是的话就清零MR的RM位,
退出这个状态。如果CAN处于BUS-OFF 状态的话,是不是就不能接受数据了?
我是否可以在一个中断中,每过一段时间,去检测CAN是否处于BUS-OFF 状态状态,
如果处于BUS-OFF 状态状态的话,就执行退出BUS-OFF 状态?

回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-21 11:12:00 | 显示全部楼层
关于您提到的CAN通讯接收数据处理的异常情况,建议从以下几个方面进行排查:<br><br>1. CAN总线状态检测:在发送数据前,确保检测CAN控制器是否处于接收(RX)状态。如果CAN控制器正在接收数据,直接发送可能会导致冲突或数据丢失。建议在发送前增加状态检测逻辑,确保CAN控制器处于空闲状态。<br><br>2. 中断优先级与冲突:您提到使用了两个4ms中断处理接收和发送。建议检查中断优先级设置,确保接收中断优先级高于发送中断,以避免发送中断抢占接收中断,导致数据丢失。<br><br>3. 缓冲区溢出:长时间运行中,可能出现缓冲区溢出。建议在接收和发送时增加缓冲区状态检测,避免数据覆盖或丢失。<br><br>4. CAN总线负载与错误处理:CAN总线负载过高或出现错误帧可能导致通信异常。建议启用CAN错误检测机制,并在程序中增加错误处理逻辑。<br><br>5. 硬件与信号完整性:使用示波器检查CAN总线信号波形,确保信号完整性,排除硬件故障或干扰。<br><br>通过以上步骤,应能有效定位并解决通信异常问题。希望这些建议对您有所帮助。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-3-21 12:37:33 | 显示全部楼层
是可以这么做的
不过还有一种可能是,内部接收数据比较多导致fifo满溢出而没有接收到数据
这里有一种解决方式就是通过设置过滤寄存器,从硬件上对信息进行一次基础过滤
如果需要判断是否给自己的,是只用ID来判断的话,甚至可以通过设置过滤,省略掉判断这个步骤
这样对于处理压力来说,也会小很多

截图202503211236012291.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2025-3-21 14:28:23 | 显示全部楼层
王*** 发表于 2025-3-21 12:37
是可以这么做的
不过还有一种可能是,内部接收数据比较多导致fifo满溢出而没有接收到数据
这里有一种解决方 ...

谢谢版主的回复,我按照这个思路检查下。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 23:19 , Processed in 0.122053 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表