你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【DMA error】STM32F407 DMA出错如何恢复?

[复制链接]
perchperch 提问时间:2014-8-20 22:47 /
首先谢过各位热心的网友~
基本情况是这样的:
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,也还是无法恢复正常。
各位网友有没有遇到过类似情况的?不吝赐教~
收藏 评论5 发布时间:2014-8-20 22:47

举报

5个回答
霹雳之火 回答时间:2014-8-21 08:38:40

RE:【DMA error】STM32F407 DMA出错如何恢复?

楼主把相关代码也贴出来,等待大神来回答。
废鱼 回答时间:2014-8-21 10:23:35

RE:【DMA error】STM32F407 DMA出错如何恢复?

这样可以用排除法了。一个一个的开,看看还出不出这个问题,最好是把代码贴出来。好分析。
perchperch 回答时间:2014-8-21 13:48:34

回复:【DMA error】STM32F407 DMA出错如何恢复?

回复第 3 楼 于2014-08-21 10:23:35发表:
这样可以用排除法了。一个一个的开,看看还出不出这个问题,最好是把代码贴出来。好分析。
目前看来,出故障的时候都会发生spi1 rx dma stream出现teif错误。关闭了spi之后,故障没看到过发生的现象。但是也不能确定,时候就不会发生adc overrun故障了。这个故障发生时,adc就完全挂了。
 
 
perchperch 回答时间:2014-8-21 22:34:07

RE:【DMA error】STM32F407 DMA出错如何恢复?

怀疑是DMA总线负荷方面的问题,做了加压测试。
目前可以100%复现故障了。
测试方法是:
提高SPI的发送波特率到42MHz,每200us传输1008个字节。
这样的话,DMA2会很“忙”。
最后的问题还在于,DMA2出错了之后无法恢复正常工作。哪怕关闭了DMA2的时钟,全部重新配置也不行。。。
perchperch 回答时间:2014-8-21 22:35:05

回复:【DMA error】STM32F407 DMA出错如何恢复?

回复第 2 楼 于2014-08-21 08:38:40发表:
楼主把相关代码也贴出来,等待大神来回答。
 
 
 
贴代码不方便啊,都在公司的电脑里。
 
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版