我正在做音频信号的采集这一块,在原子STM32F407开发板上做的预演,借用的是录音实验:
1、采样频率设置为48KHz
[mw_shl_code=applescript,true] I2S2_SampleRate_Set(48000); //设置采样率 //16000[/mw_shl_code]
2、FFT
由于FFT采样点数设置为1024,这里采用的是DMA双缓冲接收,因此DMA接收长度设置为512
[mw_shl_code=applescript,true]u8 bufUseFlag1 = 0, bufUseFlag2 = 0;
//录音 I2S_DMA接收中断服务函数.在中断里面写入数据
void rec_i2s_dma_rx_callback(void)
{
u16 bw;
u8 res;
if(rec_sta==0X80)//录音模式
{
if (bufUseFlag1 & bufUseFlag2) {
return ;
}
/* 0:当前目标存储器为存储器 0(使用 DMA_SxM0AR 指针寻址)
1:当前目标存储器为存储器 1(使用 DMA_SxM1AR 指针寻址) */
if(DMA1_Stream3->CR&(1<<19))
{
res=f_write(f_rec,i2srecbuf1,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
if(res)
{
printf("write error:%d\r\n",res);
}
bufUseFlag1 = 1;
}else
{
res=f_write(f_rec,i2srecbuf2,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
if(res)
{
printf("write error:%d\r\n",res);
}
bufUseFlag2 = 1;
}
wavsize+=I2S_RX_DMA_BUF_SIZE;
}