前言:
在人耳能听到的频率范围(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_AHBP