簡介
SPI模式由基于flash的SD存儲卡提供的輔助通信協(xié)議組成。
這種模式是SD存儲卡協(xié)議的一個子集,設(shè)計(jì)用于與SPI通道通信,通常在摩托羅拉(以及最近一些其他供應(yīng)商)的微控制器中發(fā)現(xiàn)。
接口是在上電后的第一個reset (CMD0)命令中選擇的,設(shè)備上電后不能更改。
SPI標(biāo)準(zhǔn)只定義了物理鏈路,而不是完整的數(shù)據(jù)傳輸協(xié)議。
SDl存儲卡SPI實(shí)現(xiàn)使用SD存儲卡協(xié)議和命令集的一個子集。
SPI模式的優(yōu)點(diǎn)是能夠使用現(xiàn)成的主機(jī),從而將設(shè)計(jì)工作量降至最低。
缺點(diǎn)是SPI模式相對于SD模式的性能損失(例如單個數(shù)據(jù)線和每個卡的硬件CS信號)。
2.00版本以后定義的SD模式下的命令和功能在SPI模式下不支持。
即使卡處于SPI模式,卡也可以響應(yīng)命令和功能,但主機(jī)不應(yīng)該在SPI模式下使用它們。
SPI總線協(xié)議
雖然SD存儲卡通道是基于命令和數(shù)據(jù)位流,由開始位發(fā)起,由停止位終止,SPI通道是面向字節(jié)的。每個命令或數(shù)據(jù)塊都是由8位字節(jié)組成的,并且是與CS信號對齊的字節(jié)(即長度是8個時(shí)鐘周期的倍數(shù))。卡開始計(jì)數(shù)SPI總線時(shí)鐘周期在CS信號的斷言。每個命令或數(shù)據(jù)令牌應(yīng)對齊到8時(shí)鐘周期邊界。與SD存儲卡協(xié)議類似,SPI消息由命令、響應(yīng)和數(shù)據(jù)鎖令牌組成。主機(jī)和卡之間的所有通信都由主機(jī)(master)控制。
主機(jī)通過斷言CS信號低來啟動每個總線事務(wù)。與SD模式相反,所選卡總是響應(yīng)命令。
當(dāng)卡在讀取操作中遇到數(shù)據(jù)檢索問題時(shí),它將響應(yīng)一個錯誤響應(yīng)(替換預(yù)期的數(shù)據(jù)塊),而不是像SD模式那樣響應(yīng)一個超時(shí)。
此外,在寫操作期間發(fā)送到卡的每個數(shù)據(jù)塊都將使用數(shù)據(jù)響應(yīng)令牌進(jìn)行響應(yīng)。
在標(biāo)準(zhǔn)容量存儲卡的情況下,一個數(shù)據(jù)塊可以像一個卡寫塊一樣大,也可以像單個字節(jié)一樣小。部分塊讀/寫操作是由cssregister中指定的卡選項(xiàng)啟用的。對于SDHC和SDXC卡,塊長度固定為512字節(jié)。
CMD16設(shè)置的塊長度僅用于CMD42,不用于內(nèi)存數(shù)據(jù)傳輸。因此,部分塊讀/寫操作也被禁用。另外,不支持寫保護(hù)命令(CMD28、CMD29和CMD30)。


模式選擇與初始化
SD卡在SD模式下上電。在接收復(fù)位命令(CMD0)期間,如果CS信號被斷言(負(fù)),則將進(jìn)入SPl模式。如果卡識別到需要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模式下定義的格式相同。
卡通過分析CMD8的參數(shù)來檢測運(yùn)行狀態(tài)的有效性,主機(jī)通過分析CMD8的響應(yīng)來檢測運(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讲黄ヅ洌珻MD8通信無效。
此時(shí),建議重試CMD8順序。

READ_OCR (CMD58)旨在為SD存儲卡主機(jī)提供一種機(jī)制,以識別與主機(jī)所需的Vop范圍
不匹配的卡。如果主機(jī)不接受電壓范圍,它將不進(jìn)行進(jìn)一步的初始化順序。
OCR寄存器中的電平應(yīng)相應(yīng)地定義(參考之前的介紹寄存器的文章)。
SD_SEND_OP_COND (ACMD41)用于啟動初始化并檢查卡是否已完成初始化。
必須在第一個ACMD41之前發(fā)布CMD8。CMD8的接收擴(kuò)展了CMD58和ACMD41的功能;
ACMD41論證中的HCS (High Capacity Support)和CMD58響應(yīng)中的CCSl (Card Capacity Status)。卡忽略了HCS,不接受CMD8。標(biāo)準(zhǔn)容量SD存儲卡忽略HCS。
ACMD41的R1響應(yīng)中的“in idle state”位被卡用來通知主機(jī)是否完成了ACMD41的初始化。將此位設(shè)置為“1”表示卡仍在初始化。將該位設(shè)置為“0”表示初始化完成。
主機(jī)重復(fù)發(fā)出ACMD41,直到該位被設(shè)置為“0”。卡只在第一個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文章
1885瀏覽量
101227 -
SDIO
+關(guān)注
關(guān)注
2文章
78瀏覽量
20618 -
SD NAND
+關(guān)注
關(guān)注
0文章
112瀏覽量
1826
發(fā)布評論請先 登錄
ESP32 驅(qū)動瀚海微SD NAND 完整方案 + FAT/FAT32 驅(qū)動核心區(qū)別
瀚海微SD NAND/TF卡數(shù)據(jù)損壞與校驗(yàn)錯誤(含CRC錯誤、數(shù)據(jù)比對失敗)問題解析
解鎖SD NAND、TF卡、SD卡的應(yīng)用密碼
解決SD NAND CRC校驗(yàn)失敗的綜合指南:瀚海微存儲產(chǎn)品的可靠性保障
瀚海微SD NAND TF卡硬件識別與初始化類問題探討
瀚海微SD NAND/TF卡數(shù)據(jù)讀寫超時(shí)(Data Transfer Timeout)問題深度解析
SD NAND 接口協(xié)議解析:SPI 與 SDIO 模式區(qū)別及適配方法
一文秒懂XTX SD NAND
解鎖存儲密碼:SD NAND、TF卡、SD卡的應(yīng)用全景
瀚海微SD NAND/TF卡:賦能全場景數(shù)據(jù)存儲,定義高效安全新基準(zhǔn)
瀚海微SD NAND/TF卡——數(shù)據(jù)世界的全能搭檔
CS創(chuàng)世SD NAND在北京君正平臺和瑞芯微RK平臺的應(yīng)用
SD卡—雷龍 SD NAND
瀚海微SD NAND之SD 協(xié)議(36)SPI模式
評論