STM32F407 FFT 詳細解讀!!!!

2021-10-24 21:48:41 字數 981 閱讀 3803

在stm32f407上做fft的運算:

在對採集到的訊號做fft運算之前,我們先要明確以下幾個東西:

取樣頻率(fs)和進行一次fft運算的點數(n)

基4fft運算,點數只能是4的指數倍,即n=256、1024。

有了上述幾個知識點後,我們先來看一下下面的這張圖:

這張圖是我通過stm32的adc採集乙個1khz的方波,然後進行1024個點的fft得到的,此時的取樣率大約為256khz,注意:這裡的取樣率是大約為256khz,與256khz有較大的偏差,這個偏差造成的後果就是右圖的頻譜圖能量不集中。(頻譜圖中我去掉了直流分量與後面的一些點。)

下面我們再看一張圖:

在這張圖中,我的取樣率大約是512khz,且與512khz很接近,輸入的訊號仍為1khz的方波,此時右圖的頻譜圖能量就很集中,與理想fft的結果非常的接近,這是我們所希望看到的,那麼這是為啥呢?

原因其實很簡單,在頻譜圖中,x軸所代表的就是頻率的大小,具體的計算公式式為:頻率 = x * fs / n其中fs就是我們的取樣頻率,n就是fft計算的點數。

讓我們來驗證一下吧!

第二張圖的最高點的x值為2,帶入公式計算可得:頻率=2*512khz/1024=1khz,這不就剛好對應我們的基波頻率麼。之後排下來就是3次諧波、5次諧波…偶次諧波幾乎為零。

那麼頻譜圖的y軸代表什麼含義呢?

y軸的值代表的就是對應諧波的幅度(vp),不過轉換為幅度還需要乙個公式:幅度 = y * 2 / n

ps:不過在32上其實是比較難做到取樣頻率的精確控制的,最好的方式是用fpga驅動乙個ads8505(或者其他的adc模組)實時採集資料,之後再將資料發給32.

基於stm32f407建立stm32F427工程

分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...

STM32F407上除錯freeRTOS問題

是在正點原子的阿波羅stm32f429開發板上的例子改來的,他們的編譯沒有問題,我編譯時出現如下問題 定位到出錯的地方,是 再追 configmax syscall interrupt priority 的定義是 define configmax syscall interrupt priority...

STM32F407 bootload 程式測試

stm32f407 bootload 程式測試 最近產品需要上遠端公升級功能,那麼微控制器肯定要用bootload了。初步設計方法為先用原子的程式作為基礎版,採用串列埠公升級的方式進行除錯,基本配置如下 1 iap程式的配置 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如...