總線傳輸保護
總線上傳輸?shù)拿織lSD卡命令都受到CRC位的保護。在SPI模式下,SD存儲卡提供了CRC ON模式,使具有可靠數(shù)據(jù)鏈路的系統(tǒng)能夠排除實現(xiàn)CRC生成和驗證功能所需的硬件或固件。在CRC OFF模式下,命令的CRC位被定義為“不關(guān)心”發(fā)送端,而被接收端忽略。
缺省情況下,SPI接口初始化為CRC OFF模式。然而,用于將卡切換到SPI模式的RESET命令(CMD0)在SD模式下被卡接收,因此應(yīng)該有一個有效的CRC字段。
由于CMD0沒有參數(shù),所有字段的內(nèi)容(包括CRC字段)都是常量,不需要在運行時計算。
有效的復(fù)位命令為:Ox40, Ox0, Ox0, Ox0, Ox0, ox95卡進入SPI模式后,將根據(jù)CMD59設(shè)置對包括CMD0在內(nèi)的所有命令進行CRC檢查。
主機可以使用CRC_ON_OFF命令(CMD59)打開和關(guān)閉CRC選項。
主機應(yīng)在發(fā)出ACMD41之前啟用CRC驗證。始終啟用CMD8 CRC校驗。
主機應(yīng)在CMD8參數(shù)中設(shè)置正確的CRC。
如果檢測到CRC錯誤,無論命令索引如何,卡都會在R1響應(yīng)中返回CRC錯誤。
數(shù)據(jù)讀取
SPI模式支持單塊讀取和多塊讀取操作(SD Memory Card協(xié)議中的CMD17或CMD18)。
在接收到一個有效的讀命令后,卡將用一個響應(yīng)令牌和一個數(shù)據(jù)令牌進行響應(yīng),參考下圖。
在標(biāo)準(zhǔn)容量卡的情況下,數(shù)據(jù)令牌中的大小由set BLOCKLEN (CMD16)設(shè)置的塊長度決定。
對于SDHC和SDXC卡,無論cmd16設(shè)置的塊長度如何,塊長度都固定為512字節(jié)。
最大塊長度為512字節(jié),與CSD中定義的READ_BL_LEN無關(guān)。
如果在標(biāo)準(zhǔn)容量卡中啟用部分塊訪問(即CSD參數(shù)READ BL partial等于1),塊長度可以是1到512字節(jié)之間的任何數(shù)字。
起始地址可以是卡有效地址范圍內(nèi)的任意字節(jié)地址。但是,每個塊應(yīng)包含在單個物理卡扇區(qū)中。
如果禁用部分塊訪問,則只支持512字節(jié)的數(shù)據(jù)長度。SDHC和SDXC卡只支持512字節(jié)的塊長度。起始地址應(yīng)與塊邊界對齊。
在數(shù)據(jù)檢索錯誤的情況下,卡將不傳輸任何數(shù)據(jù)。相反,一個特殊的數(shù)據(jù)錯誤令牌將被發(fā)送到主機。
下圖顯示了一個以錯誤令牌而不是數(shù)據(jù)塊結(jié)束的數(shù)據(jù)讀取操作。
數(shù)據(jù)寫入
SPI模式支持單塊和多塊寫命令。在接收到有效的寫命令(SD存儲卡協(xié)議中的CMD24或CMD25)后,卡將使用響應(yīng)令牌進行響應(yīng),并等待主機發(fā)送數(shù)據(jù)塊。
CRC后綴、塊長度和起始地址限制(CSD參數(shù)WRITE BL PARTIAL控制部分塊寫選項和WRITE_BL_LEN除外)與讀操作相同,參考下圖
每個數(shù)據(jù)塊都有一個“開始塊”標(biāo)記的前綴(一個字節(jié))。在接收到數(shù)據(jù)塊后,卡將使用數(shù)據(jù)響應(yīng)令牌進行響應(yīng)。如果接收到的數(shù)據(jù)塊沒有錯誤,將對其進行編程。
只要卡在忙編程,所有連續(xù)的忙令牌流將被發(fā)送到主機(有效地保持低數(shù)據(jù)輸出線)。
一旦編程操作完成,主機應(yīng)該使用SEND_STATUS命令(CMD13)檢查編程的結(jié)果。一些錯誤(例如地址超出范圍,違反寫保護等)僅在編程期間檢測到。
在數(shù)據(jù)塊上執(zhí)行并通過數(shù)據(jù)響應(yīng)令牌與主機通信的唯一驗證檢查是CRC和一般寫錯誤指示。
在多塊寫操作中,停止傳輸將通過在下一個塊的開始處發(fā)送' stop Tran'令牌而不是'Start Block'令牌來完成。
如果出現(xiàn)寫錯誤指示(在數(shù)據(jù)響應(yīng)上),主機將使用SEND_NUM_WR_BLOCKS (ACMD22)來獲取寫好的寫塊的數(shù)量。
當(dāng)卡忙時,重置CS信號不會終止編程過程。卡將釋放數(shù)據(jù)輸出線(三狀態(tài))并繼續(xù)編程。
如果在編程完成之前重新選擇卡,則DataOut線將被強制返回低電平,并且所有命令將被拒絕。
重置存儲卡(使用CMDO用于SD存儲卡)將終止任何掛起的或正在進行的編程。這可能會破壞卡上的數(shù)據(jù)格式。預(yù)防是主機的責(zé)任
擦寫保護管理
SPI模式的擦寫保護管理過程與SD模式的擦寫保護管理過程相同。
當(dāng)卡擦除或更改預(yù)定義扇區(qū)列表的寫保護位時,它將處于忙狀態(tài)并使DataOut線保持低電平。
下圖說明了使用和不使用忙信令的“無數(shù)據(jù)”總線事務(wù)。
審核編輯 黃宇
-
SPI
+關(guān)注
關(guān)注
17文章
1688瀏覽量
91174 -
總線
+關(guān)注
關(guān)注
10文章
2857瀏覽量
87893 -
SD NAND
+關(guān)注
關(guān)注
0文章
80瀏覽量
1200
發(fā)布評論請先 登錄
相關(guān)推薦
評論