時(shí)鐘控制
主機(jī)可以使用SD Memory Card總線時(shí)鐘信號(hào)將卡切換到節(jié)能模式或控制總線上的數(shù)據(jù)流(以避免欠運(yùn)行或過(guò)運(yùn)行)。主機(jī)不允許降低時(shí)鐘頻率或關(guān)閉時(shí)鐘。
例如,在具有512字節(jié)數(shù)據(jù)緩沖區(qū)的主機(jī)希望將數(shù)據(jù)傳輸?shù)骄哂?kbyte寫(xiě)塊的卡的情況下。因此,為了保持所有數(shù)據(jù)的連續(xù)傳輸,從卡的角度來(lái)看,到卡的時(shí)鐘應(yīng)該在第一個(gè)512字節(jié)之后停止。然后,主機(jī)將用另一個(gè)512字節(jié)填充其內(nèi)部緩沖區(qū)。在主機(jī)中寫(xiě)塊的后半部分準(zhǔn)備好后,它將通過(guò)重新啟動(dòng)時(shí)鐘電源繼續(xù)向卡傳輸數(shù)據(jù)。這樣,卡就不能識(shí)別數(shù)據(jù)傳輸中的任何中斷。有一些限制是HOST應(yīng)該考慮的:
總線頻率可隨時(shí)更改(受最大數(shù)據(jù)傳輸頻率和規(guī)范文件定義的識(shí)別頻率的限制.
上述豁免是ACMD41 (SD_APP_OP_COND)。發(fā)出ACMD41命令后,由主機(jī)執(zhí)行以下1)或2)程序,直到卡準(zhǔn)備就緒。
1)發(fā)出100 KHz-400 KHz頻率范圍內(nèi)的連續(xù)時(shí)鐘。如果主機(jī)想要停止時(shí)鐘,則通過(guò)ACMD41命令以小于50 ms的間隔輪詢忙位。

這是一個(gè)明顯的要求,時(shí)鐘應(yīng)該運(yùn)行的卡輸出數(shù)據(jù)或響應(yīng)令牌。在最后一次SD存儲(chǔ)卡總線事務(wù)之后,要求主機(jī)在關(guān)閉時(shí)鐘之前提供8(eight)個(gè)時(shí)鐘周期供卡完成操作。以下是各種總線事務(wù)的列表:沒(méi)有回應(yīng)的命令。
8個(gè)時(shí)鐘主機(jī)命令結(jié)束位之后。帶有響應(yīng)的命令。
8個(gè)時(shí)鐘在卡響應(yīng)結(jié)束位之后。讀數(shù)據(jù)事務(wù)。
8個(gè)時(shí)鐘在最后一個(gè)數(shù)據(jù)塊的結(jié)束位之后。寫(xiě)數(shù)據(jù)事務(wù)。
8人時(shí)鐘在CRC狀態(tài)令牌之后。允許主機(jī)關(guān)閉“忙”卡的時(shí)鐘。
無(wú)論主機(jī)時(shí)鐘如何,卡都將完成編程操作。但是,主機(jī)應(yīng)該為卡提供一個(gè)時(shí)鐘邊緣來(lái)關(guān)閉它的忙音信號(hào)。如果沒(méi)有時(shí)鐘邊緣,卡(除非先前通過(guò)取消選擇命令cmd7斷開(kāi)連接)將永遠(yuǎn)迫使DAT線向下。
CRC (Cyclic Redundancy Code)
CRC旨在保護(hù)SD存儲(chǔ)卡命令、響應(yīng)和數(shù)據(jù)傳輸,防止SD存儲(chǔ)卡總線上的傳輸錯(cuò)誤。為每個(gè)命令生成一個(gè)CRC,并檢查CMD行上的每個(gè)響應(yīng)。對(duì)于數(shù)據(jù)塊,每個(gè)傳輸?shù)膲K生成一個(gè)CRC。生成并檢查CRC,如下所述。
CRC7
CRC7檢查用于所有命令、除類型R3之外的所有響應(yīng)以及CSD和CID寄存器。CRC7是一個(gè)7位值,計(jì)算方法如下:
第一個(gè)位是對(duì)應(yīng)的位串(命令、響應(yīng)、CID或CSD)的最左邊的位多項(xiàng)式的階n是CRC保護(hù)位的個(gè)數(shù)減少1。命令和響應(yīng)(n = 39)需要保護(hù)的比特?cái)?shù)為40,CSD和CID (n = 119)需要保護(hù)的比特?cái)?shù)為120。

