急求大神帮助,关于wm8978录音问题

2019-07-20 01:26发布

本帖最后由 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数组中的数据
        }
部分,用于通过串口打印其中的数据。读出的好像是杂音。
求教,如果我想通过串口去读出录制的声信号,应该通过读取哪个数组才对?或者哪个寄存器?求好心人解疑


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。