寬總線選擇/取消
選擇寬總線(4位總線寬度)操作模式可以使用AcMD6選擇/取消選擇。默認總線上電或GO IDLE (CMDO)后的寬度為1位總線寬度。
要改變母線寬度需要滿足兩個條件:
a)卡處于“傳輸狀態(tài)”。
b)卡未鎖定被鎖定的卡將響應ACMD6為非法命令。
2GB卡
要制作2GByte卡,最大塊長度(READ BL LEN- write BL LEN)應設置為1024字節(jié)。但是,CMD16設置的塊長度最多為512字節(jié),以保持與512字節(jié)最大塊長度卡(小于等于2GByte卡)的一致性。
數據讀取
當沒有數據傳輸時,通過上拉使數據總線電平高。傳輸的數據塊由起始位(低1位或低4位)和連續(xù)數據流組成。數據流包含有效載荷數據(如果使用off-card ECC is used,則包含糾錯位)。數據流以endl位結束(1位或4位HIGH).
數據傳輸與時鐘信號同步。面向塊的數據傳輸的有效載荷由1位或4位CRC校驗和保護。關閉電源可能會中斷SD存儲卡的讀取操作。SDl存儲卡確保在主機發(fā)出的除寫或擦除操作外的所有情況下,即使在突然關閉或刪除的情況下,數據也不會被破壞。如果發(fā)生BLOCK_LEN_ERROR或ADDRESS ERROR,并且沒有進行數據傳輸,則拒絕讀取命令。
塊讀取
塊讀取是面向塊的數據傳輸。數據傳輸的基本單位是一個塊,其最大大小始終為512字節(jié)。較小的塊,其起始和結束地址完全包含在512字節(jié)邊界內,可以傳輸。
CMD16設置的塊長度可以設置為512字節(jié),與READ_BL_LEN無關。CRC被附加到每個塊的末尾,以確保數據傳輸的完整性。CMD17 (READ_SINGLE_BLOCK)發(fā)起一個塊讀取,完成傳輸后,卡返回到傳輸狀態(tài)。CMD18 (READ_MULTIPLE_BLOCK)啟動幾個連續(xù)塊的傳輸。塊將持續(xù)傳輸,直到發(fā)出停止傳輸命令(CMD12)。l由于串行命令傳輸,stop命令有執(zhí)行延遲。數據傳輸在stop命令結束位之后停止。
當使用CMD18讀取用戶區(qū)的最后一塊時,即使順序正確,主機也應該忽略可能發(fā)生的OUT_OF_RANGE錯誤。
如果主機使用的部分塊的累積長度不是塊對齊的,并且不允許塊錯位,卡應該在第一個錯位塊的開始處檢測到塊錯位,在狀態(tài)寄存器中設置ADDRESS_ERROR錯誤位,中止傳輸,并在Data State中等待停止命令。
下方圖格定義了當局部塊訪問被啟用時的卡片行為。
如果不對齊的塊是命令的第一個數據塊(即在對命令的實際響應中報告了i.e.ADDRESS_ERROR),則不傳輸數據,卡保持在TRAN狀態(tài)。
*1:“當前塊欄”大小由CMD16設置或更改。如果value小于或等于512字節(jié)(與Misalign和Partial選項沒有關系),則設置無錯誤。
*2:當Blocklen大小數據范圍超過512字節(jié)的塊邊界時,卡片輸出數據直到512字節(jié)的塊邊界,此時數據無效,也可能出現CRC錯誤??▽⒃谙乱粋€命令響應中發(fā)送“ADDRESS_ERROR”。主機應該發(fā)出CMD12來恢復。
數據寫入
數據傳輸格式與數據讀取格式類似。對于面向塊的寫數據傳輸,CRC校驗位被添加到每個數據塊中。在寫操作之前,卡對每個接收到的數據塊執(zhí)行1位或4位CRC奇偶校驗。通過這種機制,可以防止寫入錯誤傳輸的數據。如果發(fā)生BLOCK_LEN_ERROR或ADDRESS_ERROR,并且沒有進行數據傳輸,則拒絕寫命令。
塊的寫入
在塊寫入(CMD24 - 27,42,56 (w))期間,一個或多個數據塊從主機傳輸到卡,主機在每個塊的末尾附加1或4位CRC。無論WRITE_BL_LEN設置為1k還是2k字節(jié),支持塊寫的卡都要求CMD16設置的block Length為512字節(jié)。下方表格定義了當部分塊訪問被禁用(WRITE_BL_PARTIAL = 0)時卡的行為。
*1:“當前塊欄”大小由CMD16設置或更改。如果value小于512字節(jié)(與Misalign和Partial選項沒有關系),則設置無錯誤。然后在寫命令執(zhí)行時測試“當前Blocklen”大小。
*2:如果當前的Blocklen不是這個值,卡在寫命令響應上指示“BLOcK_LEN_ERROR”。
*3:如果起始地址不是這個值,卡將在寫命令響應中發(fā)送“ADDRESS_ERROR”。
如果允許WRITE_BL_PARTIAL(=1),那么也可以使用更小的塊,最高分辨率為一個字節(jié)。如果CRC失敗,卡應在DAT線上指示失敗€;傳輸的數據將被丟棄而不被寫入,所有進一步傳輸的塊(在多個塊中)將被寫入模式)將被忽略。
為了提高寫操作的速度,建議使用多個塊寫命令,而不是連續(xù)的單個寫命令。如果主機使用的部分塊的累計長度沒有塊對齊,并且不允許塊錯位(CSD參數WRITE_BLK_MISALIGN未設置),則卡應在第一個錯位塊開始之前檢測到塊錯位錯誤并中止編程。
卡應該在狀態(tài)寄存器中設置ADDRESS_ERROR錯誤位,同時忽略所有進一步的數據傳輸,在Receive-data-State中等待停止命令。
注意,第一個數據塊對于寫命令是不對齊的(即在寫命令的實際響應中報告i.e.ADDRESS_ERROR),卡保持在tran狀態(tài),沒有數據被編程。如果主機試圖在寫保護區(qū)域上寫,寫操作也會被終止。然而,在這種情況下,卡應該設置WP_VIOLATION位。
CSD寄存器的編程不需要先前的塊長度設置。傳輸的數據也受CRC保護。如果CSD寄存器的一部分存儲在ROM中,那么這個不可改變的部分應與接收緩沖區(qū)的相應部分相匹配。如果匹配失敗,那么卡將報告一個錯誤,并且不會更改任何寄存器內容。
有些卡可能需要很長且不可預測的時間來寫入數據塊。在接收到數據塊并完成CRC檢查后,如果寫緩沖區(qū)已滿并且無法接受來自新WRITE_BLOCK命令的新數據,則卡將開始寫入并保持DATO低電平。主機可以在任何時候用SEND_STATUS命令(CMD13)輪詢卡片的狀態(tài),卡片將用它的狀態(tài)進行響應。狀態(tài)位READY_FOR_DATA表示卡是否可以接受新數據,或者寫過程是否仍在進行中。
主機可以通過發(fā)出CMD7(選擇不同的卡)來取消卡的選擇,這將使卡進入斷開狀態(tài)并釋放數據線而不中斷寫操作。當重新選擇卡時,如果編程仍在進行中并且寫緩沖區(qū)不可用,它將通過將DAT拉到低來重新激活忙指示。
實際上,主機可以同時對多張卡進行寫操作,并有互留過程。交錯過程可以通過在其他卡忙時單獨訪問每個卡來完成。這個過程可以通過適當的CMD和DATO-3線操作(斷開忙卡)來完成。
審核編輯 黃宇
-
存儲
+關注
關注
13文章
4358瀏覽量
86196 -
SD NAND
+關注
關注
0文章
84瀏覽量
1293
發(fā)布評論請先 登錄
相關推薦
關于SD NAND 的概述
一文帶你了解什么是SD NAND存儲芯片
瀚海微SD NAND存儲功能描述(28)RCA Registers
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(28)RCA Registers](https://file1.elecfans.com/web2/M00/07/60/wKgZombwzrCAQ84zAAGPH88l91g401.png)
瀚海微SD NAND存儲功能描述(26)CSD Registers
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(26)CSD Registers](https://file1.elecfans.com/web2/M00/06/B5/wKgZombqN4qADzDSAAB8zptFugs090.png)
瀚海微SD NAND存儲功能描述(25)SD Registers
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(25)<b class='flag-5'>SD</b> Registers](https://file1.elecfans.com/web2/M00/07/4F/wKgaombk7E6AE2PuAAFu72IuZ74460.png)
瀚海微SD NAND存儲功能描述(22)Timing Values
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(22)Timing Values](https://file1.elecfans.com/web2/M00/06/1B/wKgaombX0ZCAfVTrAAJXynxC8eQ402.png)
瀚海微SD NAND存儲功能描述(14)命令類a
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(14)命令類a](https://file1.elecfans.com/web2/M00/03/4C/wKgZombCrQqATUV0AALGY1LP580639.png)
瀚海微SD NAND存儲功能描述(13)讀寫擦除超時
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(13)<b class='flag-5'>讀寫</b>擦除超時](https://file1.elecfans.com/web2/M00/03/42/wKgZombBiduAL5f_AAB1DLLcs7E853.png)
瀚海微SD NAND存儲功能描述(11)命令系統(tǒng)CMD8
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(11)命令系統(tǒng)CMD8](https://file1.elecfans.com/web2/M00/02/09/wKgZoma5wW6ATO2IAAL_tS-2MOo010.png)
瀚海微SD NAND存儲功能描述(9)切換功能
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(9)切換<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/02/59/wKgaoma1e1mAera_AAJjDz23s5k567.png)
瀚海微SD NAND應用之SD協議存儲功能描述2 初始化命令
![<b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>應用之<b class='flag-5'>SD</b>協議<b class='flag-5'>存儲</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>2 初始化命令](https://file1.elecfans.com/web2/M00/FD/A2/wKgZomadyY2APOCNAAIGhvObh-4141.png)
評論