华大 HC32F460 CAN 同时接收到两帧数据,导致后面的数据错位问题

我在调试项目的时候,分为1个主机与2个从机,通过CAN进行通信,起初调的时候好好地,等将功能全部调完之后,整体断电,之后在上电,发现 主机 CAN通讯错乱,也就是接收的数据不对,比较混乱,之后我寻找问题发现2个从机上电之后会给主机发送CAN数据,我就怀疑是不是这个原因造成的CAN通讯混乱,之后我给屏蔽掉,果然没有这个问题了。

到这其实问题已经解决了,但是寻找问题要寻找其根本,为什么会出现这样的情况。

后来我发现HC32F460的CAN通讯时发现如果同时收到了两帧数据,第二帧数据会保存下来,导致下面接收的数据是上一帧的数据,然后后面的接收都错位了。

 我查找芯片手册:

 只需要把数据释放掉就行了。

再或者也可以这样做:

在接收CAN数据时,如果同时收到了两帧数据,应该在中断函数中处理完每一帧数据后再清除标志位。如果没有处理完一帧数据就清除标志位,会导致第二帧数据被覆盖。
因此,请确保在中断函数中完成数据处理,并在处理完后清除标志位,以保证正确的接收CAN数据。

 

posted @   lazy12138  阅读(554)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示