上一回【Maker電子學】Flash 記憶體的原理與應用—PART22,我們說明了如何從 SD 卡中讀取資料,也說明了讀取資料的時序,以及單一 block 讀取指令 CMD17 和連續讀取指令 CMD18。
這一回我們要介紹如何抹除 SD 卡上的資料及寫入資料,由於 flash 記憶體的擦除及寫入速度比讀取慢很多,在寫入時要做的檢查及等待會比讀取時要複雜一點。
抹除
我們在介紹 flash 記憶體的工作原理時,有說明過,flash 記憶體在寫入之前必須要先背抹除(erase),抹除就是把要抹除區域的所有內容變成 1,之後在寫入時,寫入電路可以將特定的儲存單元從 1 變成 0,但沒辦法將 0 變成 1(只有「抹除」這個動作可以將整區的儲存單元都從 0 變成 1)。
SD 卡的抹除動作分成三個指令:
- CMD32(ERASE_WR_BLK_START):設定開始抹除的位址
- CMD33(ERASE_WR_BLK_END):設定結束抹除的位址
- CMD38(ERASE):抹!
這三個指令一定要按照上面的順序下,否則在下最後一個指令時 SD 卡會回應錯誤。
CMD32 和 CMD33 的格式是這樣的:
(圖片來源:Bird 提供)
它其實跟我們之前介紹的讀取指令一樣,只有一個 32-bit 的參數,代表要從哪裡到哪裡需要被抹除。和讀取指令的定義一樣,如果是標準 SD 卡,定址的單位就是 byte;如果是 SDHC、SDXC,定址的單位就是 512-byte。
設定好要抹除的範圍之後,就可以用 CMD38 將這個區域的內容抹除了。
CMD38 的格式更簡單:
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