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条回答
FantaSy_
1楼-- · 2019-07-21 03:03
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-21 08:36
在中断回调函数,仔细看代码吧.
yefeng159
3楼-- · 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发送出去
正点原子
4楼-- · 2019-07-21 15:28
 精彩回答 2  元偷偷看……

一周热门 更多>