先说下问题:
我通过读取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; /*播放结束*/
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
嗯嗯,我在看看
一周热门 更多>