前言
本文目的是演示如何使用STM32F30x 內(nèi)部的DSP 進行浮點快速傅立葉變換(FFT),為聯(lián)系實際應(yīng)用,使用ADC 對波形發(fā)生器進行ADC 采樣,然后對ADC 采樣結(jié)果進行FFT, 與 Matlab 仿真結(jié)果進行比較察看最終結(jié)果的準確性。會使用到ARMDSP 庫文件,以及STM32F30x 的浮點運算單元以及DSP指令等。
模擬ADC采樣數(shù)據(jù)實現(xiàn)FFT使用Matlab生成AM調(diào)制波形
波形公式為:AM_50= sin(2πfc)*(1+50%*sin(2πfm)), 其中fc 為載波頻率,fm 為調(diào)制波頻率,調(diào)制比50%。為了使用ADC 采樣,將波形進行偏移處理,疊加1.5V 電壓,最終波形展開公式如下:
AM_50 = sin(2πfc) + 50%*sin(2πfm))* sin(2πfc) + 1.5
Matlab 程序如下:
x =sin(2*pi*fm*t); % modulation wave
figure;plot(t,x);y =sin(2*pi*fc*t); % carrier wavefigure;plot(t,y);z1 =y.*(1+m1*x) + 1.5; % AM wave with 50% depthfigure; %figure 1plot(t,z1);xlabel('Time');ylabel('Amplitude');title('AM with50% depth');Z1 =z1*4096/3.3; % 12-bit ADC Value
產(chǎn)生波形如下:
圖【一】
生成模擬ADC數(shù)據(jù),使用STM32F30x進行FFT運算
生成數(shù)據(jù)存于AM_50_ADC_Data[]數(shù)組中,實數(shù)轉(zhuǎn)換為復(fù)數(shù),進行CFFT 的運算,調(diào)用arm_cfft_f32 庫函數(shù),1024 點FFT。
/* Real data to magnitudedata */
for(i=0; i {testInput_f32_10khz[i*2+1] =0;testInput_f32_10khz[i*2] = AM_50_ADC_Data[i];}
/* Process the data throughthe CFFT/CIFFT module */
arm_cfft_f32(&arm_cfft_sR_f32_len1024,testInput_f32_10khz, ifftFlag, doBitReverse);
/* Process the data throughthe Complex Magnitude Module forcalculating the magnitude ateach bin */
arm_cmplx_mag_f32(testInput_f32_10khz,testOutput, fftSize);
結(jié)果打印并和Matlab計算結(jié)果進行比較
為方便顯示只取整數(shù)部分比較:圖【二】為Matlab 輸出,圖【三】為經(jīng)過STM32F30x計算后的結(jié)果.
圖【二】
圖【三】
從數(shù)據(jù)上看Matlab 仿真以及STM32F30x的FFT 兩者非常吻合,數(shù)據(jù)可以直接使用?;跁r間數(shù)據(jù)轉(zhuǎn)換到頻域上,理論上直流分量,頻率fc處,以及頻率fc-fm,fc+fm 處都會有波峰出現(xiàn),實際看FFT 波形如下:
實際ADC采樣并進行FFT操作
使用波形發(fā)生器產(chǎn)生50% 調(diào)幅波,載波10KHz,調(diào)制波1KHz,調(diào)制比50%,偏移1.5V。
使用STM32F30x進行ADC 采樣,采樣結(jié)果存于數(shù)組,數(shù)據(jù)導(dǎo)入到Matlab 顯示波形如下:
根據(jù)ADC采樣數(shù)據(jù)進行FFT 變換,分析結(jié)果如下面所示:
結(jié)論:
由STM32F30x 的ADC 采樣的波形可以完整進行快速傅立葉變換,變化結(jié)果符合理論變化預(yù)期。并且利用STM32F30x 的FPU 以及DSP 模塊方便快速進行變化,給實際應(yīng)用帶來很大便利性。
-
dsp
+關(guān)注
關(guān)注
552文章
7959瀏覽量
347930 -
模擬電路
+關(guān)注
關(guān)注
125文章
1553瀏覽量
102622 -
傅立葉變換
+關(guān)注
關(guān)注
3文章
99瀏覽量
32333
原文標題:【演示示例】STM32F30x ADC 采樣的傅立葉變換,建議看看!
文章出處:【微信號:Mouser-Community,微信公眾號:貿(mào)澤電子設(shè)計圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論