VS1053B解码MP3问题

2019-08-15 16:04发布

先说下问题:
我通过读取SD卡中的MP3文件发送给VS1053却听不到任何声音(正弦测试已经通过)
希望大家能够看看我的代码哪里出现了问题
/*
*******************************************************************************
*                      MP3_PlaySong()
*功  能: 播放一首歌曲
*参  数: _pName :路径名称
*         _ucType:文件类型
*返回值: 无
*说  明: 无
*******************************************************************************
*/
uint8_t MP3_PlaySong(uint8_t *_pName,uint8_t _ucType)
{
        FRESULT res;
        FATFS   fs;
        FIL     fil;
        UINT    bw;
       
        KEY_FIFO_T _tKey;
       
        uint8_t j;
        uint8_t buf[1024];  /*存放数据*/
        uint16_t cnt;
       
        uint8_t playflag=0;
        uint8_t playsize=0;
       
        VS1053B_SoftRst();
       
        VS1053B_SetSpeed(1); /*设置成低速模式*/
       
        while(!VS_DRQ_STATUS());
       
  if(_ucType == FATFS_FILEISFLAC) /*如果为flac模式加载插件*/
  {
          VS1053B_WriteReg(VS1053B_CLOCKF,0xf800); /*设置时钟频率*/
                while(!VS_DRQ_STATUS());                 /*等待写完成*/
                VS1053B_FLAC_WritePlugin();
        }               
        else
        {
          VS1053B_WriteReg(VS1053B_CLOCKF,0xb800);
                while(!VS_DRQ_STATUS());
                VS1053B_FLAC_WriteNull();
        }
       
        VS1053B_SetSpeed(2); /*设置为高速模式*/
        f_mount(0,&fs);      /*挂载SD卡*/
        res = f_open(&fil,(const TCHAR *)_pName,FA_READ);
       
        if(res) {} /*SD卡打开失败*/
                                   
  while(1)
        {       
                f_lseek(&fil,playsize*1024);
                res = f_read(&fil,buf,1024,&bw);/*读取1024个字节放入缓冲区*/
                if(res == RES_OK) /*打开成功*/
                {
                  cnt = 0;
                        while(cnt < bw)     /*Sd卡读取一个扇区512字节*/
                        {
                                VS_DCS_0();       /*选中数据端口*/
                          if((VS_DRQ_STATUS()!=0)&&(playflag==0))
                                {
                                  for(j=0;j<32;j++)
                                          VS1053B_ReadWriteByte(buf[cnt+j]);  /*写入32字节的数据*/
                                        cnt += 32;     
                                        LED_TOGGLE();
                                }
                                VS_DCS_1();
                        }
                        playsize += 1;
                }
                if(res||bw == 0) break;
        }               
        while(!VS_DRQ_STATUS());
        VS1053B_SetSpeed(1);
        MP3_MusicCancelPlay();
        f_close(&fil);
        f_mount(0,NULL); /*卸载文件系统*/
       
        return MUSIC_END; /*播放结束*/
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。