我在调试项目的时候,分为1个主机与2个从机,通过CAN进行通信,起初调的时候好好地,等将功能全部调完之后,整体断电,之后在上电,发现 主机 CAN通讯错乱,也就是接收的数据不对,比较混乱,之后我寻找问题发现2个从机上电之后会给主机发送CAN数据,我就怀疑是不是这个原因造成的CAN通讯混乱,之后我给屏蔽掉,果然没有这个问题了。
到这其实问题已经解决了,但是寻找问题要寻找其根本,为什么会出现这样的情况。
后来我发现HC32F460的CAN通讯时发现如果同时收到了两帧数据,第二帧数据会保存下来,导致下面接收的数据是上一帧的数据,然后后面的接收都错位了。
我查找芯片手册:
只需要把数据释放掉就行了。
再或者也可以这样做:
在接收CAN数据时,如果同时收到了两帧数据,应该在中断函数中处理完每一帧数据后再清除标志位。如果没有处理完一帧数据就清除标志位,会导致第二帧数据被覆盖。 因此,请确保在中断函数中完成数据处理,并在处理完后清除标志位,以保证正确的接收CAN数据。标签:错位,一帧,主机,华大,HC32F460,接收,数据 From: https://www.cnblogs.com/tlazy-12138/p/17624701.html