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复杂! 展开
有两个思路:
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复杂! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询