那应该是你其他地方还改动了,我们的例程,是512的,没有任何问题啊,读取4096还是更大的数据块,都是可以的。
//读SD卡
//buf:读数据缓存区
//sector:扇区地址
//cnt:扇区个数
//返回值:错误状态;0,正常;其他,错误代码;
u8 SD_ReadDisk(u8*buf,u32 sector,u8 cnt)
{
u8 sta=SD_OK;
u8 n;
if(CardType!=SDIO_STD_CAPACITY_SD_CARD_V1_1)sector<<=9;
if((u32)buf%4!=0)
{
for(n=0;n<cnt;n++)
{
sta=SD_ReadBlock(SDIO_DATA_BUFFER,sector+512*n,512);//单个sector的读操作
memcpy(buf,SDIO_DATA_BUFFER,512);
buf+=512;
}
}else
{
if(cnt==1)sta=SD_ReadBlock(buf,sector,512); //单个sector的读操作
else sta=SD_ReadMultiBlocks(buf,sector,512,cnt);//多个sector
}
return sta;
} |