打印

stm32cubemx stm32f4 i2s2 发送不能直接发送buffer1,buffer2的数据

[复制链接]
237|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
卡拉瓦乔|  楼主 | 2018-7-16 07:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BUFF_MAX_SS=1024;

void Audio_Play(uint32_t I2S_AudioFreq)
{   uint16_t res,i=0;
        uint8_t buffer_switch = 1;
        XferCplt = 0;
        
        printf("Welcome to use UDA1380 I2S test:
");

//        UDA1380_Configuration();        

        f_lseek(&fileR, WaveCounter);
    f_read (&fileR, buffer1, BUFF_MAX_SS, &BytesRead);
    f_read (&fileR, buffer2, BUFF_MAX_SS, &BytesRead);

        
        I2S_AudioFreq_Config(I2S_AudioFreq);
  /* Start playing wave */

        res=HAL_I2S_Transmit_DMA(&hi2s2,buffer1, BUFF_MAX_SS/2);        
               
        printf("  >WaveDataLength : %fM
",(float)WaveDataLength/1000/1000);
        while(WaveDataLength != 0)
    {
                while(XferCplt == 0)  //DMA传输完成中断里 XferCplt == 1
                {
                        /* wait for DMA transfert complete */
                        /* You can write some code for operate on UDA1380 */
                }
                XferCplt = 0;

                if(buffer_switch == 0)
                {
                        /* Play data from buffer1 */        
                        HAL_I2S_Transmit_DMA(&hi2s2,buffer_ctl.tmp1, BUFF_MAX_SS);
                        /* Store data in buffer2 */
                        res=f_read (&fileR, buffer2, BUFF_MAX_SS, &BytesRead);
                        for(i=0;i<512;i++)
                        {
                                buffer_ctl.tmp2=buffer2;        
                        }                                 
                        buffer_switch = 1;
                }
                else
                {                  
                        /* Play data from buffer2 */
                        HAL_I2S_Transmit_DMA(&hi2s2,buffer_ctl.tmp2, BUFF_MAX_SS);
                        /* Store data in buffer1 */
                        res=f_read (&fileR, buffer1, BUFF_MAX_SS, &BytesRead);
                        for(i=0;i<512;i++)
                        {
                                buffer_ctl.tmp1=buffer1;        
                        }                                
                        buffer_switch = 0;
                }
           if(BytesRead!=1024||res!=0)
                {
                break;         
                }
        }
        printf("Transfer Complete
");
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

438

帖子

0

粉丝