0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DSP進行浮點快速傅立葉變換剖析

貿(mào)澤電子設(shè)計圈 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-09-18 06:44 ? 次閱讀

前言

本文目的是演示如何使用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)用帶來很大便利性。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • dsp
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    快速傅立葉變換(FFT)算法實驗

    本帖最后由 mr.pengyongche 于 2013-4-30 02:23 編輯 快速傅立葉變換(FFT)算法實驗一、摘
    發(fā)表于 12-21 10:54

    淺懂示波器FFT快速傅立葉變換功能及運用

    變換,是離散傅氏變換快速算法,它是根據(jù)離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換
    發(fā)表于 01-14 17:00

    如何使用STM32F30x內(nèi)部的DSP進行浮點快速傅立葉變換?

    本文目的是演示如何使用STM32F30x 內(nèi)部的DSP 進行浮點快速傅立葉變換(FFT),為聯(lián)系
    發(fā)表于 02-24 09:13

    傅立葉變換.ppt

    傅立葉變換數(shù)學(xué)物理方法,傅立葉變換,傅立葉級數(shù),傅立葉級數(shù)
    發(fā)表于 08-26 09:08 ?0次下載

    快速傅立葉變換(FFT)的Nios II實現(xiàn)

    快速傅立葉變換(FFT)的Nios II實現(xiàn) 隨著數(shù)字電子技術(shù)的發(fā)展,數(shù)字信號處理的理論和技術(shù)廣泛地應(yīng)用于通訊、語音處理、計算機和多媒體等領(lǐng)域。快速傅里葉
    發(fā)表于 02-09 09:38 ?81次下載

    基于FPGA的快速傅立葉變換

    摘要:在對FFT(快速傅立葉變換)算法進行研究的基礎(chǔ)上,描述了用FPGA實現(xiàn)FFT的方法,并對其中的整體結(jié)構(gòu)、蝶形單元及性能等進行了分析。
    發(fā)表于 06-20 14:13 ?1095次閱讀

    1024點FFT快速傅立葉變換

    Xilinx FPGA工程例子源碼:1024點FFT快速傅立葉變換
    發(fā)表于 06-07 14:13 ?33次下載

    Xilinx 的IP:1024點FFT快速傅立葉變換

    Xilinx FPGA工程例子源碼:Xilinx 的IP:1024點FFT快速傅立葉變換
    發(fā)表于 06-07 15:07 ?51次下載

    如何利用TMS320DSP平臺實現(xiàn)實值序列的快速傅立葉變換算法的詳細概述

    快速傅立葉變換(FFT)是傅立葉變換(DFT)的有效計算方法,是數(shù)字信號處理應(yīng)用中最重要的工具之一。由于其結(jié)構(gòu)形式良好,F(xiàn)FT是評估數(shù)字信號
    發(fā)表于 05-04 11:09 ?5次下載
    如何利用TMS320<b class='flag-5'>DSP</b>平臺實現(xiàn)實值序列的<b class='flag-5'>快速</b><b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>算法的詳細概述

    快速傅立葉變換的基本概念及加窗函數(shù)的介紹

    4.2 快速傅立葉變換及加窗函數(shù)
    的頭像 發(fā)表于 05-07 06:09 ?6445次閱讀
    <b class='flag-5'>快速</b><b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>的基本概念及加窗函數(shù)的介紹

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

    電子發(fā)燒友網(wǎng)為你提供如何使用STM32F30x 內(nèi)部的DSP 進行浮點快速傅立葉變換資料下載的電
    發(fā)表于 04-05 08:57 ?16次下載
    如何使用STM32F30x 內(nèi)部的<b class='flag-5'>DSP</b> <b class='flag-5'>進行</b><b class='flag-5'>浮點</b><b class='flag-5'>快速</b><b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>資料下載

    簡述FPGA的快速傅立葉變換

    摘要:在對FFT(快速傅立葉變換)算法進行研究的基礎(chǔ)上,描述了用FPGA實現(xiàn)FFT的方法,并對其中的整體結(jié)構(gòu)、蝶形單元及性能等進行了分析。
    的頭像 發(fā)表于 05-27 11:21 ?2206次閱讀
    簡述FPGA的<b class='flag-5'>快速</b><b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>

    STM32F30x 的ADC 采樣的傅立葉變換

    STM32F30x 的ADC 采樣的傅立葉變換(理士國際電源技術(shù)有限公司)-本文目的是演示如何使用STM32F30x 內(nèi)部的DSP 進行浮點
    發(fā)表于 08-04 17:47 ?71次下載
    STM32F30x 的ADC 采樣的<b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>

    傅立葉變換是怎么變換傅立葉的理解

    關(guān)于傅立葉變換,無論是書本還是在網(wǎng)上可以很容易找到關(guān)于傅立葉變換的描述,但是大都讓人很難理解太過抽象,盡是一些讓人看了就望而生畏的公式的羅列。 要理解
    的頭像 發(fā)表于 08-25 11:25 ?4775次閱讀

    淺懂示波器FFT快速傅立葉變換功能及運用

    變換,是離散傅氏變換快速算法,它是根據(jù)離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換
    的頭像 發(fā)表于 11-08 15:01 ?6462次閱讀
    淺懂示波器FFT<b class='flag-5'>快速</b><b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>功能及運用