W25M02_W25N01中文版+原版芯片手冊
只撿了一些我寫代碼用得上的部分翻譯了大概70%中文。
W25M02由兩片W25N01GV疊加組成
51hei.png (43.63 KB, 下載次數(shù): 80)
下載附件
2020-12-5 16:40 上傳
每個 W25N01GV 有 128M 字節(jié),用寫命令(C2h)選擇使用那一片。
標準 SPI 指令使用單向 DI(輸入)引腳將指令、地址或數(shù)據(jù)串行寫入串行時鐘(CLK)輸入引腳上升沿上的設備 標準 SPI 還使用單向 DO(輸出)來從 CLK 下降沿上的設備讀取數(shù)據(jù)或狀態(tài)。
標準 SPI 說明 W25M02GV 通過 SPI 兼容總線訪問,該總線由四個信號組成: 串行時鐘(CLK)、芯片選擇(/CS)、串行數(shù)據(jù)輸入(DI)和串行數(shù)據(jù)輸出(DO)。
標準 SPI 指令使用 DI 輸入引腳串行地將指令、地址或數(shù)據(jù)寫入 CLK 上升沿上的設備。 DO 輸出引腳用于從 CLK 下降沿上的設備讀取數(shù)據(jù)或狀態(tài)。 支持 SPI 總線操作模式 0(0,0)和 3(1,1)。
模式 0 和模式 3 之間的主要區(qū)別在于當 SPI 總線主機處于待機狀態(tài)且數(shù)據(jù)未傳輸?shù)酱虚W存時,CLK 信號的正常狀態(tài)。 對于模式 0,CLK 信號在/CS 的下降和上升邊緣通常較低。 對于模式 3,CLK 信號通常在/CS 的下降和上升沿高。
為每個堆疊的 W25N01GV 模具提供三個狀態(tài)寄存器: 保護寄存器(SR-1)、配置寄存器(SR-2)和狀態(tài)寄存器(SR-3)。 每個寄存器分別由讀狀態(tài)寄存器和寫狀態(tài)寄存器命令結(jié)合 1 字節(jié)寄存器地址訪問。
讀取狀態(tài)寄存器指令(05h/0Fh)可用于提供有關(guān)閃存陣列可用性的狀態(tài), 無論設備是寫啟用還是禁用、寫入保護狀態(tài)、讀取模式、保護寄存器/OTP 區(qū)域鎖定狀態(tài)、擦除/程序結(jié)果、ECC 使用/狀態(tài)。 寫入狀態(tài)寄存器指令可用于配置設備寫保護功能、軟件/硬件寫入保護、讀取模式、啟用/禁用 ECC、保護寄存器/OTP 區(qū)域鎖定。 對狀態(tài)寄存器的寫入訪問由非易失性狀態(tài)寄存器保護位(SRP0,SRP1)的狀態(tài)控制,寫啟用指令,當 WP-E 設置為 1 時,由/WP 引 腳控制。
4.4寫保護腳(/WP) 寫保護(/WP)引腳可用于防止寫入狀態(tài)寄存器。 與狀態(tài)寄存器的塊保護位 BP[3:0]和狀態(tài)寄存器 Protect SRP bits SRP[1:0]一起使用時,小到 256K 字節(jié)(2x128KB 塊)或最多整個 內(nèi)存陣列的一部分都可以受到硬件保護。 保護寄存器(SR-1)中的 WP-E 位控制/WP 引腳的功能。 當 WP-E=0 時,設備處于軟件保護模式,只有 SR-1 可以被保護。 /WP 引腳作為四重 SPI 操作的數(shù)據(jù)輸入/輸出引腳,以及用于 SR-1 寫保護功能的有源低輸入引腳。 有關(guān)詳細信息,請參閱第 7.1.3 節(jié)。
當 WP-E=1 時,設備處于硬件保護模式,即/WP 成為整個設備寫保護的專用有源低輸入引腳。 如果/WP 連接到 GND,則所有“寫入/編程/擦除”功能都將被禁用。 整個設備(包括所有寄存器、內(nèi)存陣列、OTP 頁)將變?yōu)橹蛔x。 當 WP-E 設置為 1 時,Quad SPI read 操作也被禁用。
4.5保持腳(/保持) 在標準和雙 SPI 操作期間,/HOLD 引腳允許設備在活動選擇時暫停。 當(/HOLD)低時,/CS 低時,DO 引腳將處于高阻抗狀態(tài),DI 和 CLK 引腳上的信號將被忽略(無所謂)。 當(/HOLD)被調(diào)高時,設備操作可以恢復。 當多個設備共享相同的 SPI 信號時,(/HOLD)函數(shù)非常有用。 (/HOLD)引腳處于低激活狀態(tài)。 當發(fā)出 Quad SPI Read/Buffer Load 命令時,(/HOLD)pin 將成為 Quad 操作的數(shù)據(jù) I/O pin,并且在當前 Quad 操作完成之前沒 有可用的 HOLD 函數(shù)。 (/HOLD)(IO3)必須由主機驅(qū)動高電平,或者必須在 PCB 上放置一個外部上拉電阻器,以避免/HOLD 輸入浮動。
51hei.png (76.79 KB, 下載次數(shù): 62)
下載附件
2020-12-5 16:42 上傳
7.1.1塊保護位(BP3、BP2、BP1、BP0、TB)–易失性可寫,OTP可鎖定
塊保護位(BP3、BP2、BP1、BP0 和 TB)是狀態(tài)寄存器 1(S6、S5、S4、S3 和 S2)中的易失性讀/寫位,提供寫保護控制和狀態(tài)。 塊保護位可以使用寫入狀態(tài)寄存器指令進行設置。內(nèi)存陣列的所有、無或一部分都可以受到程序和擦除指令的保護(請參閱狀態(tài)寄存器內(nèi)存保護表)。 塊保護位的默認值在通電后為 1,以保護整個陣列。 需要清零這些保護位才能進行擦除操作和編程操作(寫入數(shù)據(jù)操作) 如果配置寄存器(SR-2)中的 SR1-L 位設置為 1,則默認值為 OTP 鎖定的值。
7.1.2寫保護啟用位(WP-E)–易失性可寫,OTP可鎖定
寫保護啟用位(WP-E)是狀態(tài)寄存器 1(S1)中的易失性讀/寫位。 WP-E 位與 SRP1 和 SRP0 一起控制寫保護的方法: 軟件保護,硬件保護、電源鎖定或一次性可編程(OTP)保護、/WP 引腳功能和四重 SPI 操作啟用/禁用。 當 WP-E=0(默認值)時,設備處于軟件保護模式,/WP&/HOLD 管腳被多路復用為 IO 管腳,并且四路程序/讀取功能一直處于啟 用狀態(tài)。 當 WP-E 設置為 1 時,設備處于硬件保護模式,所有四元功能被禁用,/WP&/HOLD 引腳成為專用控制輸入引腳
7.1.3狀態(tài)寄存器保護位(SRP1、SRP0)–易失性可寫,OTP可鎖定
狀態(tài)寄存器保護位(SRP1 和 SRP0)是狀態(tài)寄存器(S0 和 S7)中的易失性讀/寫位。 SRP 位控制寫保護的方法:軟件保護,硬件保護,電源鎖定或一次性可編程(OTP)保護。
51hei.png (50.2 KB, 下載次數(shù): 72)
下載附件
2020-12-5 16:42 上傳
7.2.1一次性程序鎖定位(OTP-L)–OTP可鎖定
除了主內(nèi)存陣列之外,W25M02GV 還為系統(tǒng)提供了一個 OTP 區(qū)域,用于存儲一旦鎖定就無法更改的關(guān)鍵數(shù)據(jù)。 OTP 區(qū)域由 10 頁組成,每頁 2112 字節(jié)。 OTP 區(qū)域中的默認數(shù)據(jù)是 FFh。 只能向 OTP 區(qū)域發(fā)出程序命令,將數(shù)據(jù)從“1”更改為“0”,并且數(shù)據(jù)不能通過 Erase 命令可逆(“0”到“1”)。 一旦正確的數(shù)據(jù)被編程和驗證,系統(tǒng)開發(fā)人員可以將 OTP-L 位設置為1,這樣整個 OTP 區(qū)域?qū)⒈绘i定,以防止對數(shù)據(jù)的進一步修改。
7.2.2進入OTP訪問模式位(OTP-E)–易失性可寫
OTP-E 位必須設置為 1,以便使用標準程序/讀取命令訪問 OTP 區(qū)域以及讀取唯一的 ID/參數(shù)頁信息。 通電命令后的默認值為 0 或復位。
7.2.3狀態(tài)寄存器-1鎖定位(SR1-L)–OTP可鎖定
SR1-L 鎖定位用于 OTP 鎖定保護寄存器(SR-1)中的值。 根據(jù) SR-1 中的設置,可以將設備配置為對整個陣列進行寫保護,并且可以通過將 SR1-L 位設置為 1 來鎖定設置。 當 SRP1 和 SRP0 設置為(1,1)時,SR1-L 位只能永久設置為 1,并且必須進入 OTP 訪問模式(OTP-E=1)才能執(zhí)行編程。詳見 8.2.26。
7.2.4ECC啟用位(ECC-E)–易失性可寫
W25M02GV 有一個內(nèi)置的 ECC 算法,可以用來保持數(shù)據(jù)的完整性。 內(nèi)部 ECC 計算在頁面編程期間完成,結(jié)果存儲在每個頁面的額外 64 字節(jié)區(qū)域中。 在數(shù)據(jù)讀取操作期間,ECC 引擎將根據(jù)先前存儲的 ECC 信息驗證數(shù)據(jù)值,并在需要時進行必要的更正。 驗證和校正狀態(tài)由 ECC 狀態(tài)位指示。 ECC 功能在開機時默認啟用(ECC-E=1),并且不會通過設備重置命令將其重置為 0。
7.2.5緩沖區(qū)讀取/連續(xù)讀取模式位(BUF)-易失性可寫
每個堆疊的 W25N01GV 芯片為讀取操作提供兩種不同的模式,緩沖區(qū)讀取模式(BUF=1)和連續(xù)讀取模式(BUF=0)。 在任何讀取操作之前,需要一個頁面數(shù)據(jù)讀取命令來啟動從內(nèi)存數(shù)組中的指定頁到數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)傳輸。 默認情況下,通電后,第 0 頁中的數(shù)據(jù)將自動加載到數(shù)據(jù)緩沖區(qū)中,設備已準備好接受任何讀取命令。
緩沖區(qū)讀取模式(BUF=1)需要一個列地址來開始輸出數(shù)據(jù)緩沖區(qū)內(nèi)的現(xiàn)有數(shù)據(jù), 一旦到達數(shù)據(jù)緩沖區(qū)(字節(jié) 2111)的末尾,DO(IO1)引腳將變?yōu)?high-Z 狀態(tài)。 連續(xù)讀取模式(BUF=0)不需要起始列地址。 設備將始終從數(shù)據(jù)緩沖區(qū)的第一列(字節(jié) 0)開始輸出數(shù)據(jù), 一旦到達數(shù)據(jù)緩沖區(qū)(字節(jié) 2048)的末尾,數(shù)據(jù)輸出將繼續(xù)通過下一個內(nèi)存頁。 在連續(xù)讀取模式下,可以使用單個讀取命令讀取整個內(nèi)存陣列。 關(guān)于不同讀取模式下每個讀取命令的虛擬循環(huán)要求,請參考各自的命令說明。 對于 W25M02GVxxIG 零件號,兩個堆疊模具通電后 BUF 位的默認值為 1。 BUF 位可以單獨寫入狀態(tài)寄存器 2 中的 0,以執(zhí)行連續(xù)讀取操作。 對于 W25M02GVxxIT 零件號,兩個堆疊模具通電后 BUF 位的默認值為 0。 BUF 位可以單獨寫入狀態(tài)寄存器 2 中的 1,以執(zhí)行緩沖區(qū)讀取操作。
51hei.png (48.06 KB, 下載次數(shù): 49)
下載附件
2020-12-5 16:43 上傳
7.3.1查找表已滿(LUT-F)-僅狀態(tài)
為了方便 NAND 閃存壞塊管理,每個堆疊的 W25N01GV 芯片都配備了內(nèi)部壞塊管理查找表(BBM LUT)。 一個好的內(nèi)存塊可以替換多達 20 個壞內(nèi)存塊。 塊的地址作為邏輯塊地址(LBA,壞塊)和物理塊地址(PBA,good 塊)存儲在內(nèi)部查找表中。 LUT-F 位指示 20 個存儲器塊鏈路是否已被充分利用。 LUT-F 的默認值為 0,一旦全部 20 個鏈路都被使用, LUT-F 將變?yōu)?1,并且不可能建立更多的存儲塊鏈路。
7.3.2累計ECC狀態(tài)(ECC-1、ECC-0)-僅狀態(tài)
在 NAND 閃存中使用 ECC 功能來糾正讀取操作中的有限內(nèi)存錯誤。 讀取操作完成后,應檢查 ECC 狀態(tài)位(ECC-1、ECC-0),以驗證數(shù)據(jù)的完整性。 如果 ECC-E=0,ECC 狀態(tài)位值不重要。 在通電循環(huán)或復位命令后,這些位將被清除為 0。
ECC-1=0 | ECC-0=0 | 整個數(shù)據(jù)輸出成功,無需任何 ECC 校正。 | ECC-1=0 | ECC-0=1 | 整個數(shù)據(jù)輸出成功,單頁或多頁中有 1~4 位/頁 ECC 校正。 | ECC-1=1 | ECC-0=0 | 整個數(shù)據(jù)輸出僅在單個頁面中包含超過 4 位的錯誤,ECC 無法修復這些錯誤。 |
|
| 在連續(xù)讀取模式下,可以使用附加命令來讀取出現(xiàn)錯誤的頁地址(PA)。 | ECC-1=1 | ECC-0=1 | 整個數(shù)據(jù)輸出在多個頁面中包含超過 4 位的錯誤/頁。(僅適用于連續(xù)讀取操作(BUF=0)) |
在連續(xù)讀取模式下,附加命令只能提供發(fā)生故障的最后一頁地址(PA), 用戶無法獲取其他失敗頁面的 PA。數(shù)據(jù)不適合使用。
7.3.3程序/擦除失�。�P-失敗,E-失�。�-僅狀態(tài)
程序/擦除失敗位用于指示內(nèi)部控制的程序/擦除操作是否成功執(zhí)行。 當向鎖定或受保護的存儲器陣列或 OTP 區(qū)域發(fā)出程序或擦除命令時,這些位也將被分別設置。 在程序執(zhí)行或塊擦除指令以及設備復位指令開始時,這兩個位都將被清除。
7.3.4寫入啟用閂鎖(WEL)–僅狀態(tài)
寫啟用閂鎖(WEL)是狀態(tài)寄存器(S1)中的一個只讀位,在執(zhí)行寫啟用指令后被設置為 1。 當設備被禁用寫入時,WEL 狀態(tài)位被清除為 0。 寫入禁用狀態(tài)在通電時或以下任何指令之后發(fā)生: OTP 頁的寫禁用、程序執(zhí)行、塊擦除、頁數(shù)據(jù)讀取、程序執(zhí)行和壞塊管理。
7.3.5擦除/程序進行中(BUSY(忙))-僅狀態(tài)
BUSY 是狀態(tài)寄存器(S0)中的只讀位, 當設備通電或執(zhí)行頁面數(shù)據(jù)讀取、壞塊管理、程序執(zhí)行、塊擦除、OTP 區(qū)域的程序執(zhí)行、 OTP 鎖定或連續(xù)讀取指令之后,該位被設置為 1 狀態(tài)。 在此期間,設備將忽略除讀取狀態(tài)寄存器和讀取 JEDEC ID 指令以外的其他指令。 當程序、擦除或?qū)懭霠顟B(tài)寄存器指令完成時,忙位將被清除 到 0 狀態(tài),指示設備已準備好接受進一步的指令。
總結(jié) 1、輸出指定從設備輸出的數(shù)據(jù)。 2、字節(jié)地址或列地址(CA)只需要 CA[11:0],CA[15:12]被視為偽位。 3、頁地址(PA)需要 16 位。 PA[15:6]是 128KB 塊的地址(共 1024 個塊),PA[5:0]是 2KB 頁的地址(每個塊總共 64 頁)。 4、邏輯和物理塊地址(LBA 和 PBA)都由 16 位組成。 LBA[9:0]和 PBA[9:0]是有效的塊地址。[14:15]用于補充信息。 5、狀態(tài)寄存器地址: 狀態(tài)寄存器 1/保護寄存器:Addr=Axh 狀態(tài)寄存器 2/配置寄存器:Addr=Bxh 狀態(tài)寄存器3/狀態(tài)寄存器:Addr=Cxh 10、當保護寄存器中的 WP-E 位設置為 1 時,所有四元程序/讀取命令被禁用。 11、對于連續(xù)讀取模式下的所有讀取操作,一旦/CS 信號被調(diào)高以終止讀取操作,設備仍將保持忙碌狀態(tài)~5us(busy=1),并且數(shù)據(jù) 緩沖區(qū)內(nèi)的所有數(shù)據(jù)都將丟失,無法可靠使用。 必須發(fā)出新的頁數(shù)據(jù)讀取指令,才能將正確的頁數(shù)據(jù)重新加載到數(shù)據(jù)緩沖區(qū)中。 12、對于緩沖區(qū)讀取模式下的所有讀取操作,一旦/CS 信號變?yōu)楦咭越K止讀取操作,設備將準備好接受新的指令,并且數(shù)據(jù)緩沖區(qū)內(nèi) 的所有數(shù)據(jù)將與上一頁數(shù)據(jù)讀取指令保持不變。
BUF==1 時 指令大同小異
8.2.1軟件模具選擇(C2h)
每個疊層模具都有工廠預先指定的“模具 ID”,順序為 0x00、0x01 等。 在任何給定的時間,W25M 包內(nèi)只能有一個活動的模具,用于與外部 SPI 控制器通信。 通電后,模具 0 始終為活動模具。 軟件模具選擇(C2h)指令用于根據(jù)圖 4 所示 C2h 指令后的 8 位模具 ID 選擇要激活的特定模具。
“并行操作”可以通過分配當前活動的模具來執(zhí)行需要一定時間才能完成的擦除/程序操作來實現(xiàn)。 當內(nèi)部程序/擦除操作正在進行時,控制器可以發(fā)出“軟件模具選擇(C2h)”指令來選擇另一個要激活的模具。 根據(jù)系統(tǒng)要求,可以在新選擇的活動模具上執(zhí)行讀取、編程或擦除操作。 “邊讀邊程序/擦除”或“多芯片程序/擦除”可以以這種方式執(zhí)行,以提高系統(tǒng)程序/擦除吞吐量,并避免在某些應用程序中持續(xù)的 程序/擦除掛起和恢復活動。
在設備加電和復位期間,建議不要發(fā)出“軟件模具選擇(C2h)”命令,以避免設備可能的未知狀態(tài)。 最小 tVSL(見第 56 頁)和最大 tRST(見第 60 頁)值可分別應用于“軟件模具選擇(C2h)”命令。
如果發(fā)送到設備的模具 ID 錯誤,則兩個堆疊的 W25N01GV 模具都可能閑置。 在這種情況下,應發(fā)出一個新的“軟件模具選擇(C2h)”命令, 后跟正確的模具 ID(0x00 或 0x01),以重新選擇激活的模具。
8.2.2設備復位(FFh)
由于封裝小,引腳數(shù)量有限,W25M02GV 提供軟件復位指令,而不是專用復位引腳。 一旦復位指令被接受,任何正在進行的內(nèi)部操作都將被終止,設備將返回其默認上電狀態(tài),并丟失所有當前易失性設置,例如易失性 狀態(tài)寄存器位。 一旦設備接受復位命令,設備將需要大約 tRST 來復位,根據(jù)設備正在執(zhí)行的當前操作,tRST 可以是 5us~500us。 在此期間,不接受任何命令。 此外,“軟件模具選擇(C2h)”不應在最大 tRST(500us)時間段內(nèi)發(fā)出,以避免由于模具的重置狀態(tài)而導致的模具選擇混亂。 當設備接受復位命令序列時,如果正在進行內(nèi)部擦除或程序操作,則可能會發(fā)生數(shù)據(jù)損壞。 建議在發(fā)出復位命令之前檢查狀態(tài)寄存器中的忙位。
通電和設備復位后狀態(tài)寄存器的默認值
8.2.3讀取JEDECID(9Fh)
Read JEDEC ID 指令與 2003 年采用的 SPI 兼容串行存儲器 JEDEC 標準兼容。 該指令通過驅(qū)動/CS 引腳低并移動指令代碼“9Fh”和 8 個假時鐘來啟動。 然后,JEDEC 為 Winbond(EFh)分配的制造商 ID 字節(jié)和兩個設備 ID 字節(jié)在 CLK 的下降沿移出,首先是最有效位(MSB),如圖 6 所示。有關(guān)存儲器類型和容量值,請參閱制造商和設備標識表。 8.2.4讀取狀態(tài)寄存器(0Fh/05h)
讀取狀態(tài)寄存器指令允許讀取 8 位狀態(tài)寄存器。 該指令通過驅(qū)動/CS low,并將指令代碼“0Fh 或 05h”移到 CLK 上升沿上的 DI 引腳中,然后是一個 8 位狀態(tài)寄存器地址。 然后狀態(tài)寄存器位在 CLK 下降沿的 DO 引腳上移出,首先是最有效位(MSB),如圖 7 所示。 狀態(tài)寄存器說明見第 7.1-3 節(jié)。
讀取狀態(tài)寄存器指令可在任何時候使用,即使在程序或擦除周期正在進行時也是如此。 這允許檢查忙狀態(tài)位以確定周期何時完成以及設備是否可以接受另一條指令。 狀態(tài)寄存器可以連續(xù)讀取。 指令通過駕駛/CS 高速來完成。
8.2.5寫入狀態(tài)寄存器(1Fh/01h)
寫入狀態(tài)寄存器指令允許寫入狀態(tài)寄存器。 可寫狀態(tài)寄存器位包括: 狀態(tài)寄存器 1 中的 SRP[1:0]、TB、BP[3:0]和 WP-E 位; 狀態(tài)寄存器 2 中的 OTP-L、OTP-E、SR1-L、ECC-E 和BUF 位。
所有其他狀態(tài)寄存器位位置都是只讀的,不受寫入狀態(tài)寄存器指令的影響。 要寫入狀態(tài)寄存器位,輸入指令的方法是:驅(qū)動/CS low,發(fā)送指令代碼“1Fh 或 01h”,然后發(fā)送 8 位狀態(tài)寄存器地址,然后寫入狀 態(tài)寄存器數(shù)據(jù)字節(jié),如圖 8 所示。 狀態(tài)寄存器說明見第 7.1-3 節(jié)。 通電后,BP[3:0]、TB、ECC-E 位的出廠默認值為 1,其他位為 0。
8.2.6寫啟用(06h)
寫啟用指令(圖 9)將狀態(tài)寄存器中的寫啟用閂鎖(WEL)位設置為 1。 WEL 位必須在每個頁面程序、四頁程序、塊擦除和壞塊管理指令之前設置。 寫入使能指令通過驅(qū)動/CS low 輸入,將指令代碼“06h”移入 CLK 上升沿的數(shù)據(jù)輸入(DI)引腳,然后驅(qū)動/CS high。
8.2.7寫禁用(04h)
寫禁用指令(圖 10)將狀態(tài)寄存器中的寫啟用閂鎖(WEL)位重置為 0。 通過驅(qū)動/CS low,將指令代碼“04h”移到 DI pin,然后驅(qū)動/CS high,輸入寫禁用指令。 請注意,WEL 位在通電后以及頁面程序、四頁程序、塊擦除、重置和壞塊管理指令完成后自動重置。 8.2.8壞塊管理(A1h)
由于 NAND 內(nèi)存密度大,且受技術(shù)限制,在出廠測試中發(fā)現(xiàn)一定數(shù)量的“壞塊”時,NAND 內(nèi)存設備允許運往最終客戶。 裝運時,多達 2%的內(nèi)存塊可標記為“壞塊”,這是每個堆疊的 W25N01GV 模具最多 20 塊。 為了識別這些壞塊,建議掃描整個內(nèi)存陣列以查找出廠時設置的壞塊標記。 “壞塊標記”是存儲在每個壞塊的第 0 頁字節(jié) 0 處的非 FFh 數(shù)據(jù)字節(jié)。 另一個標記也存儲在 64 字節(jié)備用區(qū)域的第一個字節(jié)中。
W25M02GV 提供了一種方便的方法來管理 NAND 閃存中在大量使用后通常發(fā)現(xiàn)的壞塊。 “壞塊管理”命令是通過將指令代碼“A1h”移到 DI 管腳,然后是 16 位“邏輯塊地址”和16 位“物理塊地址”,如圖 11 所示。 在設備接受壞塊管理指令之前,必須執(zhí)行寫啟用指令(狀態(tài)寄存器位 WEL=1)。 邏輯塊地址是“壞”塊的地址,它將被物理塊地址指示的“好”塊替換。
成功執(zhí)行壞塊管理命令后,指定的 LBA-PBA 鏈接將添加到內(nèi)部查找表(LUT)。 在非易失性 LUT 中可以建立多達 20 個鏈路。 如果所有 20 條鏈路都已寫入,狀態(tài)寄存器中的 LUT-F 位將變?yōu)?1,并且不能再建立 LBA-PBA 鏈路。 因此,在發(fā)出壞塊管理命令之前,可以檢查 LUT-F 位值,或者可以發(fā)出“閱讀BBM 查找表”命令來確認 LUT 中是否仍然有備用鏈路
為了保證前 1000 個塊上的連續(xù)讀取操作,制造商可能使用了一些 BBM LUT 入場權(quán)。 建議用戶在第一次擦除/程序操作之前掃描所有塊并保存所有制造商壞塊的表。 禁止在多個 PBA 中注冊同一地址。它可能導致意外行為。
8.2.9讀取BBM查找表(A5h)
內(nèi)部查找表(LUT)由 20 個邏輯物理內(nèi)存塊鏈接組成(從 LBA0/PBA0 到 LBA19/PBA19)。 “閱讀 BBM 查找表”命令可用于檢查存儲在 LUT 中的現(xiàn)有地址鏈接。
“讀取 BBM 查找表”命令通過將指令代碼“A5h”移入 DI 引腳,然后是 8 位虛擬時鐘,在第 16 個時鐘的下降沿,設備將開始輸出 16 位“邏輯塊地址”和 16 位“物理塊地址”,如圖 12 所示。 所有塊地址鏈路將從 LUT 中的第一個鏈路(LBA0 和 PBA0)開始按順序輸出。 如果有未使用的可用鏈接,輸出將包含所有“00h”數(shù)據(jù)。
每個鏈路的 MSB 位 LBA[15:14]用于指示鏈路的狀態(tài)。
為了更好地管理數(shù)據(jù)完整性,W25M02GV 對整個內(nèi)存陣列執(zhí)行內(nèi)部 ECC 校正。 當狀態(tài)/配置寄存器中的 ECC-E 位設置為 1(也是加電默認值)時,所有程序和讀取操作都啟用內(nèi)部 ECC 算法。 在特定頁面的“程序執(zhí)行”命令期間,ECC 算法將根據(jù) 2K 字節(jié)數(shù)據(jù)緩沖區(qū)內(nèi)的數(shù)據(jù)計算 ECC 信息,并將 ECC 數(shù)據(jù)寫入同一物理內(nèi)存 頁中額外的 64 字節(jié) ECC 區(qū)域。
在讀取操作期間,ECC 信息將用于驗證從物理內(nèi)存陣列中讀取的數(shù)據(jù),并且可以對包含錯誤的有限數(shù)量的數(shù)據(jù)位進行可能的更正。 ECC 狀態(tài)位(ECC-1 和 ECC-0)也將被設置,指示 ECC 計算的結(jié)果。
對于“連續(xù)讀取模式(BUF=0)”操作,可以通過發(fā)出單個讀取命令連續(xù)讀取多頁主陣列數(shù)據(jù)。 在完成讀取操作后,應檢查 ECC 狀態(tài)位,以驗證讀取的數(shù)據(jù)中是否存在 ECC 校正或不可糾正的錯誤。 如果 ECC-1 和 ECC-0 等于(1,0)或(1,1),則以前讀取的數(shù)據(jù)包含一個或多個包含 ECC 不可糾正錯誤的頁。 可以通過發(fā)出“上次 ECC 失敗頁地址”命令獲得失敗頁面地址(如果是多個頁面,則為最后一個頁面地址),如圖 13 所示。 包含不可糾正 ECC 錯誤的 16 位頁地址將顯示在指令代碼“A9h”之后的 DO 引腳上,DI 引腳上的 8 位虛擬時鐘之后。
128KB 塊擦除指令將指定塊(64 頁,128K 字節(jié))中的所有內(nèi)存設置為所有 1(FFh)的已擦除狀態(tài)。 在設備接受塊擦除指令(狀態(tài)寄存器位 WEL 必須等于 1)之前,必須執(zhí)行寫啟用指令。 該指令通過驅(qū)動/CS 引腳低,并移動指令代碼“D8h”,然后是 8 位虛擬時鐘和 16 位頁地址來啟動。 塊擦除指令序列如圖 14 所示。
在鎖存最后一個字節(jié)的第八位之后,/CS 引腳必須被驅(qū)動到高位。 如果不這樣做,將不執(zhí)行塊擦除指令。 在/CS 被驅(qū)動為高電平后,自定時塊擦除指令將在 tBE 的持續(xù)時間內(nèi)開始(參見交流特性)。 當塊擦除周期正在進行時,仍可以訪問讀取狀態(tài)寄存器指令以檢查忙位的狀態(tài)。 在塊擦除周期中,忙位為 1,當周期結(jié)束且設備準備再次接受其他指令時,忙位變?yōu)?0。 塊擦除周期完成后,狀態(tài)寄存器中的寫入啟用閂鎖(WEL)位被清除為 0。 如果尋址塊受塊保護(TB、BP2、BP1 和 BP0)位保護,則不會執(zhí)行塊擦除指令。
這里雖然用的是頁地址,擦除擦除時還是按塊擦除,即 64 頁的數(shù)據(jù)都擦除。 這使得數(shù)據(jù)不好進行修改操作,這是這個 IC 的缺點。 另一個缺點就是存在壞塊,所以需要壞塊管理。 有人建議使用前把全部塊測試一遍,我把 65536*2 個頁面都測試了一遍,我這個 IC 沒有發(fā)現(xiàn)壞塊。
8.2.12加載程序數(shù)據(jù)(02h)/隨機加載程序數(shù)據(jù)(84h)
程序操作允許在先前擦除的(FFh)內(nèi)存位置對 1 字節(jié)到 2112 字節(jié)(一頁)的數(shù)據(jù)進行編程。 程序操作包括兩個步驟: 1 將程序數(shù)據(jù)加載到數(shù)據(jù)緩沖區(qū)。 2 發(fā)出“程序執(zhí)行”命令將數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)傳輸?shù)街付ǖ膬?nèi)存頁。
在設備接受加載程序數(shù)據(jù)指令(狀態(tài)寄存器位 WEL=1)之前,必須執(zhí)行寫啟用指令。 “加載程序數(shù)據(jù)”或“隨機加載程序數(shù)據(jù)”指令是通過驅(qū)動/CS 引腳低,然后將指令代碼“02h”或“84h”后接 16 位列地址(只有 CA[11:0]有效)和至少一個字節(jié)的數(shù)據(jù)轉(zhuǎn)移到 DI 管腳來啟動。 當數(shù)據(jù)被發(fā)送到設備時,/CS 引腳在整個指令長度內(nèi)必須保持在低位。 如果發(fā)送到設備的數(shù)據(jù)字節(jié)數(shù)超過數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),設備將忽略多余的數(shù)據(jù)。 加載程序數(shù)據(jù)指令序列如圖 15 所示。
“加載程序數(shù)據(jù)”和“隨機加載程序數(shù)據(jù)”指令共享相同的命令序列。 不同的是,“加載程序數(shù)據(jù)”指令會將數(shù)據(jù)緩沖區(qū)中未使用的數(shù)據(jù)字節(jié)重置為 FFh 值,而“隨機加載程序數(shù)據(jù)”指令只更新命令輸入 序列指定的數(shù)據(jù)字節(jié),其余數(shù)據(jù)緩沖區(qū)將保持不變。
如果 ECC 算法中的所有字節(jié)都被 ECC 指定為 21 字節(jié),則 ECC 將接受額外字節(jié)的計算。 如果 ECC-E 位設置為 0 以禁用內(nèi)部 ECC,則額外的 64 字節(jié)部分可用于外部 ECC 或其他用途。
8.2.13QuadLoadProgramData(32h)/QuadRandomLoadProgramData(34h)(我用不上,沒有翻譯)
8.2.14程序執(zhí)行(10h)
程序執(zhí)行指令是程序操作的第二步。 在程序數(shù)據(jù)加載到 2112 字節(jié)數(shù)據(jù)緩沖區(qū)(或在啟用 ECC 時為 2048 字節(jié))后,程序執(zhí)行指令將數(shù)據(jù)緩沖區(qū)內(nèi)容編程到指令中指定的 物理內(nèi)存頁中。 該指令通過驅(qū)動/CS 引腳低,然后將指令代碼“10h”,隨后是 8 位虛擬時鐘和 16 位頁面地址轉(zhuǎn)移到 DI pin,如圖 17 所示。
在/CS 被驅(qū)動到高電平以完成指令周期后,自定時程序執(zhí)行指令將在 tpp 的持續(xù)時間內(nèi)開始(參見 AC 特性)。 當程序執(zhí)行周期正在進行時,讀取狀態(tài)寄存器指令仍可用于檢查忙位的狀態(tài)。 在程序執(zhí)行周期中,忙位為 1,當周期結(jié)束且設備準備再次接受其他指令時,忙位變?yōu)?0。 程序執(zhí)行周期結(jié)束后,狀態(tài)寄存器中的寫入啟用閂鎖(WEL)位被清除為 0。 如果尋址頁受塊保護(TB、BP2、BP1 和 BP0)位保護,則不會執(zhí)行程序執(zhí)行指令。 每一頁只允許 4 個部分頁面程序時間。
塊內(nèi)的頁必須按順序從低階頁地址編程到塊內(nèi)的高階頁地址。 禁止無序編程頁面。
8.2.15頁面數(shù)據(jù)讀取(13h)
頁數(shù)據(jù)讀取指令將指定內(nèi)存頁的數(shù)據(jù)傳輸?shù)?2112 字節(jié)的數(shù)據(jù)緩沖區(qū)。 該指令通過驅(qū)動/CS 引腳低,然后將指令代碼“13h”,隨后是 8 位虛擬時鐘和 16 位頁面地址轉(zhuǎn)移到 DI pin,如圖 18 所示。
在/CS 被驅(qū)動到高電平以完成指令周期后,自定時讀頁數(shù)據(jù)指令將在 tRD 的持續(xù)時間內(nèi)開始(見交流特性)。 當讀取頁數(shù)據(jù)循環(huán)正在進行時,讀取狀態(tài)寄存器指令仍可用于檢查忙位的狀態(tài)。 在讀頁數(shù)據(jù)循環(huán)期間,忙位為 1,當周期結(jié)束且設備準備再次接受其他指令時,忙位變?yōu)?0。
在 2112 字節(jié)的頁數(shù)據(jù)加載到數(shù)據(jù)緩沖區(qū)后,可以發(fā)出多個讀取指令來訪問數(shù)據(jù)緩沖區(qū)并讀出數(shù)據(jù)。 根據(jù)狀態(tài)寄存器中的 BUF 位設置,可以使用“緩沖區(qū)讀取模式”或“連續(xù)讀取模式”來完成讀取操作。
8.2.16讀取數(shù)據(jù)(03h)
讀取數(shù)據(jù)指令允許在執(zhí)行讀取頁數(shù)據(jù)指令之后從數(shù)據(jù)緩沖區(qū)順序讀取一個或多個數(shù)據(jù)字節(jié)。 讀取數(shù)據(jù)指令通過驅(qū)動/CS 引腳低,然后將指令代碼“03h”,隨后是 16 位列地址和 8 位假時鐘或 24 位假時鐘移入 DI pin 來啟動。 在接收到地址后,地址數(shù)據(jù)緩沖區(qū)位置的數(shù)據(jù)字節(jié)將在 CLK 下降沿的 DO 引腳上移出,最有效位(MSB)優(yōu)先。 在數(shù)據(jù)的每個字節(jié)被移出后,地址會自動遞增到下一個更高的地址,以允許連續(xù)的數(shù)據(jù)流。 指令通過駕駛/CS 高速來完成。
讀取數(shù)據(jù)指令序列如圖 19a 和 19b 所示。當 BUF=1 時,設備處于緩沖區(qū)讀取模式。 數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。 當 BUF=0 時,設備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當?shù)竭_數(shù)據(jù)緩沖區(qū)的末尾時,下一個內(nèi)存頁的第一個字節(jié)的數(shù)據(jù)將跟隨并繼續(xù)貫穿整個內(nèi)存數(shù)組。 這允許使用單個讀取指令讀取整個內(nèi)存陣列,并且還兼容 Winbond 的 SpiFlash NOR flash memory 命令序列。
快速讀取指令通過驅(qū)動/CS 引腳低,然后將指令代碼“0Bh”以及 16 位列地址和 8 位假時鐘或 32 位假時鐘轉(zhuǎn)移到 DI 引腳來啟動。 在接收到地址后,地址數(shù)據(jù)緩沖區(qū)位置的數(shù)據(jù)字節(jié)將在 CLK 下降沿的 DO 引腳上移出,最有效位(MSB)優(yōu)先。 在數(shù)據(jù)的每個字節(jié)被移出后,地址會自動遞增到下一個更高的地址,以允許連續(xù)的數(shù)據(jù)流。 指令通過駕駛/CS 高速來完成。
快速讀取指令序列如圖 20a 和 20b 所示。 當 BUF=1 時,設備處于緩沖區(qū)讀取模式。 數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。 當 BUF=0 時,設備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當?shù)竭_數(shù)據(jù)緩沖區(qū)的末尾時,下一個內(nèi)存頁的第一個字節(jié)的數(shù)據(jù)將跟隨并繼續(xù)貫穿整個內(nèi)存數(shù)組。 這允許使用單個讀取指令讀取整個內(nèi)存陣列,并且還兼容 Winbond 的 SpiFlash NOR flash memory 命令序列。
快速讀取指令是通過驅(qū)動/CS 引腳低,然后將指令代碼“0Ch”,然后將 16 位列地址和 24 位假時鐘(當 BUF=1)或 40 位假時鐘(BUF=0 時)移入 DI 引腳來啟動。 在接收到地址后,地址數(shù)據(jù)緩沖區(qū)位置的數(shù)據(jù)字節(jié)將在 CLK 下降沿的 DO 引腳上移出,最有效位(MSB)優(yōu)先。 在數(shù)據(jù)的每個字節(jié)被移出后,地址會自動遞增到下一個更高的地址,以允許連續(xù)的數(shù)據(jù)流。 指令通過駕駛/CS 高速來完成。
快速讀取指令序列如圖 21a 和 21b 所示。當 BUF=1 時,設備處于緩沖區(qū)讀取模式。 數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。 當 BUF=0 時,設備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當?shù)竭_數(shù)據(jù)緩沖區(qū)的末尾時,下一個內(nèi)存頁的第一個字節(jié)的數(shù)據(jù)將跟隨并繼續(xù)貫穿整個內(nèi)存數(shù)組。 這允許使用單個讀取指令讀取整個內(nèi)存陣列,并且還兼容 Winbond 的 SpiFlash NOR flash memory 命令序列。
除了主存儲器陣列外,每個堆疊的 W25N01GV 模具還配有一個唯一的 ID 頁、一個參數(shù)頁和十個 OTP 頁
要訪問這些附加數(shù)據(jù)頁,必須首先將狀態(tài)寄存器 2 中的 OTP-E 位設置為“1”。 然后,可以在唯一 ID 和參數(shù)頁上執(zhí)行讀取操作,如果 OTP 頁尚未鎖定,則可以在 OTP 頁上執(zhí)行讀取和程序操作。 要返回到主存儲器陣列操作,OTP-E 位需要設置為 0。
讀取操作必須發(fā)出“頁面數(shù)據(jù)讀取”命令,后跟上表中所示的特定頁面地址,才能將頁面數(shù)據(jù)加載到主數(shù)據(jù)緩沖區(qū)中。 在設備完成數(shù)據(jù)加載(BUSY=0)之后,所有的 Read 命令都可以用來從任何指定的列地址開始讀取數(shù)據(jù)緩沖區(qū)。 請注意,無論之前的 BUF 位設置如何,所有讀命令現(xiàn)在都必須遵循“緩沖區(qū)讀取模式”命令結(jié)構(gòu)(CA[15:0],虛擬時鐘的數(shù)量)。 還可以為 OTP 頁讀取操作啟用 ECC,以確保數(shù)據(jù)的完整性。
程序和OTP鎖定操作 OTP 頁提供額外的空間(2K 字節(jié) x10)來存儲重要的數(shù)據(jù)或安全信息, 這些數(shù)據(jù)或安全信息可以被鎖定以防止在字段中進行進一步修改。
這些 OTP 頁面處于出廠設置的擦除狀態(tài),并且只能編程(將數(shù)據(jù)從“1”更改為“0”),直到被配置/狀態(tài)寄存器 2 中的 OTP-L 位鎖定。 必須首先將 OTP-E 設置為“1”以允許訪問這些OTP 頁,然后必須使用任何“程序數(shù)據(jù)加載”命令將程序數(shù)據(jù)加載到主數(shù)據(jù)緩沖區(qū)。 “程序執(zhí)行”命令后跟特定的 OTP 頁地址,用于啟動從數(shù)據(jù)緩沖區(qū)到 OTP 頁的數(shù)據(jù)傳輸。 當啟用 ECC 時,ECC 計算將在“程序執(zhí)行”期間執(zhí)行,ECC 信息將存儲在 64 字節(jié)的備用區(qū)域中。
一旦 OTP 頁面被正確編程,OTP-L 位可用于永久鎖定這些頁面,因此無法進行進一步的修改。 當仍處于“OTP 訪問模式”(OTP-E=1)時,用戶需要將配置/狀態(tài)寄存器 2 中的 OTP-L 位設置為“1”,并發(fā)出“程序執(zhí)行”命令(頁 面地址為“無所謂”)。 在設備完成 OTP 鎖定設置(BUSY=0)后,用戶可以將 OTP-E 設置為“0”,以返回到主存儲器陣列操作。
SR1-LOTP鎖定操作 保護/狀態(tài)寄存器-1 包含保護位,可設置為保護部分或整個內(nèi)存陣列不被編程/擦除,或?qū)⒃O備設置為軟件寫入保護(WP-E=0)或硬 件寫入保護(WP-E=1)。 一旦 BP[3:0],TB,WP-E 位設置正確,SRP1 和 SRP0 也應設置為“1”,以允許將 SR1-L 位設置為“1”,以永久鎖定狀態(tài)寄存器 1 (SR1)中的保護設置。 與上面的 OTP-L 設置過程類似,為了設置 SR1-L 鎖位,設備必須首先進入“OTP 訪問模式”(OTP-E=1),在“程序執(zhí)行”命令之前, SR1-L 位應設置為“1”(頁面地址為“無所謂”)。 一旦 SR1-L 設置為“1”(BUSY=0),用戶可以將 OTP-E 設置為“0”以返回到主存儲器陣列操作。
8.2.28參數(shù)頁數(shù)據(jù)定義
參數(shù)頁包含 3 個 256 字節(jié)參數(shù)數(shù)據(jù)的相同副本。 下表列出了所有關(guān)鍵數(shù)據(jù)字節(jié)的位置。 所有其他未指定的字節(jié)位置都默認有 00h 數(shù)據(jù)。
51hei.png (5.18 KB, 下載次數(shù): 69)
下載附件
2020-12-5 16:44 上傳
全部資料51hei下載地址:
W25M02_W25N01中文版 原版(70%中文).rar
(4.45 MB, 下載次數(shù): 60)
2020-12-5 14:44 上傳
點擊文件名下載附件
W25M02_W25N01中文版+原版(70%中文)芯片手冊 下載積分: 黑幣 -5
|