CRC7例子
命令/響應(yīng)的CRC部分被保留。

CRC16
在使用一條DAT線路的情況下,CRC16用于塊傳輸模式下的有效負(fù)載保護(hù)。CRC校驗(yàn)和是一個(gè)16位的值,計(jì)算方法如下:

第一個(gè)位是相應(yīng)塊的第一個(gè)數(shù)據(jù)位。多項(xiàng)式的度n表示數(shù)據(jù)塊的位數(shù)減少1
(例如,塊長(zhǎng)度為512字節(jié)時(shí)為e.g.n =4095)。發(fā)生器多項(xiàng)式G(x)是一個(gè)標(biāo)準(zhǔn)的CCITT多項(xiàng)式。代碼的最小距離為d-4,用于負(fù)載長(zhǎng)度為2048字節(jié)(n <= 16383)。在單數(shù)據(jù)線模式和寬總線模式下應(yīng)使用相同的CRC16方法在寬總線模式下,CRC16在每條線路上分別完成。

CRC16例子
512字節(jié)的0xFF data-->CRC16=0x7FA1
錯(cuò)誤條件
CRC與非法命令
所有命令都由CRC (cvclic redundancy check)位保護(hù)。如果地址卡的CRC檢查失敗,則該卡不響應(yīng),命令不執(zhí)行??ú桓淖兯臓顟B(tài),并且在狀態(tài)寄存器中設(shè)置了COM CRC ERROR位。同樣,如果接收到非法命令,卡將不改變其狀態(tài),不響應(yīng),并在狀態(tài)寄存器中設(shè)置ILLEGAL_COMMAND錯(cuò)誤位。狀態(tài)圖中只顯示非錯(cuò)誤狀態(tài)分支。下表給出了完整的狀態(tài)轉(zhuǎn)換描述。
非法命令有不同的類型:屬于卡不支持的類的命令(如:只讀卡中的寫(xiě)入命令)。
當(dāng)前狀態(tài)下不允許的命令(如:CMD2處于傳輸狀態(tài))。
未定義的命令(如:CMD5)。


審核編輯 黃宇
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4788瀏覽量
90057 -
crc
+關(guān)注
關(guān)注
0文章
205瀏覽量
30833 -
SD NAND
+關(guān)注
關(guān)注
0文章
112瀏覽量
1826
發(fā)布評(píng)論請(qǐng)先 登錄
ESP32 驅(qū)動(dòng)瀚海微SD NAND 完整方案 + FAT/FAT32 驅(qū)動(dòng)核心區(qū)別
芯源循環(huán)冗余校驗(yàn)(CRC)功能
瀚海微SD NAND/TF卡數(shù)據(jù)損壞與校驗(yàn)錯(cuò)誤(含CRC錯(cuò)誤、數(shù)據(jù)比對(duì)失?。﹩?wèn)題解析
解決SD NAND CRC校驗(yàn)失敗的綜合指南:瀚海微存儲(chǔ)產(chǎn)品的可靠性保障
瀚海微SD NAND TF卡硬件識(shí)別與初始化類問(wèn)題探討
瀚海微SD NAND/TF卡數(shù)據(jù)讀寫(xiě)超時(shí)(Data Transfer Timeout)問(wèn)題深度解析
一文秒懂XTX SD NAND
解鎖存儲(chǔ)密碼:SD NAND、TF卡、SD卡的應(yīng)用全景
瀚海微SD NAND/TF卡:賦能全場(chǎng)景數(shù)據(jù)存儲(chǔ),定義高效安全新基準(zhǔn)
瀚海微SD NAND/TF卡——數(shù)據(jù)世界的全能搭檔
CS創(chuàng)世SD NAND在北京君正平臺(tái)和瑞芯微RK平臺(tái)的應(yīng)用
【嵌入式開(kāi)發(fā)】SD卡—雷龍 SD NAND
NAND Flash與SD NAND的存儲(chǔ)扇區(qū)架構(gòu)差異
瀚海微SD NAND存儲(chǔ)功能描述(12)時(shí)鐘控制和CRC
評(píng)論