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

瀚海微SD NAND之SD 協(xié)議(42)SPI總線(xiàn)時(shí)序

瀚海微SD NAND之SD 協(xié)議(40)SPI模式CMD8的操作

瀚海微SD NAND之SD 協(xié)議(39)SPI模式 Transaction Packets

瀚海微SD NAND之SD 協(xié)議(38)寄存器&復(fù)位&開(kāi)解鎖
瀚海微SD NAND之SD 協(xié)議(37)SPI總線(xiàn)保護(hù)和讀寫(xiě)

瀚海微SD NAND之SD 協(xié)議(35)ESD要求
瀚海微SD NAND之SD 協(xié)議(29)硬件接口

SD NAND SPI模式:如何實(shí)現(xiàn)低功耗運(yùn)行

瀚海微SD NAND應(yīng)用之SD協(xié)議系統(tǒng)功能和概念 1 基礎(chǔ)知識(shí)

評(píng)論