STM32F4 视频播放实验,音频缓冲区问题

2019-07-21 01:02发布

音频缓冲区是  u8 *i2sbuf[4];                               //共4帧

而DMA配置的缓冲区为I2S2_TX_DMA_Init(i2sbuf[1],i2sbuf[2],avix.AudioBufSize/2);   i i2sbuf[1]和i2sbuf[2],

问题:请问i2sbuf[0] ,  ii2sbuf[1]i2sbuf[2],i2sbuf[3] 这四个缓冲区在I2SDMA 发送音频数据的过程是怎么切换的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
yefeng159
2019-07-21 12:49
void audio_i2s_dma_callback(void) 
{      
i2splaybuf++;
if(i2splaybuf>3)i2splaybuf=0;
if(DMA1_Stream4->CR&(1<<19))
{  
DMA_MemoryTargetConfig(DMA1_Stream4,(u32)i2sbuf[i2splaybuf], DMA_Memory_0);
}
else 
{  
    DMA_MemoryTargetConfig(DMA1_Stream4,(u32)i2sbuf[i2splaybuf], DMA_Memory_1); 


中断回调函数填充的是i2sbuf[0],i2sbuf[1],i2sbuf[2],i2sbuf[3]

I2S2_TX_DMA_Init(i2sbuf[1],i2sbuf[2],avix.AudioBufSize/2) 设置的缓冲区是i2sbuf[1]和i2sbuf[2],


问题来了:i2sbuf[0]和i2sbuf[3]中的数据怎么通过I2S DMA发送出去

一周热门 更多>