數據讀取
注:數據線表示數據總線(1位或4位)。
單塊讀取
主機選擇一張卡進行CMD7的數據讀取操作,并設置CMD16面向塊的數據傳輸的有效塊長度。讀操作的基本總線時序如下圖所示。該序列從單個塊讀取命令(CMD17)開始,該命令在參數字段中指定起始地址。響應像往常一樣在CMD行上發送。
卡的數據傳輸開始于從讀命令結束位開始的訪問延時Nac之后。在最后一個數據位之后,CRC校驗位的后綴允許主機檢查傳輸錯誤。
多塊讀取
在多塊讀取模式下,卡按照主機的初始讀取命令發送連續的數據塊流。數據流由停止傳輸命令(CMD12)終止。數據塊的時序如下圖1所示,停止命令的響應如下圖2所示。在stop命令結束位之后,數據傳輸將停止兩個時鐘周期。
數據寫入
單塊寫入主機選擇一張卡進行CMD7的數據寫操作。主機設置CMD16面向塊的數據傳輸的有效塊長度。寫操作的基本總線時序如下圖所示。該序列從單個塊寫命令(CMD24)開始,該命令(在參數字段中)確定起始地址。它像往常一樣由CMD行上的卡響應。收到卡片響應后,從主機開始的數據傳輸開始NwR時鐘周期。
數據的后綴是CRC校驗位,允許卡檢查傳輸錯誤。卡將CRC檢查結果作為CRC狀態令牌在DATo線路上發回。在傳輸錯誤的情況下,卡發送一個負CRC狀態('101')。在無錯誤傳輸的情況下,卡發送一個正的CRC狀態(010)并開始數據編程過程。當發生flash編程錯誤時,卡將忽略所有進一步的數據塊。在這種情況下,不會向主機發送CRC響應,因此總線上不會有CRC起始位,并且三個CRC狀態位將讀取('111')。下一個命令的響應中顯示CRC Status后出現錯誤。
注意,CRC響應輸出總是在數據結束后的兩個時鐘。如果卡沒有空閑的數據接收緩沖區,卡通過將數據線拉到LOW來指示這種情況。只要至少有一個用于定義的數據傳輸塊長度的接收緩沖區變為空閑,卡就停止拉下DAT0線。該信令不提供任何關于主機應該輪詢的數據寫狀態的信息。
多塊寫入
在多塊寫模式下,卡期望數據塊按照主機的初始寫命令連續流。
在單塊寫入的情況下,數據的后綴是CRC校驗位,以允許卡檢查傳輸錯誤。卡將CRC檢查結果作為CRC狀態令牌在DAT0線路上發回。在傳輸錯誤的情況下,卡發送一個負CRC狀態('101')。在非錯誤傳輸的情況下,卡發送一個正CRC狀態('010')并開始數據編程過程,當flash編程發生錯誤時,卡將忽略所有進一步的數據塊,在這種情況下,不會向主機發送CRC響應,因此總線上不會有CRC起始位,三個CRC狀態位讀為('111');
數據流由停止傳輸命令(CMD12)終止。帶卡忙信號和不帶卡忙信號的數據塊時序如下圖所示。
停止傳輸命令的工作原理與讀取模式類似。下方圖描述了不同卡狀態下stop命令的執行時間。
只有當塊的CRC數據被驗證并且CRC狀態令牌發送回主機時,卡才會將數據塊視為成功接收并準備好編程。下方圖2是一個試圖傳輸CRC狀態塊被中斷(被主機停止命令)的例子。該序列與所有其他停止傳輸示例相同。在數據線上,主機命令的結束位后面跟著一個數據位,然后開始忙信令。在這種情況下,沒有用于切換總線方向的Z時鐘,因為總線方向已經指向主機。在這種情況下,接收到的數據塊被認為是不完整的,不會被編程。
前面的所有示例都處理了主機在非活動數據傳輸期間停止數據傳輸的場景。下面兩個圖描述了接收數據塊之間的停止傳輸的場景。在第一個示例中,卡忙于對最后一個塊進行編程,而在第二個示例中,卡是空閑的。然而,在輸入緩沖區中仍然有未編程的數據塊。一旦收到停止傳輸命令并且卡激活忙音信號,這些塊就被編程。
R1b時序在R1b命令操作期間,卡可能發出“busy”(通過將數據線拉低)的信號。busl事務定時如上圖所示(非Nse指定)。在非UHS-I模式下,R1b忙線在命令結束位后2個時鐘啟動。在UHS-Il模式下,從命令結束位開始2到4個時鐘后啟動R1b忙。
重新選擇忙卡當當前處于斷開狀態的忙卡被重新選中時,它將在數據線上恢復其忙信令。重選卡的總線時序如上圖所示(非Nse指定)。l在非UHS-I模式下,所選卡從CMD7結束位開始指示忙2個時鐘。在UHS-I模式下,從CMD7的結束位開始,所選卡開始指示忙2到4時鐘。
審核編輯 黃宇
-
存儲
+關注
關注
13文章
4296瀏覽量
85798 -
數據線
+關注
關注
8文章
283瀏覽量
37719 -
SD NAND
+關注
關注
0文章
83瀏覽量
1234
發布評論請先 登錄
相關推薦
評論