標(biāo)準(zhǔn) SPI 指令使用單向 DI(輸入)引腳將指令、地址或數(shù)據(jù)串行寫入串行時鐘(CLK)輸入引腳上升沿上的設(shè)備 標(biāo)準(zhǔn) SPI 還使用單向 DO(輸出)來從 CLK 下降沿上的設(shè)備讀取數(shù)據(jù)或狀態(tài)。
標(biāo)準(zhǔn) SPI 說明 W25M02GV 通過 SPI 兼容總線訪問,該總線由四個信號組成: 串行時鐘(CLK)、芯片選擇(/CS)、串行數(shù)據(jù)輸入(DI)和串行數(shù)據(jù)輸出(DO)。
DO 輸出引腳用于從 CLK 下降沿上的設(shè)備讀取數(shù)據(jù)或狀態(tài)。 支持 SPI 總線操作模式 0(0,0)和 3(1,1)。
模式 0 和模式 3 之間的主要區(qū)別在于當(dāng) SPI 總線主機(jī)處于待機(jī)狀態(tài)且數(shù)據(jù)未傳輸?shù)酱虚W存時,CLK 信號的正常狀態(tài)。 對于模式 0,CLK 信號在/CS 的下降和上升邊緣通常較低。
為每個堆疊的 W25N01GV 模具提供三個狀態(tài)寄存器: 保護(hù)寄存器(SR-1)、配置寄存器(SR-2)和狀態(tài)寄存器(SR-3)。 每個寄存器分別由讀狀態(tài)寄存器和寫狀態(tài)寄存器命令結(jié)合 1 字節(jié)寄存器地址訪問。
讀取狀態(tài)寄存器指令(05h/0Fh)可用于提供有關(guān)閃存陣列可用性的狀態(tài), 無論設(shè)備是寫啟用還是禁用、寫入保護(hù)狀態(tài)、讀取模式、保護(hù)寄存器/OTP 區(qū)域鎖定狀態(tài)、擦除/程序結(jié)果、ECC 使用/狀態(tài)。
與狀態(tài)寄存器的塊保護(hù)位 BP[3:0]和狀態(tài)寄存器 Protect SRP bits SRP[1:0]一起使用時,小到 256K 字節(jié)(2x128KB 塊)或最多整個 內(nèi)存陣列的一部分都可以受到硬件保護(hù)。
/WP 引腳作為四重 SPI 操作的數(shù)據(jù)輸入/輸出引腳,以及用于 SR-1 寫保護(hù)功能的有源低輸入引腳。 有關(guān)詳細(xì)信息,請參閱第 7.1.3 節(jié)。
當(dāng) WP-E=1 時,設(shè)備處于硬件保護(hù)模式,即/WP 成為整個設(shè)備寫保護(hù)的專用有源低輸入引腳。 如果/WP 連接到 GND,則所有“寫入/編程/擦除”功能都將被禁用。 整個設(shè)備(包括所有寄存器、內(nèi)存陣列、OTP 頁)將變?yōu)橹蛔x。
當(dāng)(/HOLD)低時,/CS 低時,DO 引腳將處于高阻抗?fàn)顟B(tài),DI 和 CLK 引腳上的信號將被忽略(無所謂)。 當(dāng)(/HOLD)被調(diào)高時,設(shè)備操作可以恢復(fù)。
當(dāng)發(fā)出 Quad SPI Read/Buffer Load 命令時,(/HOLD)pin 將成為 Quad 操作的數(shù)據(jù) I/O pin,并且在當(dāng)前 Quad 操作完成之前沒 有可用的 HOLD 函數(shù)。
塊保護(hù)位(BP3、BP2、BP1、BP0 和 TB)是狀態(tài)寄存器 1(S6、S5、S4、S3 和 S2)中的易失性讀/寫位,提供寫保護(hù)控制和狀態(tài)。 塊保護(hù)位可以使用寫入狀態(tài)寄存器指令進(jìn)行設(shè)置。內(nèi)存陣列的所有、無或一部分都可以受到程序和擦除指令的保護(hù)(請參閱狀態(tài)寄存器內(nèi)存保護(hù)表)。
塊保護(hù)位的默認(rèn)值在通電后為 1,以保護(hù)整個陣列。 需要清零這些保護(hù)位才能進(jìn)行擦除操作和編程操作(寫入數(shù)據(jù)操作) 如果配置寄存器(SR-2)中的 SR1-L 位設(shè)置為 1,則默認(rèn)值為 OTP 鎖定的值。
寫保護(hù)啟用位(WP-E)是狀態(tài)寄存器 1(S1)中的易失性讀/寫位。 WP-E 位與 SRP1 和 SRP0 一起控制寫保護(hù)的方法: 軟件保護(hù),硬件保護(hù)、電源鎖定或一次性可編程(OTP)保護(hù)、/WP 引腳功能和四重 SPI 操作啟用/禁用。
當(dāng) WP-E=0(默認(rèn)值)時,設(shè)備處于軟件保護(hù)模式,/WP&/HOLD 管腳被多路復(fù)用為 IO 管腳,并且四路程序/讀取功能一直處于啟 用狀態(tài)。
狀態(tài)寄存器保護(hù)位(SRP1 和 SRP0)是狀態(tài)寄存器(S0 和 S7)中的易失性讀/寫位。 SRP 位控制寫保護(hù)的方法:軟件保護(hù),硬件保護(hù),電源鎖定或一次性可編程(OTP)保護(hù)。
只能向 OTP 區(qū)域發(fā)出程序命令,將數(shù)據(jù)從“1”更改為“0”,并且數(shù)據(jù)不能通過 Erase 命令可逆(“0”到“1”)。 一旦正確的數(shù)據(jù)被編程和驗(yàn)證,系統(tǒng)開發(fā)人員可以將 OTP-L 位設(shè)置為1,這樣整個 OTP 區(qū)域?qū)⒈绘i定,以防止對數(shù)據(jù)的進(jìn)一步修改。
OTP-E 位必須設(shè)置為 1,以便使用標(biāo)準(zhǔn)程序/讀取命令訪問 OTP 區(qū)域以及讀取唯一的 ID/參數(shù)頁信息。 通電命令后的默認(rèn)值為 0 或復(fù)位。
內(nèi)部 ECC 計算在頁面編程期間完成,結(jié)果存儲在每個頁面的額外 64 字節(jié)區(qū)域中。 在數(shù)據(jù)讀取操作期間,ECC 引擎將根據(jù)先前存儲的 ECC 信息驗(yàn)證數(shù)據(jù)值,并在需要時進(jìn)行必要的更正。 驗(yàn)證和校正狀態(tài)由 ECC 狀態(tài)位指示。
每個堆疊的 W25N01GV 芯片為讀取操作提供兩種不同的模式,緩沖區(qū)讀取模式(BUF=1)和連續(xù)讀取模式(BUF=0)。 在任何讀取操作之前,需要一個頁面數(shù)據(jù)讀取命令來啟動從內(nèi)存數(shù)組中的指定頁到數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)傳輸。 默認(rèn)情況下,通電后,第 0 頁中的數(shù)據(jù)將自動加載到數(shù)據(jù)緩沖區(qū)中,設(shè)備已準(zhǔn)備好接受任何讀取命令。
緩沖區(qū)讀取模式(BUF=1)需要一個列地址來開始輸出數(shù)據(jù)緩沖區(qū)內(nèi)的現(xiàn)有數(shù)據(jù), 一旦到達(dá)數(shù)據(jù)緩沖區(qū)(字節(jié) 2111)的末尾,DO(IO1)引腳將變?yōu)?high-Z 狀態(tài)。 連續(xù)讀取模式(BUF=0)不需要起始列地址。 設(shè)備將始終從數(shù)據(jù)緩沖區(qū)的第一列(字節(jié) 0)開始輸出數(shù)據(jù), 一旦到達(dá)數(shù)據(jù)緩沖區(qū)(字節(jié) 2048)的末尾,數(shù)據(jù)輸出將繼續(xù)通過下一個內(nèi)存頁。 在連續(xù)讀取模式下,可以使用單個讀取命令讀取整個內(nèi)存陣列。
為了方便 NAND 閃存壞塊管理,每個堆疊的 W25N01GV 芯片都配備了內(nèi)部壞塊管理查找表(BBM LUT)。 一個好的內(nèi)存塊可以替換多達(dá) 20 個壞內(nèi)存塊。 塊的地址作為邏輯塊地址(LBA,壞塊)和物理塊地址(PBA,good 塊)存儲在內(nèi)部查找表中。
LUT-F 位指示 20 個存儲器塊鏈路是否已被充分利用。 LUT-F 的默認(rèn)值為 0,一旦全部 20 個鏈路都被使用, LUT-F 將變?yōu)?1,并且不可能建立更多的存儲塊鏈路。
在 NAND 閃存中使用 ECC 功能來糾正讀取操作中的有限內(nèi)存錯誤。 讀取操作完成后,應(yīng)檢查 ECC 狀態(tài)位(ECC-1、ECC-0),以驗(yàn)證數(shù)據(jù)的完整性。 如果 ECC-E=0,ECC 狀態(tài)位值不重要。 在通電循環(huán)或復(fù)位命令后,這些位將被清除為 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 無法修復(fù)這些錯誤。 |
在連續(xù)讀取模式下,可以使用附加命令來讀取出現(xiàn)錯誤的頁地址(PA)。 | ||
ECC-1=1 | ECC-0=1 | 整個數(shù)據(jù)輸出在多個頁面中包含超過 4 位的錯誤/頁。(僅適用于連續(xù)讀取操作(BUF=0)) |
程序/擦除失敗位用于指示內(nèi)部控制的程序/擦除操作是否成功執(zhí)行。 當(dāng)向鎖定或受保護(hù)的存儲器陣列或 OTP 區(qū)域發(fā)出程序或擦除命令時,這些位也將被分別設(shè)置。 在程序執(zhí)行或塊擦除指令以及設(shè)備復(fù)位指令開始時,這兩個位都將被清除。
寫啟用閂鎖(WEL)是狀態(tài)寄存器(S1)中的一個只讀位,在執(zhí)行寫啟用指令后被設(shè)置為 1。 當(dāng)設(shè)備被禁用寫入時,WEL 狀態(tài)位被清除為 0。 寫入禁用狀態(tài)在通電時或以下任何指令之后發(fā)生:
BUSY 是狀態(tài)寄存器(S0)中的只讀位, 當(dāng)設(shè)備通電或執(zhí)行頁面數(shù)據(jù)讀取、壞塊管理、程序執(zhí)行、塊擦除、OTP 區(qū)域的程序執(zhí)行、 OTP 鎖定或連續(xù)讀取指令之后,該位被設(shè)置為 1 狀態(tài)。 在此期間,設(shè)備將忽略除讀取狀態(tài)寄存器和讀取 JEDEC ID 指令以外的其他指令。 當(dāng)程序、擦除或?qū)懭霠顟B(tài)寄存器指令完成時,忙位將被清除
狀態(tài)寄存器 1/保護(hù)寄存器:Addr=Axh 狀態(tài)寄存器 2/配置寄存器:Addr=Bxh 狀態(tài)寄存器3/狀態(tài)寄存器:Addr=Cxh
11、對于連續(xù)讀取模式下的所有讀取操作,一旦/CS 信號被調(diào)高以終止讀取操作,設(shè)備仍將保持忙碌狀態(tài)~5us(busy=1),并且數(shù)據(jù) 緩沖區(qū)內(nèi)的所有數(shù)據(jù)都將丟失,無法可靠使用。
12、對于緩沖區(qū)讀取模式下的所有讀取操作,一旦/CS 信號變?yōu)楦咭越K止讀取操作,設(shè)備將準(zhǔn)備好接受新的指令,并且數(shù)據(jù)緩沖區(qū)內(nèi) 的所有數(shù)據(jù)將與上一頁數(shù)據(jù)讀取指令保持不變。
每個疊層模具都有工廠預(yù)先指定的“模具 ID”,順序?yàn)?0x00、0x01 等。 在任何給定的時間,W25M 包內(nèi)只能有一個活動的模具,用于與外部 SPI 控制器通信。 通電后,模具 0 始終為活動模具。
“并行操作”可以通過分配當(dāng)前活動的模具來執(zhí)行需要一定時間才能完成的擦除/程序操作來實(shí)現(xiàn)。 當(dāng)內(nèi)部程序/擦除操作正在進(jìn)行時,控制器可以發(fā)出“軟件模具選擇(C2h)”指令來選擇另一個要激活的模具。 根據(jù)系統(tǒng)要求,可以在新選擇的活動模具上執(zhí)行讀取、編程或擦除操作。 “邊讀邊程序/擦除”或“多芯片程序/擦除”可以以這種方式執(zhí)行,以提高系統(tǒng)程序/擦除吞吐量,并避免在某些應(yīng)用程序中持續(xù)的 程序/擦除掛起和恢復(fù)活動。
在設(shè)備加電和復(fù)位期間,建議不要發(fā)出“軟件模具選擇(C2h)”命令,以避免設(shè)備可能的未知狀態(tài)。 最小 tVSL(見第 56 頁)和最大 tRST(見第 60 頁)值可分別應(yīng)用于“軟件模具選擇(C2h)”命令。
如果發(fā)送到設(shè)備的模具 ID 錯誤,則兩個堆疊的 W25N01GV 模具都可能閑置。 在這種情況下,應(yīng)發(fā)出一個新的“軟件模具選擇(C2h)”命令, 后跟正確的模具 ID(0x00 或 0x01),以重新選擇激活的模具。
由于封裝小,引腳數(shù)量有限,W25M02GV 提供軟件復(fù)位指令,而不是專用復(fù)位引腳。 一旦復(fù)位指令被接受,任何正在進(jìn)行的內(nèi)部操作都將被終止,設(shè)備將返回其默認(rèn)上電狀態(tài),并丟失所有當(dāng)前易失性設(shè)置,例如易失性 狀態(tài)寄存器位。
一旦設(shè)備接受復(fù)位命令,設(shè)備將需要大約 tRST 來復(fù)位,根據(jù)設(shè)備正在執(zhí)行的當(dāng)前操作,tRST 可以是 5us~500us。 在此期間,不接受任何命令。
此外,“軟件模具選擇(C2h)”不應(yīng)在最大 tRST(500us)時間段內(nèi)發(fā)出,以避免由于模具的重置狀態(tài)而導(dǎo)致的模具選擇混亂。 當(dāng)設(shè)備接受復(fù)位命令序列時,如果正在進(jìn)行內(nèi)部擦除或程序操作,則可能會發(fā)生數(shù)據(jù)損壞。 建議在發(fā)出復(fù)位命令之前檢查狀態(tài)寄存器中的忙位。
Read JEDEC ID 指令與 2003 年采用的 SPI 兼容串行存儲器 JEDEC 標(biāo)準(zhǔn)兼容。 該指令通過驅(qū)動/CS 引腳低并移動指令代碼“9Fh”和 8 個假時鐘來啟動。
該指令通過驅(qū)動/CS low,并將指令代碼“0Fh 或 05h”移到 CLK 上升沿上的 DI 引腳中,然后是一個 8 位狀態(tài)寄存器地址。 然后狀態(tài)寄存器位在 CLK 下降沿的 DO 引腳上移出,首先是最有效位(MSB),如圖 7 所示。
讀取狀態(tài)寄存器指令可在任何時候使用,即使在程序或擦除周期正在進(jìn)行時也是如此。 這允許檢查忙狀態(tài)位以確定周期何時完成以及設(shè)備是否可以接受另一條指令。 狀態(tài)寄存器可以連續(xù)讀取。
寫入狀態(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)寄存器位,輸入指令的方法是:驅(qū)動/CS low,發(fā)送指令代碼“1Fh 或 01h”,然后發(fā)送 8 位狀態(tài)寄存器地址,然后寫入狀 態(tài)寄存器數(shù)據(jù)字節(jié),如圖 8 所示。 狀態(tài)寄存器說明見第 7.1-3 節(jié)。
通過驅(qū)動/CS low,將指令代碼“04h”移到 DI pin,然后驅(qū)動/CS high,輸入寫禁用指令。 請注意,WEL 位在通電后以及頁面程序、四頁程序、塊擦除、重置和壞塊管理指令完成后自動重置。
由于 NAND 內(nèi)存密度大,且受技術(shù)限制,在出廠測試中發(fā)現(xiàn)一定數(shù)量的“壞塊”時,NAND 內(nèi)存設(shè)備允許運(yùn)往最終客戶。 裝運(yùn)時,多達(dá) 2%的內(nèi)存塊可標(biāo)記為“壞塊”,這是每個堆疊的 W25N01GV 模具最多 20 塊。 為了識別這些壞塊,建議掃描整個內(nèi)存陣列以查找出廠時設(shè)置的壞塊標(biāo)記。
“壞塊標(biāo)記”是存儲在每個壞塊的第 0 頁字節(jié) 0 處的非 FFh 數(shù)據(jù)字節(jié)。 另一個標(biāo)記也存儲在 64 字節(jié)備用區(qū)域的第一個字節(jié)中。
W25M02GV 提供了一種方便的方法來管理 NAND 閃存中在大量使用后通常發(fā)現(xiàn)的壞塊。 “壞塊管理”命令是通過將指令代碼“A1h”移到 DI 管腳,然后是 16 位“邏輯塊地址”和16 位“物理塊地址”,如圖 11 所示。 在設(shè)備接受壞塊管理指令之前,必須執(zhí)行寫啟用指令(狀態(tài)寄存器位 WEL=1)。 邏輯塊地址是“壞”塊的地址,它將被物理塊地址指示的“好”塊替換。
成功執(zhí)行壞塊管理命令后,指定的 LBA-PBA 鏈接將添加到內(nèi)部查找表(LUT)。 在非易失性 LUT 中可以建立多達(dá) 20 個鏈路。
如果所有 20 條鏈路都已寫入,狀態(tài)寄存器中的 LUT-F 位將變?yōu)?1,并且不能再建立 LBA-PBA 鏈路。 因此,在發(fā)出壞塊管理命令之前,可以檢查 LUT-F 位值,或者可以發(fā)出“閱讀BBM 查找表”命令來確認(rèn) LUT 中是否仍然有備用鏈路
為了保證前 1000 個塊上的連續(xù)讀取操作,制造商可能使用了一些 BBM LUT 入場權(quán)。 建議用戶在第一次擦除/程序操作之前掃描所有塊并保存所有制造商壞塊的表。 禁止在多個 PBA 中注冊同一地址。它可能導(dǎo)致意外行為。
所有塊地址鏈路將從 LUT 中的第一個鏈路(LBA0 和 PBA0)開始按順序輸出。 如果有未使用的可用鏈接,輸出將包含所有“00h”數(shù)據(jù)。
當(dāng)狀態(tài)/配置寄存器中的 ECC-E 位設(shè)置為 1(也是加電默認(rèn)值)時,所有程序和讀取操作都啟用內(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ū)域。
對于“連續(xù)讀取模式(BUF=0)”操作,可以通過發(fā)出單個讀取命令連續(xù)讀取多頁主陣列數(shù)據(jù)。 在完成讀取操作后,應(yīng)檢查 ECC 狀態(tài)位,以驗(yàn)證讀取的數(shù)據(jù)中是否存在 ECC 校正或不可糾正的錯誤。
如果 ECC-1 和 ECC-0 等于(1,0)或(1,1),則以前讀取的數(shù)據(jù)包含一個或多個包含 ECC 不可糾正錯誤的頁。 可以通過發(fā)出“上次 ECC 失敗頁地址”命令獲得失敗頁面地址(如果是多個頁面,則為最后一個頁面地址),如圖 13 所示。 包含不可糾正 ECC 錯誤的 16 位頁地址將顯示在指令代碼“A9h”之后的 DO 引腳上,DI 引腳上的 8 位虛擬時鐘之后。
在設(shè)備接受塊擦除指令(狀態(tài)寄存器位 WEL 必須等于 1)之前,必須執(zhí)行寫啟用指令。 該指令通過驅(qū)動/CS 引腳低,并移動指令代碼“D8h”,然后是 8 位虛擬時鐘和 16 位頁地址來啟動。 塊擦除指令序列如圖 14 所示。
在鎖存最后一個字節(jié)的第八位之后,/CS 引腳必須被驅(qū)動到高位。 如果不這樣做,將不執(zhí)行塊擦除指令。
在/CS 被驅(qū)動為高電平后,自定時塊擦除指令將在 tBE 的持續(xù)時間內(nèi)開始(參見交流特性)。 當(dāng)塊擦除周期正在進(jìn)行時,仍可以訪問讀取狀態(tài)寄存器指令以檢查忙位的狀態(tài)。 在塊擦除周期中,忙位為 1,當(dāng)周期結(jié)束且設(shè)備準(zhǔn)備再次接受其他指令時,忙位變?yōu)?0。 塊擦除周期完成后,狀態(tài)寄存器中的寫入啟用閂鎖(WEL)位被清除為 0。 如果尋址塊受塊保護(hù)(TB、BP2、BP1 和 BP0)位保護(hù),則不會執(zhí)行塊擦除指令。
這里雖然用的是頁地址,擦除擦除時還是按塊擦除,即 64 頁的數(shù)據(jù)都擦除。 這使得數(shù)據(jù)不好進(jìn)行修改操作,這是這個 IC 的缺點(diǎn)。 另一個缺點(diǎn)就是存在壞塊,所以需要壞塊管理。
程序操作允許在先前擦除的(FFh)內(nèi)存位置對 1 字節(jié)到 2112 字節(jié)(一頁)的數(shù)據(jù)進(jìn)行編程。 程序操作包括兩個步驟:
在設(shè)備接受加載程序數(shù)據(jù)指令(狀態(tài)寄存器位 WEL=1)之前,必須執(zhí)行寫啟用指令。 “加載程序數(shù)據(jù)”或“隨機(jī)加載程序數(shù)據(jù)”指令是通過驅(qū)動/CS 引腳低,然后將指令代碼“02h”或“84h”后接 16 位列地址(只有 CA[11:0]有效)和至少一個字節(jié)的數(shù)據(jù)轉(zhuǎn)移到 DI 管腳來啟動。
當(dāng)數(shù)據(jù)被發(fā)送到設(shè)備時,/CS 引腳在整個指令長度內(nèi)必須保持在低位。 如果發(fā)送到設(shè)備的數(shù)據(jù)字節(jié)數(shù)超過數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),設(shè)備將忽略多余的數(shù)據(jù)。 加載程序數(shù)據(jù)指令序列如圖 15 所示。
“加載程序數(shù)據(jù)”和“隨機(jī)加載程序數(shù)據(jù)”指令共享相同的命令序列。 不同的是,“加載程序數(shù)據(jù)”指令會將數(shù)據(jù)緩沖區(qū)中未使用的數(shù)據(jù)字節(jié)重置為 FFh 值,而“隨機(jī)加載程序數(shù)據(jù)”指令只更新命令輸入 序列指定的數(shù)據(jù)字節(jié),其余數(shù)據(jù)緩沖區(qū)將保持不變。
在程序數(shù)據(jù)加載到 2112 字節(jié)數(shù)據(jù)緩沖區(qū)(或在啟用 ECC 時為 2048 字節(jié))后,程序執(zhí)行指令將數(shù)據(jù)緩沖區(qū)內(nèi)容編程到指令中指定的 物理內(nèi)存頁中。
在/CS 被驅(qū)動到高電平以完成指令周期后,自定時程序執(zhí)行指令將在 tpp 的持續(xù)時間內(nèi)開始(參見 AC 特性)。 當(dāng)程序執(zhí)行周期正在進(jìn)行時,讀取狀態(tài)寄存器指令仍可用于檢查忙位的狀態(tài)。
在程序執(zhí)行周期中,忙位為 1,當(dāng)周期結(jié)束且設(shè)備準(zhǔn)備再次接受其他指令時,忙位變?yōu)?0。 程序執(zhí)行周期結(jié)束后,狀態(tài)寄存器中的寫入啟用閂鎖(WEL)位被清除為 0。 如果尋址頁受塊保護(hù)(TB、BP2、BP1 和 BP0)位保護(hù),則不會執(zhí)行程序執(zhí)行指令。 每一頁只允許 4 個部分頁面程序時間。
塊內(nèi)的頁必須按順序從低階頁地址編程到塊內(nèi)的高階頁地址。 禁止無序編程頁面。
在/CS 被驅(qū)動到高電平以完成指令周期后,自定時讀頁數(shù)據(jù)指令將在 tRD 的持續(xù)時間內(nèi)開始(見交流特性)。 當(dāng)讀取頁數(shù)據(jù)循環(huán)正在進(jìn)行時,讀取狀態(tài)寄存器指令仍可用于檢查忙位的狀態(tài)。 在讀頁數(shù)據(jù)循環(huán)期間,忙位為 1,當(dāng)周期結(jié)束且設(shè)備準(zhǔn)備再次接受其他指令時,忙位變?yōu)?0。
在 2112 字節(jié)的頁數(shù)據(jù)加載到數(shù)據(jù)緩沖區(qū)后,可以發(fā)出多個讀取指令來訪問數(shù)據(jù)緩沖區(qū)并讀出數(shù)據(jù)。 根據(jù)狀態(tài)寄存器中的 BUF 位設(shè)置,可以使用“緩沖區(qū)讀取模式”或“連續(xù)讀取模式”來完成讀取操作。
讀取數(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ù)流。
讀取數(shù)據(jù)指令序列如圖 19a 和 19b 所示。當(dāng) BUF=1 時,設(shè)備處于緩沖區(qū)讀取模式。 數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。
當(dāng) BUF=0 時,設(shè)備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當(dāng)?shù)竭_(dá)數(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ù)流。
快速讀取指令序列如圖 20a 和 20b 所示。 當(dāng) BUF=1 時,設(shè)備處于緩沖區(qū)讀取模式。
數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。
當(dāng) BUF=0 時,設(shè)備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當(dāng)?shù)竭_(dá)數(shù)據(jù)緩沖區(qū)的末尾時,下一個內(nèi)存頁的第一個字節(jié)的數(shù)據(jù)將跟隨并繼續(xù)貫穿整個內(nèi)存數(shù)組。 這允許使用單個讀取指令讀取整個內(nèi)存陣列,并且還兼容 Winbond 的 SpiFlash NOR flash memory 命令序列。
在接收到地址后,地址數(shù)據(jù)緩沖區(qū)位置的數(shù)據(jù)字節(jié)將在 CLK 下降沿的 DO 引腳上移出,最有效位(MSB)優(yōu)先。 在數(shù)據(jù)的每個字節(jié)被移出后,地址會自動遞增到下一個更高的地址,以允許連續(xù)的數(shù)據(jù)流。
快速讀取指令序列如圖 21a 和 21b 所示。當(dāng) BUF=1 時,設(shè)備處于緩沖區(qū)讀取模式。 數(shù)據(jù)輸出序列將從 16 位列地址指定的數(shù)據(jù)緩沖區(qū)位置開始,一直到數(shù)據(jù)緩沖區(qū)的末尾。 一旦數(shù)據(jù)的最后一個字節(jié)被輸出,輸出引腳將變成 Hi-Z 狀態(tài)。
當(dāng) BUF=0 時,設(shè)備處于連續(xù)讀取模式,數(shù)據(jù)輸出序列將從數(shù)據(jù)緩沖區(qū)的第一個字節(jié)開始,并遞增到下一個更高的地址。 當(dāng)?shù)竭_(dá)數(shù)據(jù)緩沖區(qū)的末尾時,下一個內(nèi)存頁的第一個字節(jié)的數(shù)據(jù)將跟隨并繼續(xù)貫穿整個內(nèi)存數(shù)組。 這允許使用單個讀取指令讀取整個內(nèi)存陣列,并且還兼容 Winbond 的 SpiFlash NOR flash memory 命令序列。
然后,可以在唯一 ID 和參數(shù)頁上執(zhí)行讀取操作,如果 OTP 頁尚未鎖定,則可以在 OTP 頁上執(zhí)行讀取和程序操作。 要返回到主存儲器陣列操作,OTP-E 位需要設(shè)置為 0。
讀取操作必須發(fā)出“頁面數(shù)據(jù)讀取”命令,后跟上表中所示的特定頁面地址,才能將頁面數(shù)據(jù)加載到主數(shù)據(jù)緩沖區(qū)中。 在設(shè)備完成數(shù)據(jù)加載(BUSY=0)之后,所有的 Read 命令都可以用來從任何指定的列地址開始讀取數(shù)據(jù)緩沖區(qū)。 請注意,無論之前的 BUF 位設(shè)置如何,所有讀命令現(xiàn)在都必須遵循“緩沖區(qū)讀取模式”命令結(jié)構(gòu)(CA[15:0],虛擬時鐘的數(shù)量)。 還可以為 OTP 頁讀取操作啟用 ECC,以確保數(shù)據(jù)的完整性。
OTP 頁提供額外的空間(2K 字節(jié) x10)來存儲重要的數(shù)據(jù)或安全信息, 這些數(shù)據(jù)或安全信息可以被鎖定以防止在字段中進(jìn)行進(jìn)一步修改。
這些 OTP 頁面處于出廠設(shè)置的擦除狀態(tài),并且只能編程(將數(shù)據(jù)從“1”更改為“0”),直到被配置/狀態(tài)寄存器 2 中的 OTP-L 位鎖定。 必須首先將 OTP-E 設(shè)置為“1”以允許訪問這些OTP 頁,然后必須使用任何“程序數(shù)據(jù)加載”命令將程序數(shù)據(jù)加載到主數(shù)據(jù)緩沖區(qū)。 “程序執(zhí)行”命令后跟特定的 OTP 頁地址,用于啟動從數(shù)據(jù)緩沖區(qū)到 OTP 頁的數(shù)據(jù)傳輸。
當(dāng)仍處于“OTP 訪問模式”(OTP-E=1)時,用戶需要將配置/狀態(tài)寄存器 2 中的 OTP-L 位設(shè)置為“1”,并發(fā)出“程序執(zhí)行”命令(頁 面地址為“無所謂”)。
保護(hù)/狀態(tài)寄存器-1 包含保護(hù)位,可設(shè)置為保護(hù)部分或整個內(nèi)存陣列不被編程/擦除,或?qū)⒃O(shè)備設(shè)置為軟件寫入保護(hù)(WP-E=0)或硬 件寫入保護(hù)(WP-E=1)。
參數(shù)頁包含 3 個 256 字節(jié)參數(shù)數(shù)據(jù)的相同副本。 下表列出了所有關(guān)鍵數(shù)據(jù)字節(jié)的位置。 所有其他未指定的字節(jié)位置都默認(rèn)有 00h 數(shù)據(jù)。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |