在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編輯器所展示的歡迎頁。如果你想學習如...