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