在mtk6223的軟t卡上實現對sdhc卡的讀寫

公司目前項目軟t卡功能只支持2g以下的t卡。但聽說有的廠家已經實現了對2g以上sdhc卡的讀寫。於是想嘗試看能不能通過修改代碼的方式實現對sdhc卡的讀寫。上網搜索了下相關知識。普通的t卡和sdhc卡的區別主要有以下幾點:

 

 

 

 1.在對t卡復位後,如果要實現對sdhc卡的讀寫操作,必須要先發出cmd8命令cmd8[]=  {0x48,0x00,0x00,0x01,0xaa,0x87};

 

2.其後對卡進行激活操作時,所發出的cmd1命令也有區別CMD1[]={0x41,0x40, 0x00, 0x00, 0x00, 0xff};否則可能導致在激活sdhc卡時失敗.

 

3.獲取卡的容量大小時,通過讀取CSD參數從而計算出卡的容量大小,在這裏普通t卡與sdhc卡也不相同,在此簡單列出sdhc的block容量計算方法:

 

           c_size = csdbuf[7]&0x3f;

           c_size <<= 8;

           c_size |= csdbuf[8];

 

           c_size <<= 8;

           c_size |= csdbuf[9];

           c_size++;

 

            gSpiSd_Handle->sds.block_num =c_size*1024;

 

4.在ReadSectors和writeSector時,sdhc卡和普通的卡傳遞的命令地址參數也是不相同的,普通的t卡的地址參數是Sector * 512,而sdhc直接傳遞Sector 即可.

 

 

 

   根據以上列出的4點,在代碼中做了相應的修改,調試了一下,順利實現了對金士頓的4gt卡的讀寫.當然,如果要達到量產要求,還得做更多的修改完善.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章