簡介
SPI模式由基于flash的SD存儲卡提供的輔助通信協(xié)議組成。
這種模式是SD存儲卡協(xié)議的一個子集,設(shè)計用于與SPI通道通信,通常在摩托羅拉(以及最近一些其他供應(yīng)商)的微控制器中發(fā)現(xiàn)。
接口是在上電后的第一個reset (CMD0)命令中選擇的,設(shè)備上電后不能更改。
SPI標準只定義了物理鏈路,而不是完整的數(shù)據(jù)傳輸協(xié)議。
SDl存儲卡SPI實現(xiàn)使用SD存儲卡協(xié)議和命令集的一個子集。
SPI模式的優(yōu)點是能夠使用現(xiàn)成的主機,從而將設(shè)計工作量降至最低。
缺點是SPI模式相對于SD模式的性能損失(例如單個數(shù)據(jù)線和每個卡的硬件CS信號)。
2.00版本以后定義的SD模式下的命令和功能在SPI模式下不支持。
即使卡處于SPI模式,卡也可以響應(yīng)命令和功能,但主機不應(yīng)該在SPI模式下使用它們。
SPI總線協(xié)議
雖然SD存儲卡通道是基于命令和數(shù)據(jù)位流,由開始位發(fā)起,由停止位終止,SPI通道是面向字節(jié)的。每個命令或數(shù)據(jù)塊都是由8位字節(jié)組成的,并且是與CS信號對齊的字節(jié)(即長度是8個時鐘周期的倍數(shù))。卡開始計數(shù)SPI總線時鐘周期在CS信號的斷言。每個命令或數(shù)據(jù)令牌應(yīng)對齊到8時鐘周期邊界。與SD存儲卡協(xié)議類似,SPI消息由命令、響應(yīng)和數(shù)據(jù)鎖令牌組成。主機和卡之間的所有通信都由主機(master)控制。
主機通過斷言CS信號低來啟動每個總線事務(wù)。與SD模式相反,所選卡總是響應(yīng)命令。
當卡在讀取操作中遇到數(shù)據(jù)檢索問題時,它將響應(yīng)一個錯誤響應(yīng)(替換預(yù)期的數(shù)據(jù)塊),而不是像SD模式那樣響應(yīng)一個超時。
此外,在寫操作期間發(fā)送到卡的每個數(shù)據(jù)塊都將使用數(shù)據(jù)響應(yīng)令牌進行響應(yīng)。
在標準容量存儲卡的情況下,一個數(shù)據(jù)塊可以像一個卡寫塊一樣大,也可以像單個字節(jié)一樣小。部分塊讀/寫操作是由cssregister中指定的卡選項啟用的。對于SDHC和SDXC卡,塊長度固定為512字節(jié)。
CMD16設(shè)置的塊長度僅用于CMD42,不用于內(nèi)存數(shù)據(jù)傳輸。因此,部分塊讀/寫操作也被禁用。另外,不支持寫保護命令(CMD28、CMD29和CMD30)。
模式選擇與初始化
SD卡在SD模式下上電。在接收復(fù)位命令(CMD0)期間,如果CS信號被斷言(負),則將進入SPl模式。如果卡識別到需要SD模型,它將不響應(yīng)命令并保持在SD模式。
如果需要SPl模式,則該卡將切換到SPI并以SPI模式R1響應(yīng)響應(yīng)。返回SD模式的唯一方法是進入電源循環(huán)。
在SPl模式下,不觀察SD模式下的SD Cardl協(xié)議狀態(tài)機。SPI模型支持的所有SD卡命令始終可用。
SPI模式初始化順序如下圖所示。
SEND_IF_COND (CMD8)用于校驗SD Memory Card接口的工作狀態(tài)。
CMD8的參數(shù)格式與SD模式下定義的格式相同。
卡通過分析CMD8的參數(shù)來檢測運行狀態(tài)的有效性,主機通過分析CMD8的響應(yīng)來檢測運行狀態(tài)的有效性。
供電電壓由參數(shù)中的VHS字段表示。
卡假定VHS中規(guī)定的電壓為當前提供的電壓。
在任何給定時間,VHS中只有1位被設(shè)置為1。
檢查模式用于主機檢查主機與卡之間通信的有效性。
如果該卡指示非法命令,則該卡是遺留的卡,不支持cMD8。
如果卡支持CMD8并且可以在供電電壓上操作,則響應(yīng)將返回在命令參數(shù)中設(shè)置的供電電壓和檢查模式。
如果響應(yīng)中的VCA設(shè)置為0,則卡不能在供電電壓下工作。
如果校驗?zāi)J讲黄ヅ?,CMD8通信無效。
此時,建議重試CMD8順序。
READ_OCR (CMD58)旨在為SD存儲卡主機提供一種機制,以識別與主機所需的Vop范圍
不匹配的卡。如果主機不接受電壓范圍,它將不進行進一步的初始化順序。
OCR寄存器中的電平應(yīng)相應(yīng)地定義(參考之前的介紹寄存器的文章)。
SD_SEND_OP_COND (ACMD41)用于啟動初始化并檢查卡是否已完成初始化。
必須在第一個ACMD41之前發(fā)布CMD8。CMD8的接收擴展了CMD58和ACMD41的功能;
ACMD41論證中的HCS (High Capacity Support)和CMD58響應(yīng)中的CCSl (Card Capacity Status)。卡忽略了HCS,不接受CMD8。標準容量SD存儲卡忽略HCS。
ACMD41的R1響應(yīng)中的“in idle state”位被卡用來通知主機是否完成了ACMD41的初始化。將此位設(shè)置為“1”表示卡仍在初始化。將該位設(shè)置為“0”表示初始化完成。
主機重復(fù)發(fā)出ACMD41,直到該位被設(shè)置為“0”??ㄖ辉诘谝粋€ACMD41檢查ocl中的HCS位。在重復(fù)ACMD41的同時,主機不能發(fā)出除CMDO以外的其他命令。
初始化完成后,主機應(yīng)從CMD58的響應(yīng)中獲取CCS信息,當卡接受CMD8并完成初始化后,CCS才有效。CCS-0表示該卡是SDSD。CCS-1表示卡是SDHC或SDXC。
審核編輯 黃宇
-
SPI
+關(guān)注
關(guān)注
17文章
1688瀏覽量
91174 -
SDIO
+關(guān)注
關(guān)注
2文章
72瀏覽量
19283 -
SD NAND
+關(guān)注
關(guān)注
0文章
80瀏覽量
1200
發(fā)布評論請先 登錄
相關(guān)推薦
評論