|

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

   
作者:Bird

上一回【Maker電子學】記憶體的原理與應用—PART18,我們介紹了 SD 卡的容量分級以及速度分級標準,並說明了達到不同傳輸速度所使用的技術,包含早期的單端邏輯訊號到較新的差動訊號等技術。這一回我們要開始從軟體的觀點,來看看如何存取 SD 卡或 eMMC。

卡片的電源

在進入軟體的存取協定之前,我們還是要先來看幾個基本的硬體參數,其中最重要的就是電源。

早期的 SD 卡全部運作在 3.3 V(嚴格來說是 2.7 V 到 3.6 V)的電源及介面電壓,而在 SD 3.0 標準出來後,為了降低 EMI 及耗電,較新的 UHS-I 模式都使用 1.8 V(嚴格來說是 1.70 V 到 1.95 V)的介面電壓。由於較新的卡片支援不同的電壓,為了保證系統的相容性,讓舊的裝置可以使用新的卡片、新的裝置也可以使用舊的卡片,SD 卡在初始化的過程中有一個蠻複雜的辨認過程。

首先,為了保證系統的相容性,所有的 SD 卡在一開始工作時,都使用 3.3 V 供電,並使用 3.3 V 完成初始化以及一些卡片辨認的過程,包括卡片支援哪些速度、模式、電壓等。如果卡片支援較新的 1.8 V 低電壓模式,系統可以送出一個「切換電壓」的指令 CMD11,並與卡片同步將電壓從 3.3 V 切換到 1.8 V 的模式,一旦卡片切到 1.8 V 的工作模式,就只能停留在 1.8 V 的模式,直到斷電 reset 重來。

這裡有件事要特別注意的是,當卡片進入 1.8 V 模式時,只有卡片的 I/O 介面電壓(signaling voltage)變成 1.8 V,供應給卡片的電源始終維持 3.3 V 不會改變。

卡片的工作模式

我們之前說過,SD卡從MMC演變過來時,保留了最早最古老的SPI模式,而SD協會也很佛心的在規格中要求所有的卡片都要向前相容到上古時代,直到SDUC出現後,SD協會才在規格中放寬,讓SDUC不用支援SPI模式。

為了SD標準的尊嚴,所有的SD卡在開機時都是處在SD bus模式,如果要將卡片設定成SPI模式,需要將 CS 接腳拉 low,同時送一次CMD0去 reset 卡片,這時卡片就會進入SPI模式。

在 SD 模式下,傳資料的 DAT0-3 都是雙向的,但 SPI 介面的每一隻腳都是固定方向的,我們有辦法用 SPI 介面傳送 CMD0 給 SD 卡的任務嗎?來看看 SD 模式與 SPI 模式的腳位對應就知道了:

(圖片來源:Bird 提供)

SPI 模式的 MOSI 訊號剛好對應到送指令給 SD 卡的 CMD 接腳,因此我們可以用 SPI 的 MOSI 發送 CMD0 指令給 SD 卡,而 SD 卡收到指令後,會用 DAT0 訊號回應對指令的反應,這個訊號剛好接到 SPI 的 MISO,因此我們可以透過 MISO 讀取 SD 卡對 CMD0 指令的回答,來知道指令有沒有發送成功。當然,SD 模式的 clock 接腳也是 SPI 模式的 clock 接腳,所以在兩個模式下都使用這個 clock 訊號來取樣指令或資料訊號。

送指令

SPI 模式的資料傳輸都是以 byte 為單位,而 SD 模式下的指令,又叫做 token,則是 48-bit,因此我們可以用 6 個 SPI 的 byte 傳輸來完成一次 CMD0 的發送。

SD 模式下的指令格式是這樣:

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Liang Bird

Author: Liang Bird

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

Share This Post On

Submit a Comment

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