完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先谢过各位热心的网友~
基本情况是这样的: 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,也还是无法恢复正常。 各位网友有没有遇到过类似情况的?不吝赐教~ |
|
相关推荐
6个回答
|
|
楼主把相关代码也贴出来,等待大神来回答。
|
|
|
|
这样可以用排除法了。一个一个的开,看看还出不出这个问题,最好是把代码贴出来。好分析。
|
|
|
|
回复第 3 楼 于2014-08-21 10:23:35发表:
这样可以用排除法了。一个一个的开,看看还出不出这个问题,最好是把代码贴出来。好分析。 目前看来,出故障的时候都会发生spi1 rx dma stream出现teif错误。关闭了spi之后,故障没看到过发生的现象。但是也不能确定,时候就不会发生adc overrun故障了。这个故障发生时,adc就完全挂了。 |
|
|
|
怀疑是DMA总线负荷方面的问题,做了加压测试。
目前可以100%复现故障了。 测试方法是: 提高SPI的发送波特率到42MHz,每200us传输1008个字节。 这样的话,DMA2会很“忙”。 最后的问题还在于,DMA2出错了之后无法恢复正常工作。哪怕关闭了DMA2的时钟,全部重新配置也不行。。。 |
|
|
|
|
|
|
|
非常感谢!学习了!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1372 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1389 浏览 0 评论
STM32串口接受中断使用C++STL中的queue导致所有中断失效
8907 浏览 1 评论
3676 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1599 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 08:30 , Processed in 0.561539 second(s), Total 50, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191