本帖最后由 flmss 于 2016-2-21 19:22 编辑
我采用stm32f407探索者开发板,通过wm8978进行录音实验。
现在想将wm8978采集到的声信号,不经过SD卡,读取出来。请问这些声信号的数据,是存储在i2srecbuf1和i2srecbuf2这两个数组中吗?
我通过串口去读取i2srecbuf1中的信号,读出的信号好像是杂音,而不是录制的声音。
[mw_shl_code=c,true]//进入PCM 录音模式
void recoder_enter_rec_mode(void)
{
u8 i;
delay_ms(3000);
WM8978_ADDA_Cfg(0,1); //开启ADC
WM8978_Input_Cfg(1,1,0); //开启输入通道(MIC&LINE IN)
WM8978_Output_Cfg(0,1); //开启BYPASS输出
WM8978_MIC_Gain(46); //MIC增益设置
WM8978_I2S_Cfg(2,0); //飞利浦标准,16位数据长度
I2S2_Init(0,2,0,0); //飞利浦标准,主机发送,时钟低电平有效,16位帧长度
I2S2ext_Init(0,1,0,0); //飞利浦标准,从机接收,时钟低电平有效,16位帧长度
I2S2_SampleRate_Set(16000); //设置采样率
I2S2_TX_DMA_Init((u8*)&i2splaybuf[0],(u8*)&i2splaybuf[1],1); //配置TX DMA
DMA1_Stream4->CR&=~(1<<4); //关闭传输完成中断(这里不用中断送数据)
//I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2); //配置RX DMA,每次传输数据量为2048
I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2);
i2s_rx_callback=rec_i2s_dma_rx_callback;//回调函数指wav_i2s_dma_callback
I2S_Play_Start(); //开始I2S数据发送(主机)
I2S_Rec_Start(); //开始I2S数据接收(从机)
for(i=0;i<400;i++)
{
printf("%d
",i2srecbuf1);//通过串口打印出i2srecbuf1数组中的数据
}
recoder_remindmsg_show(0);
} [/mw_shl_code]
我在正点原子的代码中加入了 for(i=0;i<400;i++)
{
printf("%d
",i2srecbuf1);//通过串口打印出i2srecbuf1数组中的数据
}
部分,用于通过串口打印其中的数据。读出的好像是杂音。
求教,如果我想通过串口去读出录制的声信号,应该通过读取哪个数组才对?或者哪个寄存器?求好心人解疑
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>