控制令牌
數(shù)據(jù)塊傳輸由一些令牌控制。
數(shù)據(jù)響應令牌
每個寫入卡的數(shù)據(jù)塊都會被一個數(shù)據(jù)響應令牌確認。
它是一個字節(jié)長,格式如下:
狀態(tài)位的含義定義如下:
'010'-接受的數(shù)據(jù)。
'101'-由于CRC錯誤而拒絕數(shù)據(jù)。
'110' -由于寫入錯誤而拒絕數(shù)據(jù)
如果在寫多塊操作過程中出現(xiàn)任何錯誤(CRC或寫錯誤),主機將停止使用CMD12傳輸數(shù)據(jù)。
如果出現(xiàn)寫錯誤(響應'110'),主機可能會發(fā)送CMD13 (send STATUS)來獲取寫入問題的原因。
ACMD22可用于查找編寫良好的寫塊的數(shù)量。
開始塊令牌和停止傳輸令牌
讀和寫命令都有與之相關的數(shù)據(jù)傳輸。
數(shù)據(jù)通過數(shù)據(jù)令牌傳輸或接收。
所有的數(shù)據(jù)字節(jié)都首先以MSB傳輸。
數(shù)據(jù)令牌長度為4 ~ 515字節(jié),格式如下:
For Single Block Read, Single Block Write and Multiple Block Read:
第一個字節(jié):Start Block
2 ~ 513字節(jié)(取決于數(shù)據(jù)塊長度):用戶數(shù)據(jù)
最后兩個字節(jié):16位CRC。
對于多塊寫操作:
每個塊的第一個字節(jié)。如果要傳輸數(shù)據(jù),那么-啟動塊令牌
如果請求停止傳輸-停止傳輸令牌
注意,這種格式只用于多塊寫。
在多塊讀取的情況下,使用STOP_TRAN命令(CMD12)執(zhí)行停止傳輸。
數(shù)據(jù)錯誤令牌
如果讀操作失敗,卡不能提供所需的數(shù)據(jù),它會發(fā)送一個數(shù)據(jù)錯誤令牌。
這個令牌有一個字節(jié)長,格式如下:
清除狀態(tài)bits
如前所述,在SPI模式下,狀態(tài)比特以三種不同的格式報告給主機:響應R1、響應R2和數(shù)據(jù)錯誤令牌(相同的比特可能存在于多種響應類型中,例如Card ECC failed)。
在SD模式下,錯誤bits在被主機讀取時被清除,而不管響應格式如何。
狀態(tài)指示燈可以通過讀取清除,也可以根據(jù)卡的狀態(tài)清除。
下表總結了各種狀態(tài)位的設置和清除條件:
類型:
E:錯誤位。
S:狀態(tài)位。
R:檢測并設置為實際命令響應。
X:在執(zhí)行命令時檢測并設置。
主機可以通過發(fā)出帶有R1響應的命令來獲取狀態(tài)。
清零條件:
A:根據(jù)卡當前狀態(tài)清零。c:按讀清零
卡寄存器
在SPI模式下,只有RCA寄存器不可訪問。其他寄存器的格式與SD模式下的格式相同。
審核編輯 黃宇
-
SPI
+關注
關注
17文章
1688瀏覽量
91174 -
SD NAND
+關注
關注
0文章
80瀏覽量
1200
發(fā)布評論請先 登錄
相關推薦
評論