请问STM32F407 DMA出错怎么恢复?

2019-07-14 13:43发布

首先谢过各位热心的网友~
基本情况是这样的:
1.使用 STM32F407,偶发(很少发生)ADC OVERRUN错误。依据手册说明,在ADC OVERRUN中断函数中进行恢复(重新配置DMA相关stream和ADC),还是无法恢复正常;会连续不断地进入ADC OVERRUN中断。
ADC相关配置为:DMA+ADC, DMA为circul模式、ADC为SCAN模式。 当ADC采集完一组channel之后,产生DMA中断。由定时器触发(频率 20kHz)ADC1进行一轮采样转换,并产生DMA2 stream中断;由定时器触发(频率 5kHz)ADC2进行一轮采样转换,并产生DMA2 stream中断;
2.在DMA2中,还挂了SPI的Tx和Rx。SPI为master模式。1.5ms为周期传输1008个字节,时钟为10MHz。
当ADC OVERRUN故障出现时,ADC相关的DMA stream 的相关状态都正常; SPI RX对应的DMA2 stream2出现错误状态TEIF
现在怀疑是不是DMA2总线负荷太大,导致DMA出错了。尝试了重新配置DMA2和SPI、ADC,也还是无法恢复正常。
各位网友有没有遇到过类似情况的?不吝赐教~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。