M25P16中文版
轉載:https://blog.csdn.net/weiweiliulu/article/details/23666717
1、M25P16概述
????M25P16是一款帶有先進寫保護機制和高速SPI總線訪問的2M字節串行Flash存儲器,該存儲器主要特點:2M字節的存儲空間,分32個扇區,每個扇區256頁,每頁256字節;寫入1頁數據所需時間為1.4 ms(典型值);能單塊擦除和整塊擦除:2.7~3.6 V單電源供電電壓;SPI總線和50 MHz數據傳輸時鐘頻率;每扇區擦寫次數保證10萬次、數據保存期限至少20年。該款器件特別適用于一體化打印機、PC主板、機頂盒、CD唱機和DVD視盤機、數字電視、數碼相機、圖形卡和平面顯示器等各種應用的代碼和數據存儲需求。
????M25P16采用SO16封裝或VDFPN8封裝,其引腳排列圖如圖1與圖2所示。其部分主要引腳功能描述如下:
????引腳Q:輸出串行數據。
????引腳D:輸入串行數據。
????引腳C:串行時鐘信號輸入。
????引腳S:片選,該引腳低電平有效。若為高電平,串行數據輸出(Q)為高阻抗狀態。
????引腳HOLD:控制端,暫停串行通信。在HOLD狀態下,串行數據輸出(Q)為高阻抗,時鐘輸入(C)和數據輸入(D)無效。
????引腳W:寫保護端,能夠限制寫指令和擦除指令的操作區域,低電平有效。
??????????????
??????????????????????圖1????????????????????????????????????????????????圖2
2、單片機SPI接口與M25P16的連接圖如圖3
??????????
?????????????????????????????????????????????圖3
3、M25P16工作原理
????M25P16寫入一個字節數據需寫使能(WREN)和寫入(PP)指令。采用這兩個指令實現單頁編程。對于某個單字節空間的操作,在使用PP指令之前需要對其擦除(FFh)。擦除操作可通過單塊擦除指令(SE)和整塊擦除(BE)來完成。擦除之前需要先執行WREN指令。當片選S信號為低電平,則選中該器件,此時處于有效電源模式;當片選S信號為高電平,器件未被選中,但能在所有內部指令周期(寫入,擦除,寫狀態寄存器)完成前保持有效電源模式。等指令周期完成則進入備用電源模式。通過特殊指令來讀取或設置狀態寄存器內的狀態位和控制位,實現相應操作。
????在該器件所有輸入輸出的指令、地址和數據中,數據置于首位。當片選信號被拉為低電平,在時鐘信號的第一個下降沿開始采樣數據輸入信號。每個指令序列都是以單字節指令代碼開頭,緊接著就是地址或數據。在讀取數據、快速讀取數據、讀狀態寄存器、讀標識和讀電子簽名時,數據輸出序列緊隨輸入指令序列。當數據輸出序列的所有數據位都輸出后,片選信號置為高電平。而在頁面數據寫入、單塊擦除、整塊擦除、寫狀態寄存器、寫使能和寫無效時,片選信號必須在一個字節內置為高電平。否則,指令不執行。也就是說,拉低片選信號后,時鐘信號必須是8的整數倍。在寫狀態寄存器周期、數據寫入周期或者擦除周期,則忽略任何對存儲空間的訪問,并不會對這些周期產生影響。表l為M25P16的指令表。
????
?????????????????????表1
????(1)寫使能(WREN) 寫使能指令用于設置內部寫使能鎖存器位。在頁面數據寫入、單塊擦除、整塊擦除和寫狀態寄存器之前,必須先執行寫使能。當片選信號拉低后,就開始執行寫使能指令,接著傳輸指令。指令發送完后,片選信號置為高電平。寫使能時序如圖4所示。
????
??????????????????????????????????圖4
????(2)讀標識指令(RDID) 首先需將片選信號拉為低電平,接著寫入讀標識指令(RDID),然后通過數據輸入引腳讀入3字節標識碼。片選信號置為高電平終止數據讀取指令。時序如圖5所示:
????
????????????????????????????????????????????????圖5
????(3)讀狀態寄存器(RDSR)幾乎在任何時刻都能讀取狀態寄存器的值,甚至器件處于寫入數據、擦除或寫狀態寄存器周期時。此時建議在傳輸新指令之前應先檢查WIP位。狀態寄存器的格式如表2所示。
????
????????????????????????????????????表2
表2中,WIP位能夠確定存儲空間是否處于寫狀態寄存器、寫入或擦除周期。WIP為“1”時則處于以上幾個周期。WEL位能夠確定內部寫使能鎖存器的狀態。寫入“1”時置位。寫入“0”時,寫狀態寄存器、數據寫入和擦除指令都無效。BP2,BPl,BPO位確定軟件寫保護的區域大小,并且是非易失性的。SRWD位用于在寫無效位和寫保護引腳工作時可使該器件處于硬件保護模式。此模式下,3個非易失性位變為只讀位,并且寫狀態寄存器指令不會執行。
????(4)讀取數據(READ) 首先需將片選信號拉為低電平,接著寫讀取數據指令和3個字節的地址(A23~A0)。然后通過數據輸出引腳(O)輸出該地址存儲內容。地址的首字節可以是任意值。在輸出每個字節數據后,地址自動加1,跳至下一地址。因此,整個存儲空間的數據讀取可通過一個簡單的數據讀取指令(READ)完成。當達到最高地址時,地址計數器自動清零。片選信號置為高電平可終止數據讀取指令(READ)。數據輸出的任何時候,片選信號都置為高電平。該器件處于擦除或數據寫入周期時,數據讀取指令無效并且對當前周期無任何影響。其頁面數據寫入指令時序如圖6所示。
????
?????????????????????????????????????????????圖6
????(5)頁面數據寫入(PP)執行PP指令之前,必須先執行寫使能指令。寫使能指令解碼后,器件設置為寫使能鎖存器。片選信號必須拉低,接著是PP指令代碼、3字節的地址和數據輸入(至少一個字節)。如果地址的低8位(A7~AO)不全是O而寫入的數據字節超出當前頁的地址,超出部分則從下一頁首地址開始寫入。在整個數據寫入時序中,片選信號必須拉低。如果寫入的數據字節數大于256,則先前所鎖存的數據被丟棄。將數據正確寫入之后便可核對狀態寄存器WIP位的值。若為1,則表明處于自定時數據寫入周期;若為0,則此周期完成。如果某一頁受到塊保護(BP2,BPl,BP0位),則不能執行對此頁的數據寫入操作。按照上述指令操作,能夠獲得驅動程序的流程圖。圖7為數據寫入(PP)操作的程序流程。
????
?????????????????????????????????????????????圖7
????(6)扇區擦除指令(SE) 首先發送寫使能指令(WREN),接著發送扇區擦除指令(SE),然后寫入需擦除扇區的3字節地址。時序如圖8
????
?????????????????????????????????圖8
????(7)整塊擦除指令(BE) 首先發送寫使能指令(WREN),接著發送整塊擦除指令(BE),便可將芯片所有數據擦除,所有的字節數據都變為FF。時序
如圖9
轉載于:https://www.cnblogs.com/wandashuai/p/10741058.html
總結
- 上一篇: 缓存cache和缓冲区buffer
- 下一篇: js里的null 与undefined