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

发布时间 2023-08-12 13:30:30作者: lazy12138

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

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

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

 我查找芯片手册:

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

再或者也可以这样做:

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