時鐘控制
主機可以使用SD Memory Card總線時鐘信號將卡切換到節(jié)能模式或控制總線上的數(shù)據(jù)流(以避免欠運行或過運行)。主機不允許降低時鐘頻率或關(guān)閉時鐘。
例如,在具有512字節(jié)數(shù)據(jù)緩沖區(qū)的主機希望將數(shù)據(jù)傳輸?shù)骄哂?kbyte寫塊的卡的情況下。因此,為了保持所有數(shù)據(jù)的連續(xù)傳輸,從卡的角度來看,到卡的時鐘應(yīng)該在第一個512字節(jié)之后停止。然后,主機將用另一個512字節(jié)填充其內(nèi)部緩沖區(qū)。在主機中寫塊的后半部分準(zhǔn)備好后,它將通過重新啟動時鐘電源繼續(xù)向卡傳輸數(shù)據(jù)。這樣,卡就不能識別數(shù)據(jù)傳輸中的任何中斷。有一些限制是HOST應(yīng)該考慮的:
總線頻率可隨時更改(受最大數(shù)據(jù)傳輸頻率和規(guī)范文件定義的識別頻率的限制.
上述豁免是ACMD41 (SD_APP_OP_COND)。發(fā)出ACMD41命令后,由主機執(zhí)行以下1)或2)程序,直到卡準(zhǔn)備就緒。
1)發(fā)出100 KHz-400 KHz頻率范圍內(nèi)的連續(xù)時鐘。如果主機想要停止時鐘,則通過ACMD41命令以小于50 ms的間隔輪詢忙位。
這是一個明顯的要求,時鐘應(yīng)該運行的卡輸出數(shù)據(jù)或響應(yīng)令牌。在最后一次SD存儲卡總線事務(wù)之后,要求主機在關(guān)閉時鐘之前提供8(eight)個時鐘周期供卡完成操作。以下是各種總線事務(wù)的列表:沒有回應(yīng)的命令。
8個時鐘主機命令結(jié)束位之后。帶有響應(yīng)的命令。
8個時鐘在卡響應(yīng)結(jié)束位之后。讀數(shù)據(jù)事務(wù)。
8個時鐘在最后一個數(shù)據(jù)塊的結(jié)束位之后。寫數(shù)據(jù)事務(wù)。
8人時鐘在CRC狀態(tài)令牌之后。允許主機關(guān)閉“忙”卡的時鐘。
無論主機時鐘如何,卡都將完成編程操作。但是,主機應(yīng)該為卡提供一個時鐘邊緣來關(guān)閉它的忙音信號。如果沒有時鐘邊緣,卡(除非先前通過取消選擇命令cmd7斷開連接)將永遠(yuǎn)迫使DAT線向下。
CRC (Cyclic Redundancy Code)
CRC旨在保護(hù)SD存儲卡命令、響應(yīng)和數(shù)據(jù)傳輸,防止SD存儲卡總線上的傳輸錯誤。為每個命令生成一個CRC,并檢查CMD行上的每個響應(yīng)。對于數(shù)據(jù)塊,每個傳輸?shù)膲K生成一個CRC。生成并檢查CRC,如下所述。
CRC7
CRC7檢查用于所有命令、除類型R3之外的所有響應(yīng)以及CSD和CID寄存器。CRC7是一個7位值,計算方法如下:
第一個位是對應(yīng)的位串(命令、響應(yīng)、CID或CSD)的最左邊的位多項式的階n是CRC保護(hù)位的個數(shù)減少1。命令和響應(yīng)(n = 39)需要保護(hù)的比特數(shù)為40,CSD和CID (n = 119)需要保護(hù)的比特數(shù)為120。
CRC7例子
命令/響應(yīng)的CRC部分被保留。
CRC16
在使用一條DAT線路的情況下,CRC16用于塊傳輸模式下的有效負(fù)載保護(hù)。CRC校驗和是一個16位的值,計算方法如下:
第一個位是相應(yīng)塊的第一個數(shù)據(jù)位。多項式的度n表示數(shù)據(jù)塊的位數(shù)減少1
(例如,塊長度為512字節(jié)時為e.g.n =4095)。發(fā)生器多項式G(x)是一個標(biāo)準(zhǔn)的CCITT多項式。代碼的最小距離為d-4,用于負(fù)載長度為2048字節(jié)(n <= 16383)。在單數(shù)據(jù)線模式和寬總線模式下應(yīng)使用相同的CRC16方法在寬總線模式下,CRC16在每條線路上分別完成。
CRC16例子
512字節(jié)的0xFF data-->CRC16=0x7FA1
錯誤條件
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錯誤位。狀態(tài)圖中只顯示非錯誤狀態(tài)分支。下表給出了完整的狀態(tài)轉(zhuǎn)換描述。
非法命令有不同的類型:屬于卡不支持的類的命令(如:只讀卡中的寫入命令)。
當(dāng)前狀態(tài)下不允許的命令(如:CMD2處于傳輸狀態(tài))。
未定義的命令(如:CMD5)。
審核編輯 黃宇
-
存儲
+關(guān)注
關(guān)注
13文章
4296瀏覽量
85798 -
crc
+關(guān)注
關(guān)注
0文章
199瀏覽量
29461 -
SD NAND
+關(guān)注
關(guān)注
0文章
83瀏覽量
1234
發(fā)布評論請先 登錄
相關(guān)推薦
評論