【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录


1. 问题


依据上篇【S32K144调试笔记】CANFIFO&DMA SDK 配置测试的配置,如果在MCU向外连续发送报文的过程中,用上位机连续发送几帧报文,则将反复进入CAN中断,且无法复位。

理论上,配置成DMA后,接收只进DMA的中断,本来发送就是进中断的,但进去后会清除中断标志位的。现在反复进,不能理解是什么原因。


2. 真因


当接收到上位机的报文后(只发一帧),DMA中断触发,可以看到,此时 IFLAG1 的bit11置位,因为配置的Mailbox11是发送,【正常】。
在这里插入图片描述
将断点打在CAN中断处理函数中,连续运行几次,发现,仍是IFLAG1 的bit11置位。【正常】。
在这里插入图片描述
现将CAN中断处理函数处的断点取消,但是不取消MDA的中断处理函数处的断点,再发送一帧:
在这里插入图片描述
可以看到,在中断处理函数中,IFLAG1寄存器,FIFO的中断Flag也置位了。并没有在DMA中断处停下 【异常】
在这里插入图片描述
FLEXCAN_IRQHandlerRxFIFO函数中,state的状态是FLEXCAN_MB_IDLE,无法清除FIFO中断标志。
在这里插入图片描述

这难道是SDK的bug吗?


3. 解决方案


3.1 临时方案


将FlexCAN的接收模式改为中断型,测试可用。可以临时解决问题

写在最后:
之前在调试的时候,没有测试充分,现在项目紧张地进行,没有空去细细研究。

猜你喜欢

转载自blog.csdn.net/Allen_Spring/article/details/106373019