寬總線選擇/取消
選擇寬總線(4位總線寬度)操作模式可以使用AcMD6選擇/取消選擇。默認(rèn)總線上電或GO IDLE (CMDO)后的寬度為1位總線寬度。
要改變母線寬度需要滿足兩個(gè)條件:
a)卡處于“傳輸狀態(tài)”。
b)卡未鎖定被鎖定的卡將響應(yīng)ACMD6為非法命令。
2GB卡
要制作2GByte卡,最大塊長(zhǎng)度(READ BL LEN- write BL LEN)應(yīng)設(shè)置為1024字節(jié)。但是,CMD16設(shè)置的塊長(zhǎng)度最多為512字節(jié),以保持與512字節(jié)最大塊長(zhǎng)度卡(小于等于2GByte卡)的一致性。
數(shù)據(jù)讀取
當(dāng)沒有數(shù)據(jù)傳輸時(shí),通過上拉使數(shù)據(jù)總線電平高。傳輸?shù)臄?shù)據(jù)塊由起始位(低1位或低4位)和連續(xù)數(shù)據(jù)流組成。數(shù)據(jù)流包含有效載荷數(shù)據(jù)(如果使用off-card ECC is used,則包含糾錯(cuò)位)。數(shù)據(jù)流以endl位結(jié)束(1位或4位HIGH).
數(shù)據(jù)傳輸與時(shí)鐘信號(hào)同步。面向塊的數(shù)據(jù)傳輸?shù)挠行лd荷由1位或4位CRC校驗(yàn)和保護(hù)。關(guān)閉電源可能會(huì)中斷SD存儲(chǔ)卡的讀取操作。SDl存儲(chǔ)卡確保在主機(jī)發(fā)出的除寫或擦除操作外的所有情況下,即使在突然關(guān)閉或刪除的情況下,數(shù)據(jù)也不會(huì)被破壞。如果發(fā)生BLOCK_LEN_ERROR或ADDRESS ERROR,并且沒有進(jìn)行數(shù)據(jù)傳輸,則拒絕讀取命令。
塊讀取
塊讀取是面向塊的數(shù)據(jù)傳輸。數(shù)據(jù)傳輸?shù)幕締挝皇且粋€(gè)塊,其最大大小始終為512字節(jié)。較小的塊,其起始和結(jié)束地址完全包含在512字節(jié)邊界內(nèi),可以傳輸。
CMD16設(shè)置的塊長(zhǎng)度可以設(shè)置為512字節(jié),與READ_BL_LEN無關(guān)。CRC被附加到每個(gè)塊的末尾,以確保數(shù)據(jù)傳輸?shù)耐暾?。CMD17 (READ_SINGLE_BLOCK)發(fā)起一個(gè)塊讀取,完成傳輸后,卡返回到傳輸狀態(tài)。CMD18 (READ_MULTIPLE_BLOCK)啟動(dòng)幾個(gè)連續(xù)塊的傳輸。塊將持續(xù)傳輸,直到發(fā)出停止傳輸命令(CMD12)。l由于串行命令傳輸,stop命令有執(zhí)行延遲。數(shù)據(jù)傳輸在stop命令結(jié)束位之后停止。
當(dāng)使用CMD18讀取用戶區(qū)的最后一塊時(shí),即使順序正確,主機(jī)也應(yīng)該忽略可能發(fā)生的OUT_OF_RANGE錯(cuò)誤。
如果主機(jī)使用的部分塊的累積長(zhǎng)度不是塊對(duì)齊的,并且不允許塊錯(cuò)位,卡應(yīng)該在第一個(gè)錯(cuò)位塊的開始處檢測(cè)到塊錯(cuò)位,在狀態(tài)寄存器中設(shè)置ADDRESS_ERROR錯(cuò)誤位,中止傳輸,并在Data State中等待停止命令。
下方圖格定義了當(dāng)局部塊訪問被啟用時(shí)的卡片行為。
如果不對(duì)齊的塊是命令的第一個(gè)數(shù)據(jù)塊(即在對(duì)命令的實(shí)際響應(yīng)中報(bào)告了i.e.ADDRESS_ERROR),則不傳輸數(shù)據(jù),卡保持在TRAN狀態(tài)。
*1:“當(dāng)前塊欄”大小由CMD16設(shè)置或更改。如果value小于或等于512字節(jié)(與Misalign和Partial選項(xiàng)沒有關(guān)系),則設(shè)置無錯(cuò)誤。
*2:當(dāng)Blocklen大小數(shù)據(jù)范圍超過512字節(jié)的塊邊界時(shí),卡片輸出數(shù)據(jù)直到512字節(jié)的塊邊界,此時(shí)數(shù)據(jù)無效,也可能出現(xiàn)CRC錯(cuò)誤??▽⒃谙乱粋€(gè)命令響應(yīng)中發(fā)送“ADDRESS_ERROR”。主機(jī)應(yīng)該發(fā)出CMD12來恢復(fù)。
數(shù)據(jù)寫入
數(shù)據(jù)傳輸格式與數(shù)據(jù)讀取格式類似。對(duì)于面向塊的寫數(shù)據(jù)傳輸,CRC校驗(yàn)位被添加到每個(gè)數(shù)據(jù)塊中。在寫操作之前,卡對(duì)每個(gè)接收到的數(shù)據(jù)塊執(zhí)行1位或4位CRC奇偶校驗(yàn)。通過這種機(jī)制,可以防止寫入錯(cuò)誤傳輸?shù)臄?shù)據(jù)。如果發(fā)生BLOCK_LEN_ERROR或ADDRESS_ERROR,并且沒有進(jìn)行數(shù)據(jù)傳輸,則拒絕寫命令。
塊的寫入
在塊寫入(CMD24 - 27,42,56 (w))期間,一個(gè)或多個(gè)數(shù)據(jù)塊從主機(jī)傳輸?shù)娇?,主機(jī)在每個(gè)塊的末尾附加1或4位CRC。無論WRITE_BL_LEN設(shè)置為1k還是2k字節(jié),支持塊寫的卡都要求CMD16設(shè)置的block Length為512字節(jié)。下方表格定義了當(dāng)部分塊訪問被禁用(WRITE_BL_PARTIAL = 0)時(shí)卡的行為。
*1:“當(dāng)前塊欄”大小由CMD16設(shè)置或更改。如果value小于512字節(jié)(與Misalign和Partial選項(xiàng)沒有關(guān)系),則設(shè)置無錯(cuò)誤。然后在寫命令執(zhí)行時(shí)測(cè)試“當(dāng)前Blocklen”大小。
*2:如果當(dāng)前的Blocklen不是這個(gè)值,卡在寫命令響應(yīng)上指示“BLOcK_LEN_ERROR”。
*3:如果起始地址不是這個(gè)值,卡將在寫命令響應(yīng)中發(fā)送“ADDRESS_ERROR”。
如果允許WRITE_BL_PARTIAL(=1),那么也可以使用更小的塊,最高分辨率為一個(gè)字節(jié)。如果CRC失敗,卡應(yīng)在DAT線上指示失敗€;傳輸?shù)臄?shù)據(jù)將被丟棄而不被寫入,所有進(jìn)一步傳輸?shù)膲K(在多個(gè)塊中)將被寫入模式)將被忽略。
為了提高寫操作的速度,建議使用多個(gè)塊寫命令,而不是連續(xù)的單個(gè)寫命令。如果主機(jī)使用的部分塊的累計(jì)長(zhǎng)度沒有塊對(duì)齊,并且不允許塊錯(cuò)位(CSD參數(shù)WRITE_BLK_MISALIGN未設(shè)置),則卡應(yīng)在第一個(gè)錯(cuò)位塊開始之前檢測(cè)到塊錯(cuò)位錯(cuò)誤并中止編程。
卡應(yīng)該在狀態(tài)寄存器中設(shè)置ADDRESS_ERROR錯(cuò)誤位,同時(shí)忽略所有進(jìn)一步的數(shù)據(jù)傳輸,在Receive-data-State中等待停止命令。
注意,第一個(gè)數(shù)據(jù)塊對(duì)于寫命令是不對(duì)齊的(即在寫命令的實(shí)際響應(yīng)中報(bào)告i.e.ADDRESS_ERROR),卡保持在tran狀態(tài),沒有數(shù)據(jù)被編程。如果主機(jī)試圖在寫保護(hù)區(qū)域上寫,寫操作也會(huì)被終止。然而,在這種情況下,卡應(yīng)該設(shè)置WP_VIOLATION位。
CSD寄存器的編程不需要先前的塊長(zhǎng)度設(shè)置。傳輸?shù)臄?shù)據(jù)也受CRC保護(hù)。如果CSD寄存器的一部分存儲(chǔ)在ROM中,那么這個(gè)不可改變的部分應(yīng)與接收緩沖區(qū)的相應(yīng)部分相匹配。如果匹配失敗,那么卡將報(bào)告一個(gè)錯(cuò)誤,并且不會(huì)更改任何寄存器內(nèi)容。
有些卡可能需要很長(zhǎng)且不可預(yù)測(cè)的時(shí)間來寫入數(shù)據(jù)塊。在接收到數(shù)據(jù)塊并完成CRC檢查后,如果寫緩沖區(qū)已滿并且無法接受來自新WRITE_BLOCK命令的新數(shù)據(jù),則卡將開始寫入并保持DATO低電平。主機(jī)可以在任何時(shí)候用SEND_STATUS命令(CMD13)輪詢卡片的狀態(tài),卡片將用它的狀態(tài)進(jìn)行響應(yīng)。狀態(tài)位READY_FOR_DATA表示卡是否可以接受新數(shù)據(jù),或者寫過程是否仍在進(jìn)行中。
主機(jī)可以通過發(fā)出CMD7(選擇不同的卡)來取消卡的選擇,這將使卡進(jìn)入斷開狀態(tài)并釋放數(shù)據(jù)線而不中斷寫操作。當(dāng)重新選擇卡時(shí),如果編程仍在進(jìn)行中并且寫緩沖區(qū)不可用,它將通過將DAT拉到低來重新激活忙指示。
實(shí)際上,主機(jī)可以同時(shí)對(duì)多張卡進(jìn)行寫操作,并有互留過程。交錯(cuò)過程可以通過在其他卡忙時(shí)單獨(dú)訪問每個(gè)卡來完成。這個(gè)過程可以通過適當(dāng)?shù)腃MD和DATO-3線操作(斷開忙卡)來完成。
審核編輯 黃宇
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4533瀏覽量
87466 -
SD NAND
+關(guān)注
關(guān)注
0文章
93瀏覽量
1503
發(fā)布評(píng)論請(qǐng)先 登錄
NAND Flash與SD NAND的存儲(chǔ)扇區(qū)架構(gòu)差異

Nand flash 和SD卡(SD NAND)存儲(chǔ)扇區(qū)分配表異同
關(guān)于SD NAND 的概述
國(guó)產(chǎn)安路FPGA SD NAND FLASH 初步描述
瀚海微SD NAND存儲(chǔ)功能描述(28)RCA Registers

瀚海微SD NAND存儲(chǔ)功能描述(26)CSD Registers

瀚海微SD NAND存儲(chǔ)功能描述(25)SD Registers

瀚海微SD NAND存儲(chǔ)功能描述(22)Timing Values

瀚海微SD NAND存儲(chǔ)功能描述(21)數(shù)據(jù)讀寫

瀚海微SD NAND存儲(chǔ)功能描述(18)命令類e

瀚海微SD NAND存儲(chǔ)功能描述(14)命令類a

瀚海微SD NAND存儲(chǔ)功能描述(13)讀寫擦除超時(shí)

瀚海微SD NAND存儲(chǔ)功能描述(11)命令系統(tǒng)CMD8

瀚海微SD NAND存儲(chǔ)功能描述(9)切換功能

瀚海微SD NAND應(yīng)用之SD協(xié)議存儲(chǔ)功能描述2 初始化命令

評(píng)論