打印

我在DMA中断内进行FFT,只能进入一次中断

[复制链接]
4942|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海天一色|  楼主 | 2011-11-22 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在DMA中断完后,重新配置DMA也不能再次进入DMA中断。
如果把处理FFT的部分程序去掉,则DMA中断正常。
沙发
香水城| | 2011-11-22 17:13 | 只看该作者
DMA配置为什么模式?
如何从新配置? 是否先Disable再Enable?

使用特权

评论回复
板凳
wangshi| | 2011-11-22 19:40 | 只看该作者
请楼主,吧情况说的再具体一点。

使用特权

评论回复
地板
海天一色|  楼主 | 2011-11-23 10:37 | 只看该作者
使用定时器触发AD采样,采样频率设置为5K ,DMA缓冲区设置为256,DMA配置为DMA_Mode_Circular模式,DMA中断后,进行256点的FFT,完毕后重新初始化DMA。

使用特权

评论回复
5
grissiom| | 2011-11-23 11:31 | 只看该作者
循环模式里不用重新初始化 DMA 吧……

但是我觉得 LZ 的情况最好不要用循环模式,因为 FFT 需要时间,这时候 DMA 必须是关闭的……

使用特权

评论回复
6
海天一色|  楼主 | 2011-11-23 13:37 | 只看该作者
但进入DMA中断后,我关闭了DMA,在中断处理程序结束时再重新初始化打开DMA

使用特权

评论回复
7
grissiom| | 2011-11-23 14:04 | 只看该作者
中断例程里把其他代码去掉,只保留你重新初始化 DMA 的代码再试试~

使用特权

评论回复
8
mxh0506| | 2011-11-23 16:44 | 只看该作者
在中断处理程序里做长时间的操作不太合适。检查一下是不是调用层次比较多,或者局部变量比较多,推栈溢出了?或者编译过程中的优化有问题,把不该优化掉的代码去掉了?

使用特权

评论回复
9
tigeroser| | 2012-3-19 21:22 | 只看该作者
我也遇到了这样的问题,数据是从DMA取的,进入DMA中断后设置一个标志位,然后在主程序中循环FFT ,但是发现DMA只进了一次中断,郁闷很长时间了  与楼主设置的区别在于 1、DMA设置成DMA_Mode_Normal
2、我的运算放在主程序中了 DMA只有一个标志位、、、、、调试几天了,接下来调试一个怎么让DMA循环进中断。  另外,楼主:我的ADC通道为1,DMA设置成DMA_Mode_Circular得不到正确的数据,这个费了很大劲才找到原因的。以DMA一个通道1为例,它有三路(ADC1 T2_CH2,T4_CH1)数据请求,DMA_Mode_Circular模式下是不断循环存放扫描这三路,不是不断在放ADC1的数据。官方有一个这样的例程,不过我还没来得及验证,但设成DMA_Mode_Normal我确实得到正确数据了,期望交流:技术交流QQ 190805562

使用特权

评论回复
10
linjinming2000| | 2012-3-19 22:07 | 只看该作者
有没有可能是DMA和FFT使用了相同的缓冲区,导致访问冲突?

使用特权

评论回复
11
logokfu| | 2012-3-19 22:43 | 只看该作者
关注下

使用特权

评论回复
12
laserpic| | 2012-3-21 21:38 | 只看该作者
直接清除DMA相关标志,接着再等待完成标志信号.
应该就跟DMA_Mode_Normal一样了.

使用特权

评论回复
13
tiantangwuzhe| | 2014-5-13 15:53 | 只看该作者
我遇到了类似的问题,我的问题是在更改DMA参数时,没有关闭DMA,有的寄存器手册上是这样写的:
This register is write protected when the DMA channel is enabled (EN = 1 and GEN = 1) and
when the channel is busy (BUSY = 1)

使用特权

评论回复
14
usst_mcclane| | 2014-5-13 18:08 | 只看该作者
有完整的代码吗,光说也不是个事啊

使用特权

评论回复
15
tianli1980| | 2014-5-14 20:20 | 只看该作者
你的启动文件里 函数名是什么啊?会不会设置的不一致呢?

使用特权

评论回复
16
mfk1900| | 2015-4-8 11:28 | 只看该作者
这是因为FFT内部禁止了中断,防止中断例程打乱优化的寄存器,以提高运算速度,在FFT完成后允许中断就可以了。

使用特权

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

本版积分规则

9

主题

80

帖子

0

粉丝