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

2019-07-20 09:23发布

WM8978声卡芯片是支持录音的同时进行播放,该功能可以作实时对讲,只需要设置好对应的寄存器即可。以下程序是在原子哥STM32F407探索者开发板的例程上修改的,先附上原理图:


WM8978原理图.jpg

大致思路就是先分别申请好录音与播放使用到的内存,然后对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_DataFormat_16b);            //飞利浦标准,主机发送,时钟低电平有效,16位帧长度            I2S2ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_DataFormat_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_BUFSIZE/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数据接收(从机)}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
会会问情
1楼-- · 2019-07-20 10:16
能具体一点吗? app_wm8978_volset(wm8978set.mvol);是怎么实现的
lzq12
2楼-- · 2019-07-20 11:37
 精彩回答 2  元偷偷看……
会会问情
3楼-- · 2019-07-20 15:42
我按照您的那个设置了一下  没有声音,怎么设置录音和播放同时进行呢,使用文件吗?两个程序操作一个文件  一个写一个读?
lzq12
4楼-- · 2019-07-20 17:48
会会问情 发表于 2017-7-14 19:00
我按照您的那个设置了一下  没有声音,怎么设置录音和播放同时进行呢,使用文件吗?两个程序操作一个文件   ...

你是把录音的数据发出去,然后又从其他地方拿到播放的数据,这样来同时录音和播放的吧?主要就是先对WM8978设置好相应的寄存器,录音是在DMA中断里面进行的,这个只要初始化好就可以,播放的话,就看你怎么把获取的数据拿来解码和播放了,我是单独开一个任务来播放的
yankaiyutong
5楼-- · 2019-07-20 18:49
 精彩回答 2  元偷偷看……
lzq12
6楼-- · 2019-07-20 21:04
yankaiyutong 发表于 2017-8-1 14:29
请教楼主一个问题,同时录音和放音是在什么情况下进行的?
1:录音后台进行,比如录制FM收音机的音频。播 ...

你这个应用也可以,但录音和放音同时进行我们是用在对讲上面的

一周热门 更多>