本帖最后由 又见龙楼 于 2018-12-7 13:52 编辑
求各位大神指教……
问题是这样的,我用disk_read程序读SD卡扇区,结果读到的跟我用winhex看到的根本不一样,可以说是一堆乱码,相信大家都知道最后两位是55AA才是正确的,可我是前面几位是55AA,后面的数据都不知道从哪里来的,换张卡也一样,最可怕的是,换个扇区号也一样,几天了,实在绝望了,求大家赐教……
对了,我用的是英飞凌芯片,底层是没什么问题的。
这是代码
- DRESULT disk_read (
- BYTE drv, /* Physical drive number (0) */
- BYTE *buff, /* Pointer to the data buffer to store read data */
- DWORD sector, /* Start sector number (LBA) */
- UINT count /* Number of sectors to read (1..128) */
- )
- {
- int m,n;
- if (drv || !count) return RES_PARERR; /* Check parameter */
- if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check if drive is ready */
- if (!(CardType & CT_BLOCK)) sector *= 512; /* LBA ot BA conversion (byte addressing cards) */
- if (count == 1)
- { /* Single sector read */
- m=send_cmd(CMD17, sector);
- n=rcvr_datablock(buff, 520);
- strange[3]=m;
- strange[4]=n;
- if((m==0)&&(n==1)) count = 0;
- }
- else
- {
- /* Multiple sector read */
- if (send_cmd(CMD18, sector) == 0) { /* READ_MULTIPLE_BLOCK */
- do {
- if (!rcvr_datablock(buff, 512)) break;
- buff += 512;
- } while (--count);
- send_cmd(CMD12, 0); /* STOP_TRANSMISSION */
- }
- deselect();
- strange[2]=count;
- return count ? RES_ERROR : RES_OK; /* Return result */
- }
- }
这是读取结果
|