STM32的ADC+DMA问题?

自学stm32有几天了,现在需要做的个采集声音信号,作FFT变换,从LCD上显示频谱有两个思路:1:使用定时中断(打算50K左右的采样频率)进行AD采样(假设256个点)... 自学stm32有几天了,现在需要做的个采集声音信号,作FFT变换,从LCD上显示频谱
有两个思路:
1:使用定时中断(打算50K左右的采样频率)进行AD采样(假设256个点),然后主循环运算FFT和显示,这样的频繁中断不知道cpu是否能在这么短的时间内计算和显示
2:使用DMA的话,我想象的是控制采样时间来控制采样频率,ADC采样到ADvalue[0][256]中,采满后产生中断,中断中更改目的地址为:Advalue[1][256],如此交替,采样的时候进行计算前一个数组的FFT。但是不知道ADC+DMA能不能达到这样的目的,DMA的目的地址在一批次采样完成后会更改,这里的更改只需要更目的地址还是需要全部DMA重新初始化?
那种方法好点呢?DMA还不熟悉,看了很多例程,都没说怎么把一路ADC值连续采样,并通过DMA采样到数组中,倒是有把几路(6路)采样到一个长度为6的数组中,而且只采样一个,完全达不到要求。
最后感叹一句,STM32真TMD复杂!
展开
 我来答
ATF144X
2013-11-30 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4652万
展开全部
第二个方法是可行的,不过需要你在DMA中断里改变目的地址。
在中断里首先禁止DMA,接着修改目的地址,然后再使能DMA。
追问
DMA中断是每次ADC后就产生的?还是我设置的数组ADvalue[0][256]采满后产生的?还是说可以自定义的设置?
有不有相关代码,指示下,尤其是DMA初始化和ADC初始化的?
追答
DMA传输完成中断,比如你规定采集256个之后才中断一次的。
就参考固件库里面ADC_DMA的例程。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式