打印

stm32 DMA干扰中断的严重问题!

[复制链接]
10995|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxwxgd|  楼主 | 2010-6-4 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,不知有人碰到过没有,在打开ADC的DMA操作后会严重干扰到中断的问题。
用的芯片是STM32f103,我在调步进电机和ADC。步进电机用定时中断直接驱动,ADC用DMA直接操作,两个模块单独调都没问题,可是只要同时打开,步进电机就无**常转动。只要把DMA关掉就正常了。郁闷中。。。。。是不是STM32的DMA设计有问题,有没有什么好的解决方法。
沙发
原野之狼| | 2010-6-4 12:58 | 只看该作者
随便说说 仅供参考
用过别的片子 DMA时数据总线会被占用的 程序假死中
对于STM32 没用过 不懂 请看数据手册

使用特权

评论回复
板凳
香水城| | 2010-6-4 13:24 | 只看该作者
DMA的工作原理是挪用MCU占用总线的时间,临时接管系统总线。

在DMA模块占用总线的时候,如果CPU也需要访问系统总线,CPU就会临时避让,等DMA操作周期结束在继续运行。

你的问题恰好出在这里,估计你的定时中断操作已经基本榨干了CPU的所有时间,或者定时中断内的操作对CPU速度的要求太高。没办法,你必须降低定时中断内的操作对CPU速度的要求。

使用特权

评论回复
地板
lxwxgd|  楼主 | 2010-6-4 14:56 | 只看该作者
那该怎么办,看来AD采样只好不用DMA了。

使用特权

评论回复
5
香水城| | 2010-6-4 15:02 | 只看该作者
可以考虑使用DMA驱动步进电机。

使用特权

评论回复
6
lxwxgd|  楼主 | 2010-6-4 17:10 | 只看该作者
发现一个问题,当DMA打开时,TIM1的定时脉冲被放大了10倍,原来两个脉冲间隔为1.5ms,打开DMA操作后两个脉冲间隔变为15ms。在MDK中调试时暂时关闭DMA也没有任何效果。

使用特权

评论回复
7
lxwxgd|  楼主 | 2010-6-4 17:21 | 只看该作者
而且此后无论关闭ADC还是DMA,定时器的脉冲间隔都无法变回原来1.5ms,只有修改TIM1-PSC的值才有效。我原来的TIM1-PSC值为0x3f,现在要设置为0xa才行,现在初步怀疑是在初始化DMA操作时影响了Tim1的时钟源,否则不至于我在MDK中关闭了DMA,中断还恢复不了原来的脉冲间隔。

使用特权

评论回复
8
lxwxgd|  楼主 | 2010-6-4 17:45 | 只看该作者
不知大家遇见过上述情况没有。事实上我在同时DMA后Tim1中断后,只好把Tim1的预分频值缩小10后发现中断脉冲又恢复到原来的宽度,说明我的定时中断操作并没有把CPU或总线占死,否则的话应该无论怎么调整定时器定时都不应该能够缩小。

使用特权

评论回复
9
香水城| | 2010-6-4 18:01 | 只看该作者
不知大家遇见过上述情况没有。事实上我在同时DMA后Tim1中断后,只好把Tim1的预分频值缩小10后发现中断脉冲又恢复到原来的宽度,说明我的定时中断操作并没有把CPU或总线占死,否则的话应该无论怎么调整定时器定时都不 ...
lxwxgd 发表于 2010-6-4 17:45


这样的话,还是要检查一下程序中哪里有问题。

使用特权

评论回复
10
gxgclg| | 2010-6-5 09:16 | 只看该作者
AD采样可以考虑不用DMA模式

使用特权

评论回复
11
JohnsonJiang| | 2013-10-29 17:59 | 只看该作者
时隔两年,我遇到了与楼主类似的问题,我是在STM32中跑UCOS,加上ADC+DMA后UCOS跑死,无法任务调度,关闭DMA后一切正常,不知道楼主两年后有没有解决此问题!

使用特权

评论回复
12
wyq200704| | 2013-12-27 23:09 | 只看该作者
STM32F1系列的DMA本来就是Lite轻量级的DMA,采用的steal模式,并不会完全占用系统总线,但会导致cpu执行速度减慢。使用dma肯定要考虑这个问题,dma传输数据的速度不能太高,F1系列有个专门的dma应用手册讲这方面的内容。如果对dma要求较高,可以看看F2系列,对dma有很大的改进。

使用特权

评论回复
13
e99996| | 2015-4-22 21:45 | 只看该作者
时隔两年了,我遇到了和大家类似的问题,可是关于DMA的传输速度影响CPU运行的标准是多少?

使用特权

评论回复
14
周董| | 2015-4-22 22:10 | 只看该作者
我是在STM32中跑UCOS也遇到过ADC的DMA操作相关的问题。

使用特权

评论回复
15
kent8013| | 2015-7-20 15:46 | 只看该作者
我也遇到DMA ,干扰中断问题,不知道有什么方法解决没有

使用特权

评论回复
16
643757107| | 2015-7-22 21:27 | 只看该作者
如果对dma要求较高,可以看看F2系列,对dma有很大的改进。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

1

粉丝