SDIO協議讀寫SD卡之卡識別模式介紹

2021-10-24 11:30:50 字數 3207 閱讀 9517

sd卡的工作模式分為兩類,分別為卡識別模式資料傳輸模式,在sd卡上電或者主機發出復位命令之後的預設工作模式為卡識別模式。本文主要對卡識別模式進行介紹。

在利用sdio協議進行sd卡驅動開發中,與spi協議驅動序列flash類似,也是利用各種不同的命令實現對sd卡的控制。此處進行乙個大致的闡述。

在sdio協議中,一共有64個命令,且每個命令的長度均為48-bits。另外,命令的格式都是固定的,都以0作為起始位,以1作為結束位,唯一不同的便是中間部分的內容,包括傳輸方向、引數、位址、crc等內容。

無響應廣播命令bc、有響應廣播命令bcr、無響應定址命令ac和有響應定址命令acr。顧名思義,廣播命令便是整個匯流排上都可以接收到的命令,而定址命令就是主機傳送給指定sd卡的命令。至於響應,便是主機傳送某些命令時,sd卡會向主機反饋一些資訊,這就被稱為響應。而響應也可以被分為短響應長響應,具體的講解在後續涉及的地方進行詳述。

首先,我們通過下面的狀態機流程圖,對卡識別模式下的流程進行乙個大概但是全面的了解,畢竟之後的sd卡驅動程式均是基於此流程圖進行開發的。我們也將通過下面的狀態機,對後續的內容進行展開。

上圖中,紅色標記表示的是命令黃色標記表示的是狀態,而亮青色表示的是進入spi模式的方式,本文暫時不進行展開。下面對卡識別模式下使用的命令的作用進行介紹,但是詳細的內容,請讀者參考sdio協議官方文件,也可以理解得更加深刻。

cmd0命令也稱為go_idle_state,即軟體復位命令。由上圖中的描述可知,在sdio協議中,無論sd卡當前處於什麼狀態,只要主機向sd卡傳送cmd0命令之後,那麼匯流排上所有的sd卡便會返回工作最開始的待機狀態。cmd0的官方描述如下:

cmd8命令也稱為send_if_cond,該命令最主要的作用是判斷sd卡是否可以在當前的電壓下進行正常工作。在實際應用中,按照下表向該命令的vhs引數中寫入相應的值,便可以進行上述測試。

比如,如果當前晶元提供的電源為3v,那麼,向cmd8命令的vhs寫入0001b即可進行測試。通過r7響應內容便可以判斷sd卡是否支援當前電壓,如果sd卡不支援當前的電壓,那麼將不會做出響應,且sd卡將保持在空閒狀態

當sd卡的協議為v2.00以及之後的版本中,必須在傳送cmd8之後,才能傳送acmd41命令。且為了區別acmd41cmd41命令,在需要傳送acmd41命令之前,需要先傳送cmd55命令。

acmd41命令的主要作用是初始化sd卡,主要是配置sd卡的容量大小效能等,然後通過r3響應,判斷對sd卡的配置是否正確。要實現sd卡的初始化,按照下面的狀態機進行程式設計即可。

由上圖可知,只有當acmd41命令的引數s18a以及r3響應的s18r均為0時,才允許主機向sd卡傳送cmd11命令。該命令的主要作用是可以切換sd卡的工作電壓範圍,將其工作電壓切換為1.8v。由於暫時沒有這個需求,故此處僅作簡單的介紹。

不滿足上述傳送cmd11命令的任一條件時,主機便需要直接傳送cmd2命令。該命令的作用是獲取sd卡的cid資訊,類似於flash的id資訊。該資訊是儲存在sd卡的cid暫存器中。當主機傳送該命令之後,sd卡便會通過r2響應,將該資訊反饋給主機。

cmd3命令是由卡識別模式切換為資料傳輸模式必經之路。該命令的作用是獲取sd卡的相對位址rca,因為主機是通過這個位址對匯流排上的sd卡進行定址的,所以該命令是必須的。而sd**過該命令的響應返回其自身的相對位址,當主機接收到rca位址之後,便會進入待機狀態,從而進入資料傳輸模式。如果主機想為sd卡重新分配乙個rca位址,那麼只需要再傳送一次cmd3命令,sd卡便會返回乙個新的rca位址。

狀態機程式設計是開發sd卡驅動的基礎,只有深刻理解了其各個狀態的含義及行為之後,才有可能正確實現sd卡的讀寫操作。

本文主要對sd卡工作在卡識別模式下時的工作流程以及相關的命令進行了闡述,如果需要在實際應用中實現,還需要讀者自己去深刻體會。更多的內容將在後面的文章中進行介紹,本文如有不足或者疏漏之處,還請各位讀者不吝指正,我會在以後的文章中進行完善和規避,謝謝!

sdio卡識別與sd的異同

對於sd i o卡而言,卡識別過程如下 1.匯流排被啟用 2.sdio卡主機傳送io send op cond cmd5 命令 3.得到的響應是卡的操作條件暫存器的內容 如果有響應,並且響應中的mp位為0,說明對應卡槽中的卡為sdio卡,進而開始sdio卡的初始化流 程 如果傳送cmd5命令沒有響應...

SD卡讀寫 Verilog實現SD卡讀寫

目前常見的sd卡有兩種形式,一種是標準的sd卡,另外一種是tf卡,無論標準的sd卡或者tf卡,其基本協議是相同的,因此對於程式設計來說,這兩種型別的sd卡的讀寫方式是相同的。針對兩種不同型別的sd卡,其引腳介面訊號定義如下圖所示 標準sd卡 tf卡 對於上述的兩種型別的sd卡,都支援兩種操作模式,分...

sd卡的讀寫

sd卡全稱為 secrue digital memory card,具有輕巧 可加密 傳輸速度高 適用於手持裝置使用等優點。二 匯流排介面 sd需要高速讀寫,同時也要使手持等嵌入式裝置能方便使用,特設有兩個訪問介面中 sd 模式介面和spi 介面。sd卡在上電初期,卡主控通過檢測引腳 dat3 來決...