我做的SD卡的fat32文件系统,普通的正常读写没有任何问题,譬如利用欧冠测试数据写入到某个扇区,然后回读比较,结果均正常,读取硬件信息,结果正常,但是读取BPB数据就不正常:512BYTE的0扇区数据,前510全为0,理论上不正常,后面两位为0x55,0xaa,结果又正常。
我现在怀疑可能是我读取BPB扇区的位置不对,如果有哪位知道是在哪个位置读取的请指教一下~~
下面有读取BPB数据的程序,请大虾帮忙分析分析~~~
void fnSD_InitDrive(void) { MMC_read_sector(0,buffers.currentsector.u8data);//在0扇区处读取BPB数据 buffers.SectorCurrentlyLoaded=0xFFFFFFFF; }
uint8_t MMC_read_sector(uint32_t addr,uint8_t *Buffer) { uint8_t temp; uint32_t i; SPI_TransferByte(0xff); temp = Write_Command_MMC(MMC_READ_BLOCK,addr<<9); if(temp != 0x00) { return(READ_BLOCK_ERROR); } while(SPI_TransferByte(0xff) != 0xfe); for(i=0;i<512;i++) { *Buffer++ = SPI_TransferByte(0xff); } SPI_TransferByte(0xff); SPI_TransferByte(0xff); return (1); }
|