前言
本文目的是演示如何使用STM32F30x 內(nèi)部的DSP 進(jìn)行浮點(diǎn)快速傅立葉變換(FFT),為聯(lián)系實(shí)際應(yīng)用,使用ADC 對波形發(fā)生器進(jìn)行ADC 采樣,然后對ADC 采樣結(jié)果進(jìn)行FFT, 與 Matlab 仿真結(jié)果進(jìn)行比較察看最終結(jié)果的準(zhǔn)確性。會使用到ARMDSP 庫文件,以及STM32F30x 的浮點(diǎn)運(yùn)算單元以及DSP指令等。
模擬ADC采樣數(shù)據(jù)實(shí)現(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 采樣,將波形進(jìn)行偏移處理,疊加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進(jìn)行FFT運(yùn)算
生成數(shù)據(jù)存于AM_50_ADC_Data[]數(shù)組中,實(shí)數(shù)轉(zhuǎn)換為復(fù)數(shù),進(jìn)行CFFT 的運(yùn)算,調(diào)用arm_cfft_f32 庫函數(shù),1024 點(diǎn)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計(jì)算結(jié)果進(jìn)行比較
為方便顯示只取整數(shù)部分比較:圖【二】為Matlab 輸出,圖【三】為經(jīng)過STM32F30x計(jì)算后的結(jié)果.
圖【二】
圖【三】
從數(shù)據(jù)上看Matlab 仿真以及STM32F30x的FFT 兩者非常吻合,數(shù)據(jù)可以直接使用?;跁r(shí)間數(shù)據(jù)轉(zhuǎn)換到頻域上,理論上直流分量,頻率fc處,以及頻率fc-fm,fc+fm 處都會有波峰出現(xiàn),實(shí)際看FFT 波形如下:
使用波形發(fā)生器產(chǎn)生50% 調(diào)幅波,載波10KHz,調(diào)制波1KHz,調(diào)制比50%,偏移1.5V。
使用STM32F30x進(jìn)行ADC 采樣,采樣結(jié)果存于數(shù)組,數(shù)據(jù)導(dǎo)入到Matlab 顯示波形如下:
根據(jù)ADC采樣數(shù)據(jù)進(jìn)行FFT 變換,分析結(jié)果如下面所示:
由STM32F30x 的ADC 采樣的波形可以完整進(jìn)行快速傅立葉變換,變化結(jié)果符合理論變化預(yù)期。并且利用STM32F30x 的FPU 以及DSP 模塊方便快速進(jìn)行變化,給實(shí)際應(yīng)用帶來很大便利性。
-
dsp
+關(guān)注
關(guān)注
555文章
8123瀏覽量
354418 -
模擬電路
+關(guān)注
關(guān)注
125文章
1588瀏覽量
103543 -
傅立葉變換
+關(guān)注
關(guān)注
3文章
105瀏覽量
32728
原文標(biāo)題:【演示示例】STM32F30x ADC 采樣的傅立葉變換,建議看看!
文章出處:【微信號:Mouser-Community,微信公眾號:貿(mào)澤電子設(shè)計(jì)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
快速傅立葉變換(FFT)算法實(shí)驗(yàn)
淺懂示波器FFT快速傅立葉變換功能及運(yùn)用
如何使用STM32F30x內(nèi)部的DSP進(jìn)行浮點(diǎn)快速傅立葉變換?
快速傅立葉變換(FFT)的Nios II實(shí)現(xiàn)
基于FPGA的快速傅立葉變換
Xilinx 的IP:1024點(diǎn)FFT快速傅立葉變換
如何利用TMS320DSP平臺實(shí)現(xiàn)實(shí)值序列的快速傅立葉變換算法的詳細(xì)概述

如何使用STM32F30x 內(nèi)部的DSP 進(jìn)行浮點(diǎn)快速傅立葉變換資料下載

簡述FPGA的快速傅立葉變換

STM32F30x 的ADC 采樣的傅立葉變換

評論