M25P16概述:
M25P16是一款帶有先進寫保護機制和高速SPI總線訪問的串行Flash存儲器。M25P16特點如下:
- 存儲結構:16M Bit(2M Byte)的存儲空間,一共32個扇區(qū)(sector),每個扇區(qū)256頁,每頁256字節(jié),每個字節(jié)的的存儲地址由扇區(qū)地址(8bit)+頁地址(8bit)+字節(jié)地址(8bit)構成。
- SPI總線兼容的串行接口。
- 可以單扇區(qū)擦除,也可以整塊擦除。
- 可以同時編程1~256字節(jié),頁編程速率高達256Byte/1.4ms,即寫入一頁數據需要1.4ms。
- 數據保存至少20年。
- 只支持SPI工作模式0和3。
M25P16引腳圖如下:
引腳描述:
C: 時鐘信號,相當于SPI總線的SCLK。
D: 數據輸入,相當于SPI總線的主機輸出、從機輸入MOSI。
Q: 數據輸出,相當于SPI總線的主機輸入、從機輸出MISO。
S#: 片選信號,相當于SPI總線的片選信號CS_N。
HOLD: 在選中期間期間輸出高阻態(tài),實際上比較像SDRAM的“掩碼”。
W#: 寫保護,低電平有效,在寫保護有效時無法寫入數據。
VCC: 電源。
VSS : 電源地。
M25P16工作原理和保護機制
1.工作原理:
- M25P16寫入一個字節(jié)數據需寫使能(WREN)和寫入(PP)指令,采用這兩個指令實現單頁編程。對于某個單字節(jié)空間的操作,在使用PP指令之前需要對其擦除(FFh)。擦除操作可通過單塊擦除指令(SE)和整塊擦除(BE)來完成。擦除之前需要先執(zhí)行WREN指令。
- 當片選信號被拉為低電平,在時鐘信號的第一個下降沿開始采樣數據輸入信號。每個指序列都是以單字節(jié)指令代碼開頭,緊接著就是地址或數據。在讀取數據、快速讀取數據、讀狀態(tài)寄存器、讀標識和讀電子簽名時,數據輸出序列緊隨輸入指令序列。當數據輸出序列的所有數據位都輸出后,片選信號置為高電平。而在頁數據寫入、單塊擦除、整塊擦除、寫狀態(tài)寄存器、寫使能和寫無效時,片選信號必須在一個字節(jié)內置為高電平。否則,指令不執(zhí)行。也就是說,拉低片選信號后,時鐘信號必須是8的整數倍。在寫狀態(tài)寄存器周期、數據寫入周期或者擦除周期,則忽略任何對存儲空間的訪問,并不會對這些周期產生影響。
2.保護機制
使用非易失性存儲設備的環(huán)境可能噪聲很大。沒有SPI設備能在噪聲過大的情況下正常工作。為了解決這個問題,M25P16擁有以下數據保護機制:
a.開機復位和內部定時器(tPUW)可以在電源超出操作規(guī)范時提供保護,防止意外變化;
b.編程、擦除和寫狀態(tài)寄存器指令在被接受執(zhí)行之前,檢查它們是否是由8的倍數的時鐘脈沖組成;
c.所有修改數據的指令之前都必須有一個寫使能指令來設置寫使能鎖存器位。這個比特通過以下事件返回到它的重置狀態(tài)。
SPI模式支持:只支持模式00和模式11
CPOL(時鐘極性)和CPHA(時鐘相位)判斷:
- 時鐘的極性(CPOL)用來決定在總線空閑時,同步時鐘(SCK)信號線上的電位是高電平還是低電平。當時鐘極性為0時(CPOL=0),SCK信號線在空閑時為低電平;當時鐘極性為1時(CPOL=1),SCK信號線在空閑時為高電平;
- 當時鐘相位為1時(CPHA=1),在SCLK的偶數沿進行數據采樣,當時鐘相位為0時(CPHA=0),在SCLK的奇數沿進行數據采樣;采樣的上升沿和下降沿根據CPOL決定。
操作指令
M25P16時鐘頻率
- 需要注意的是M25P16普通讀支持的頻率如下,此時我們進行四分頻,選擇12.5M這個頻率:
- 此外,各指令在發(fā)出后,仍需要一定的時間才能真正執(zhí)行完,各個指令所需的時間如下:
- 需要注意的是,在兩個指令之間需要間隔一定的時間(比如發(fā)送全擦除指令前需要發(fā)送寫使能指令,在這兩個指令之間就需要間隔一定的時間),具體時間如下:
M25P16指令操作
讀ID--Read Identification (RDID):1字節(jié)的指令、3字節(jié)的ID數據
Read Identification (RDID)指令允許讀取8位的制造商標識,操作指令為9Fh,然后讀取兩個字節(jié)的設備標識。設備標識由設備制造商指定,第一個字節(jié)表示內存類型(20h),第二個字節(jié)表示內存類型(20h),第三個字節(jié)表示設備的內存容量(15h)。
讀數據--Read Data Bytes (READ):1字節(jié)指令+3字節(jié)地址+1字節(jié)數據
讀數據操作,操作指令為03h,要執(zhí)行數據讀指令,首先拉低片選信號選中 Flash 芯片,隨后寫入數據讀(READ)指令,緊跟指令寫入 3 字節(jié)的數據讀取首地址(A23-A0),指令和地址會在串行時鐘上升沿被芯片鎖存。隨后存儲地址對應存儲單元中的數據在串行時鐘下降沿通過串行數據總線輸出。 數據讀取首地址可以為芯片中的任何一個有效地址,使用數據讀(READ)指令可以對芯 片內數據連續(xù)讀取,當首地址數據讀取完成,會自動對首地址的下一個地址進行數據讀取。若最高位地址內數據讀取完成,會自動跳轉到芯片首地址繼續(xù)進行數據讀取,只有再次拉高片選信號,才能停止數據讀操作,否者會對芯片執(zhí)行無線循環(huán)讀操作。具體時序如下:
讀取狀態(tài)寄存器--Read Status Register (RDSR):1字節(jié)指令+2字節(jié)數據
讀取狀態(tài)寄存器(RDSR)指令允許讀取狀態(tài)寄存器,操作指令為05h,狀態(tài)寄存器可以在任何時候被讀取,即使是在頁編程、擦除或寫狀態(tài)寄存器周期正在進行。當其中一個循環(huán)正在進行時,建議檢查WIP位,然后再向設備發(fā)送新指令。
WIP:
WIP (Write In Progress)位表示內存是否處于寫狀態(tài)寄存器、頁編程或擦除周期。當設置為1時,表示設備處于工作狀態(tài),當設置為0時,表示設備處于空閑狀態(tài)。
WEL:
WEL (Write Enable Latch)位表示內部Write Enable Latch的狀態(tài)。當設置為1時,內部寫使能被設置,當設置為0時,表示沒有接收寫狀態(tài)寄存器,頁編程或擦除指令。
BP2、BP1、BP0: 塊保護(BP2,BP1, BP0)位是非易失性的。它們定義了被軟件保護的區(qū)域的大小
編程和擦除指令。這些位是用寫狀態(tài)寄存器(WRSR)指令寫的。
寫使能時序--Write Enable (WREN):1字節(jié)指令
寫使能(WREN) 指令用于設置內部寫使能鎖存器位。在頁編程、扇區(qū)擦除、整塊擦除和寫狀態(tài)寄存器之前,必須先執(zhí)行寫使能。當片選信號拉低后,就開始執(zhí)行寫使能指令,接著傳輸指令。指令發(fā)送完后,片選信號置為高電平。
扇區(qū)擦除--Sector Erase (SE):1字節(jié)指令+3字節(jié)地址
扇區(qū)擦除(Sector Erase)操作,簡稱 SE,操作指令為 D8h,扇區(qū)擦除指令是將 Flash 芯片中的被選中扇區(qū)的所有存儲單元設置為全 1,在 Flash 芯片寫入扇區(qū)擦出指令之前,需要先寫入寫使能 (WREN)指令;發(fā)送完擦除指令后就進入擦除周期(持續(xù)時間tSE或tBE)。發(fā)送擦除指令之前必須先發(fā)送寫使能指令。時序圖如下:
頁寫--Page Program (PP):1字節(jié)指令+3字節(jié)地址+1字節(jié)數據
頁寫(Page Program)操作,簡稱 PP,操作指令為02h。要發(fā)送一個數據字節(jié),需要兩個指令:寫使能指令(WREN)和頁編程指令(PP),然后是內部頁編程周期(持續(xù)時間為tPP)。Page Program (PP)指令允許一次編程最多256字節(jié)(將位從1改為0),前提是它們位于同一內存頁上的連續(xù)地址中。
Flash 芯片中一頁最多可以存儲 256 字節(jié)數據,這也表示頁寫操作一次最多向 Flash 芯片寫入 256 字節(jié)數據若寫入超出256字節(jié),則超出字節(jié)會覆蓋本頁原有的數據。
頁寫時序如下:文章來源:http://www.zghlxwxcb.cn/news/detail-758012.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-758012.html
到了這里,關于【FPGA】SPI-FLASH-M25P16手冊解讀的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!