STM32
直播中

李林

7年用户 1183经验值
私信 关注
[问答]

STM32h7开启Cache后,串口发送DMA会导致中断触发如何解决?

STM32h7 开启Cache后,串口使用发送DMA发送数据会导致中断触发(只开启接收空闲中断),接收和发送的缓存指定在手动分配的内存区域(此区域通过MPU配置,关闭了Cache功能),此问题有办法解决吗?

回帖(1)

美信电子

2024-3-12 17:18:42
这个问题可能是由于使用DMA发送数据时,数据还没有完全发送完成就触发了中断,导致中断处理函数读取了错误的数据。

解决这个问题的方法有几种:

1. 等待DMA发送完成后再触发中断:可以使用DMA的传输完成中断来控制中断触发的时机,当DMA发送完成时再触发接收中断。

2. 使用双缓冲区:使用双缓冲区来解决数据发送未完成就触发中断的问题。可以使用两个缓冲区交替使用,当一个缓冲区的数据发送完成后,切换到另一个缓冲区发送数据,这样就不会导致中断触发时发送还未完成。

3. 使用软件延时:在触发中断之前增加一段软件延时,等待DMA发送完成。可以通过计数循环等方式实现延时,确保数据发送完毕后再触发中断。

需要根据具体的应用场景选择合适的解决方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分