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