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

目录

  • 1. 问题
  • 2. 真因
  • 3. 解决方案
    • 3.1 临时方案


1. 问题


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

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


2. 真因


当接收到上位机的报文后(只发一帧),DMA中断触发,可以看到,此时 IFLAG1 的bit11置位,因为配置的Mailbox11是发送,【正常】。
【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录_第1张图片
将断点打在CAN中断处理函数中,连续运行几次,发现,仍是IFLAG1 的bit11置位。【正常】。
【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录_第2张图片
现将CAN中断处理函数处的断点取消,但是不取消MDA的中断处理函数处的断点,再发送一帧:
【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录_第3张图片
可以看到,在中断处理函数中,IFLAG1寄存器,FIFO的中断Flag也置位了。并没有在DMA中断处停下 【异常】
【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录_第4张图片
FLEXCAN_IRQHandlerRxFIFO函数中,state的状态是FLEXCAN_MB_IDLE,无法清除FIFO中断标志。
【S32K144调试笔记】CANFIFO & DMA 模式接收,普通模式发送测试问题记录_第5张图片

这难道是SDK的bug吗?


3. 解决方案


3.1 临时方案


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

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

你可能感兴趣的:(S32K144,嵌入式)