WM8978声卡同时录音与播放的STM32程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WM8978声卡同时录音与播放的STM32程序

WM8978声卡芯片是支持录音的同时进行播放,该功能可以作实时对讲,只需要设置

好对应的寄存器即可。以下程序是在原子哥STM32F407探索者开发板的例程上修改的,先附上原理图:

大致思路就是先分别申请好录音与播放使用到的内存,然后对WM8978寄存器进行设置,最后是实现录音与播放功能。下面就贴出对WM8978寄存器的设置程序,录音是通过中断进行,播放可以参考原子哥的音乐播放例程。

void recorder_init_device(u32 samplerate)

{

recorder_do_init();//录音内存申请

wav_do_init();//播放内存申请

WM8978_ADDA_Cfg(1,1); //开启DAC、ADC

WM8978_Input_Cfg(1,0,0); //开启输入通道(MIC&LINE IN)

WM8978_MIC_Gain(46); //MIC增益设置

WM8978_Output_Cfg(1,0); //开启DAC输出 ,关闭BYPASS输出

app_wm8978_volset(wm8978set.mvol);//输出声音

WM8978_I2S_Cfg(2,0); //飞利浦标准,16位数据长度I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_Dat

aFormat_16b); //飞利浦标准,主机发送,时钟低电平有效,16位帧长度

I2S2ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_D ataFormat_16b); //飞利浦标准,从机接收,时钟低电平有效,16位帧长度I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2); //配置RX DMA

I2S2_TX_DMA_Init(audiodev.i2sbuf1,audiodev.i2sbuf2,WAV_I2S_TX_DMA_B UFSIZE/2);//配置TX DMA

i2s_tx_callback=wav_i2s_dma_tx_callback; //回调函数指向wav_i2s_dma_tx_callback

i2s_rx_callback=rec_i2s_dma_rx_callback;//回调函数指

rec_i2s_dma_rx_callback

//设置采样率等

I2S_Play_Stop();

I2S_Rec_Stop();

I2S2_SampleRate_Set(samplerate);//录音采样率选择,默认选择22Khz录音

I2S_Play_Start(); //开始I2S数据发送(主机)

I2S_Rec_Start(); //开始I2S数据接收(从机)

}

相关文档
最新文档