前天玩板子弄坏的两张sd卡,虽然不能写但是还能读能读。用原子的MP3例程能播放,但是我改的代码却不成功,请教下各位
f_mount ( 0 , &fs );
if ( f_open ( &file , "1.mp3" , FA_READ ) == FR_OK )
SendString("打开\n");
else
SendString("打开失败\n");
delay_init(72);
VS_HD_Reset();
SendString("硬复位\n");
VS_Soft_Reset(); //软复位VS10XX
SendString("软复位\n");
set10XX(); //设置音量等信息
SendString("设置音量\n");
while(1){
SPI1_SPEED(SPI1_4DIV);
res=f_read(&file, buffer, BufSize, &br);
if ((res!=FR_OK)||(br==0))
break; // error or eof
SPI1_SPEED(SPI1_8DIV);
tp=0;
if (br<BufSize){
cnt=br;
while (cnt--){
while(!VS_DQ);
CLR_VS_XDCS;
//SendByte(buffer[tp++]);
SPI1_WriteByte(buffer[tp++]);//送数据给VS1003
SBIT_VS_XDCS;
}
}else
while(tp<BufSize){
while(!VS_DQ);
CLR_VS_XDCS;
for (cnt=0;cnt<32;cnt++){
//SendByte(buffer[tp++]);
SPI1_WriteByte(buffer[tp++]);//送数据给VS1003
}
SBIT_VS_XDCS;
}
}
switch (res) {
case 0: SendString("FR_OK\n");
break;
case 1: SendString("DISK_ERR\n");
break;
case 2: SendString("INT_ERR\n");
break;
case 3: SendString("NOT_READY\n");
break;
case 4: SendString("NO_FILE\n");
break;
case 5: SendString("NO_PATH\n");
break;
case 6: SendString("INVALID\n");
break;
default:
;
}
VS_HD_Reset(); //硬复位
VS_Soft_Reset();//软复位
if ( f_close ( &file ) == FR_OK )
SendString("关闭\n");
else
SendString("关闭失败\n");
if ( f_mount ( 0 , NULL ) == FR_OK )
SendString("卸载\n");
SendString("end\n");
while(1);
上面SendByte()函数是串口输出,如果我不用传数据给vs1003,只是读文本数据发给串口,能成功显示。。纠结啊
串口输出为:
初始化
spi初始化
sine
打开
硬复位
软复位
设置音量
DISK_ERR
关闭
卸载
end
|