音頻信號FFT變換後節拍檢測的軟件實現(STM32)

前言:

在人耳能聽到的頻率範圍(20-20KHz)中,故我們設置採樣頻率爲44100Hz(根據採樣定理,採樣頻率要大於信號最大頻率的兩倍,才能保證不失真)來採集這0-20KHz的音頻信號。我們把採樣點數設置爲1024個點,那麼在進行1024點FFT時,將得到44100Hz / 1024 = 43Hz的頻率分辨率.

採樣頻率:Fs = 44100Hz

樣本數量:NPT = 1024

這兩個參數是FFT計算時候要用到的

編程整體思路:

1.使用ADC採集音頻信號
2.使用官方提供的FFT函數對採集到的信號進行處理
3.量化顯示

1,音頻節拍檢測流程

在這裏插入圖片描述

##2,音頻AD信號採集 ##

用stm32f103自帶的12位ADC進行數據採集,FFT之後如果要獲取信號頻率、幅度等信息還要知道採樣頻率Fs,因此一般都是用定時器觸發ADC採集,再用DMA進行搬運,定時器時間可以自己設置,採樣頻率也就知道了。具體配置如下(只貼出關鍵部分):

void myfft_init(void)
{
    /* Enable ADC1 and GPIOC TIM1 DMA1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);      //使能DMA1時鐘
    RCC_APB2PeriphClock
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章