|

【Maker電子學】Flash 記憶體的原理與應用—PART22

   
作者:Bird

上一回【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註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Liang Bird

Author: Liang Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *