F4开发板 怎样同时打开播放与采集,单独两种都没有问题(付部分代码)

2019-07-21 00:40发布

[mw_shl_code=c,true]单独从网络接收音频数据播放,或者单独采集音频发送出去,测试都是正常的,现在我需要一边采集一边播放,结果是只能打开一种,回调函数都正常能显示采集数据或者到播放数据,我感觉是什么参数设置错了(开启了一种把另外一种关闭了)一周都没有什么眉目了,来求助下,感谢大家帮忙![/mw_shl_code] [mw_shl_code=c,true]//设置播放参数[/mw_shl_code] [mw_shl_code=c,true]void PCMPlay(void) { u8 key; u8 t=0; u8 res; u32 fillnum; audiodev.file=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); audiodev.i2sbuf1=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE); audiodev.i2sbuf2=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE); audiodev.tbuf=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE); //打开播放 recoder_enter_play_mode(); WM8978_I2S_Cfg(2,0); I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b); I2S2_SampleRate_Set(16000);//?è?????ù?? I2S2_TX_DMA_Init(audiodev.i2sbuf1,audiodev.i2sbuf2,WAV_I2S_TX_DMA_BUFSIZE/2); i2s_tx_callback=wav_i2s_dma_tx_callback; audio_stop(); mymemset(audiodev.i2sbuf1,0,WAV_I2S_TX_DMA_BUFSIZE); mymemset(audiodev.i2sbuf2,0,WAV_I2S_TX_DMA_BUFSIZE); audio_start(); }[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true]//进入放音模式 void recoder_enter_play_mode(void) { WM8978_ADDA_Cfg(1,0); WM8978_Input_Cfg(0,0,0); WM8978_Output_Cfg(1,0); WM8978_MIC_Gain(0); I2S_Play_Stop(); I2S_Rec_Stop(); recoder_remindmsg_show(1); }[/mw_shl_code] 因为先进入放音模式,就不会停止录音模式的I2S采集那些,希望指正下,感谢
[mw_shl_code=c,true]//进入录音模式 void recoder_enter_rec_mode(void) { WM8978_ADDA_Cfg(0,1); WM8978_Input_Cfg(1,1,0); // WM8978_Output_Cfg(0,1); WM8978_MIC_Gain(35); WM8978_I2S_Cfg(2,0); I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b); I2S2ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_DataFormat_16b); I2S2_SampleRate_Set(16000); I2S2_TX_DMA_Init((u8*)&i2splaybuf[0],(u8*)&i2splaybuf[1],1); DMA1_Stream4->CR&=~(1<<4); I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2); i2s_rx_callback=rec_i2s_dma_rx_callback; I2S_Play_Start(); I2S_Rec_Start(); recoder_remindmsg_show(0); } [/mw_shl_code]

[/mw_shl_code] [mw_shl_code=c,true][/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。