不知道为什么一调用这个函数就读读取不了!不知道是哪里错了!
u8 SD_WriteDisk(u32 sector,u8* buffer,u8 cnt)
{
u8 response;
u32 i=512;
u16 retry=200;
if(cnt==1)
{
response=SD_WriteSingleSector(sector,buffer);
if(response==0) { return 0; }
}
else
{
SD_CS_LOW;
SD_SendCmd(CMD55,0,0Xff);
SD_SendCmd(CMD23,cnt,0Xff); //发送预先清除指令
do
{
response=SD_SendCmd(CMD25,sector<<=9,0Xff);//连续读命令
retry--;
} while((response!=0x00)&&(retry>0));
if(retry!=0)
{
SPI_ReadWriteByte(0xfc);
do{
while(i--) //送512字节数据 send 512 bytes data
SPI_ReadWriteByte(*buffer++);
SPI_ReadWriteByte(0xff); //dummy crc
SPI_ReadWriteByte(0xff); //dummy crc
response=SPI_ReadWriteByte(0xff);
if((response&0x1F)==0x05)
{
retry=200;
do {
response =SPI_ReadWriteByte(0xff);
retry--;
}while(!(response&0x01)&&(retry>0));
}
else
{
SD_CS_HIGH;
SPI_ReadWriteByte(0xff);
return 0;
}
buffer=buffer+512;
}while(--cnt);
SPI_ReadWriteByte(0xfd);
SD_CS_HIGH;
SPI_ReadWriteByte(0xff);
return 0;
}
}
SD_CS_HIGH;
return 1;
} |