Flash M25P64驅(qū)動(dòng)開(kāi)發(fā)與應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著信息產(chǎn)業(yè)的飛速發(fā)展,以微處理器為核心的嵌入式系統(tǒng)在智能化儀表、實(shí)時(shí)控制等應(yīng)用中占有重要地位。而在許多實(shí)際應(yīng)用中經(jīng)常要求支持大容量數(shù)據(jù)存儲(chǔ)功能。意法半導(dǎo)體公司推出的一款8 M字節(jié)串行Flash存儲(chǔ)器M25P64則為大容量數(shù)據(jù)存儲(chǔ)提供了一種解決方案。在此詳細(xì)介紹該M25P64型Flash存儲(chǔ)器的主要特點(diǎn),工作原理,驅(qū)動(dòng)程序開(kāi)發(fā)以及典型應(yīng)用實(shí)例。
2 M25P64概述
M25P64是一款帶有先進(jìn)寫(xiě)保護(hù)機(jī)制和高速SPI總線訪問(wèn)的8 M字節(jié)串行Flash存儲(chǔ)器,該存儲(chǔ)器主要特點(diǎn):8 M字節(jié)的存儲(chǔ)空間;寫(xiě)入1頁(yè)數(shù)據(jù)所需時(shí)間為1.4 ms(典型值);能單塊擦除和整塊擦除:2.7~3.6 V單電源供電電壓;SPI總線和50 MHz數(shù)據(jù)傳輸時(shí)鐘頻率;每扇區(qū)擦寫(xiě)次數(shù)保證10萬(wàn)次、數(shù)據(jù)保存期限至少20年。該款器件特別適用于一體化打印機(jī)、PC主板、機(jī)頂盒、CD唱機(jī)和DVD視盤(pán)機(jī)、數(shù)字電視、數(shù)碼相機(jī)、圖形卡和平面顯示器等各種應(yīng)用的代碼和數(shù)據(jù)存儲(chǔ)需求。
M25P64采用SOl6封裝,其引腳排列圖如圖1所示。其部分主要引腳功能描述如下:引腳Q:輸出串行數(shù)據(jù)。引腳D:輸入串行數(shù)據(jù)。引腳C:串行時(shí)鐘信號(hào)輸入。引腳S:片選,該引腳低電平有效。若為高電平,串行數(shù)據(jù)輸出(Q)為高阻抗?fàn)顟B(tài)。引腳HOLD:控制端,暫停串行通信。在HOLD狀態(tài)下,串行數(shù)據(jù)輸出(Q)為高阻抗,時(shí)鐘輸入(C)和數(shù)據(jù)輸入(D)無(wú)效。引腳W:寫(xiě)保護(hù)端,能夠限制寫(xiě)指令和擦除指令的操作區(qū)域,低電平有效。
3 M25P64工作原理
M25P64寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)需寫(xiě)使能(WREN)和寫(xiě)入(PP)指令,后者具有4個(gè)字節(jié)。采用這兩個(gè)指令實(shí)現(xiàn)單頁(yè)編程。對(duì)于某個(gè)單字節(jié)空間的操作,在使用PP指令之前需要對(duì)其擦除(FFh)。擦除操作可通過(guò)單塊擦除指令(SE)和整塊擦除(BE)來(lái)完成。擦除之前需要先執(zhí)行WREN指令。當(dāng)片選S信號(hào)為低電平,則選中該器件,此時(shí)處于有效電源模式;當(dāng)片選S信號(hào)為高電平,器件未被選中,但能在所有內(nèi)部指令周期(寫(xiě)入,擦除,寫(xiě)狀態(tài)寄存器)完成前保持有效電源模式。等指令周期完成則進(jìn)入備用電源模式。通過(guò)特殊指令來(lái)讀取或設(shè)置狀態(tài)寄存器內(nèi)的狀態(tài)位和控制位,實(shí)現(xiàn)相應(yīng)操作。
在該器件所有輸入輸出的指令、地址和數(shù)據(jù)中,數(shù)據(jù)置于首位。當(dāng)片選信號(hào)被拉為低電平,在時(shí)鐘信號(hào)的第一個(gè)下降沿開(kāi)始采樣數(shù)據(jù)輸入信號(hào)。每個(gè)指令序列都是以單字節(jié)指令代碼開(kāi)頭,緊接著就是地址或數(shù)據(jù)。在讀取數(shù)據(jù)、快速讀取數(shù)據(jù)、讀狀態(tài)寄存器、讀標(biāo)識(shí)和讀電子簽名時(shí),數(shù)據(jù)輸出序列緊隨輸入指令序列。當(dāng)數(shù)據(jù)輸出序列的所有數(shù)據(jù)位都輸出后,片選信號(hào)置為高電平。而在頁(yè)面數(shù)據(jù)寫(xiě)入、單塊擦除、整塊擦除、寫(xiě)狀態(tài)寄存器、寫(xiě)使能和寫(xiě)無(wú)效時(shí),片選信號(hào)必須在一個(gè)字節(jié)內(nèi)置為高電平。否則,指令不執(zhí)行。也就是說(shuō),拉低片選信號(hào)后,時(shí)鐘信號(hào)必須是8的整數(shù)倍。在寫(xiě)狀態(tài)寄存器周期、數(shù)據(jù)寫(xiě)入周期或者擦除周期,則忽略任何對(duì)存儲(chǔ)空間的訪問(wèn),并不會(huì)對(duì)這些周期產(chǎn)生影響。表l為M25P64的指令表。
(1)寫(xiě)使能(WREN) 寫(xiě)使能指令用于設(shè)置內(nèi)部寫(xiě)使能鎖存器位。在頁(yè)面數(shù)據(jù)寫(xiě)入、單塊擦除、整塊擦除和寫(xiě)狀態(tài)寄存器之前,必須先執(zhí)行寫(xiě)使能。當(dāng)片選信號(hào)拉低后,就開(kāi)始執(zhí)行寫(xiě)使能指令,接著傳輸指令。指令發(fā)送完后,片選信號(hào)置為高電平。寫(xiě)使能時(shí)序如圖2所示。
(2)讀狀態(tài)寄存器(RDSR)幾乎在任何時(shí)刻都能讀取狀態(tài)寄存器的值,甚至器件處于寫(xiě)入數(shù)據(jù)、擦除或?qū)憼顟B(tài)寄存器周期時(shí)。此時(shí)建議在傳輸新指令之前應(yīng)先檢查WIP位。狀態(tài)寄存器的格式如表2所示。
表2中,WIP位能夠確定存儲(chǔ)空間是否處于寫(xiě)狀態(tài)寄存器、寫(xiě)入或擦除周期。WIP為“1”時(shí)則處于以上幾個(gè)周期。WEL位能夠確定內(nèi)部寫(xiě)使能鎖存器的狀態(tài)。寫(xiě)入“1”時(shí)置位。寫(xiě)入“0”時(shí),寫(xiě)狀態(tài)寄存器、數(shù)據(jù)寫(xiě)入和擦除指令都無(wú)效。BP2,BPl,BPO位確定軟件寫(xiě)保護(hù)的區(qū)域大小,并且是非易失性的。SRWD位用于在寫(xiě)無(wú)效位和寫(xiě)保護(hù)引腳工作時(shí)可使該器件處于硬件保護(hù)模式。此模式下,3個(gè)非易失性位變?yōu)橹蛔x位,并且寫(xiě)狀態(tài)寄存器指令不會(huì)執(zhí)行。
(3)讀取數(shù)據(jù)(READ) 首先需將片選信號(hào)拉為低電平,接著讀取數(shù)據(jù)指令和3個(gè)字節(jié)的地址(A23~A0)。然后通過(guò)數(shù)據(jù)輸出引腳(O)輸出該地址存儲(chǔ)內(nèi)容。地址的首字節(jié)可以是任意值。在輸出每個(gè)字節(jié)數(shù)據(jù)后,地址自動(dòng)加1,跳至下一地址。因此,整個(gè)存儲(chǔ)空間的數(shù)據(jù)讀取可通過(guò)一個(gè)簡(jiǎn)單的數(shù)據(jù)讀取指令(READ)完成。當(dāng)達(dá)到最高地址時(shí),地址計(jì)數(shù)器自動(dòng)清零。片選信號(hào)置為高電平可終止數(shù)據(jù)讀取指令(READ)。數(shù)據(jù)輸出的任何時(shí)候,片選信號(hào)都置為高電平。該器件處于擦除或數(shù)據(jù)寫(xiě)入周期時(shí),數(shù)據(jù)讀取指令無(wú)效并且對(duì)當(dāng)前周期無(wú)任何影響。其頁(yè)面數(shù)據(jù)寫(xiě)入指令時(shí)序如圖3所示。
(4)頁(yè)面數(shù)據(jù)寫(xiě)入(PP)執(zhí)行PP指令之前,必須先執(zhí)行寫(xiě)使能指令。寫(xiě)使能指令解碼后,器件設(shè)置為寫(xiě)使能鎖存器。片選信號(hào)必須拉低,接著是PP指令代碼、3字節(jié)的地址和數(shù)據(jù)輸入(至少一個(gè)字節(jié))。如果地址的低8位(A7~AO)不全是O而寫(xiě)入的數(shù)據(jù)字節(jié)超出當(dāng)前頁(yè)的地址,超出部分則從下一頁(yè)首地址開(kāi)始寫(xiě)入。在整個(gè)數(shù)據(jù)寫(xiě)入時(shí)序中,片選信號(hào)必須拉低。如果寫(xiě)入的數(shù)據(jù)字節(jié)數(shù)大于256,則先前所鎖存的數(shù)據(jù)被丟棄。將正確寫(xiě)入最后256態(tài)寄存器核對(duì)WIP位的值。若為1,則表明處于自定時(shí)數(shù)據(jù)寫(xiě)入周期;若為0,則此周期完成。如果某一頁(yè)受到塊保護(hù)(BP2,BPl,BP0位),則不能執(zhí)行對(duì)此頁(yè)的數(shù)據(jù)寫(xiě)入操作。按照上述指令操作,能夠獲得驅(qū)動(dòng)程序的流程圖。圖4為數(shù)據(jù)寫(xiě)入(PP)操作的程序流程。
4 典型應(yīng)用
LPC2138是基于支持實(shí)時(shí)仿真和嵌入式跟蹤的32/16位ARM7TDMIS CPU的微控制器,帶有512 KB高速Flash和32KB的SRAM。128位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行,非常適合嵌入式產(chǎn)品。LPC2138帶有SPI接口。該器件與M25P64連接所構(gòu)成的存儲(chǔ)系統(tǒng)簡(jiǎn)單易行,使用方便。圖5是其硬件連接圖。M25P64的片選信號(hào)(S)與LPC2138的PO.20相連,寫(xiě)保護(hù)端(W)與P0.2l相連。PO.20和PO.2l作為普通I/O端口。M25P64的串行數(shù)據(jù)輸出(Q)、串行數(shù)據(jù)輸入(D)和串行時(shí)鐘輸入(C)與SPI接口的輸入輸出分別對(duì)應(yīng)相連。由M25P64指令時(shí)序圖可知:片選信號(hào)(S)在指令執(zhí)行之前為低電平,等到指令執(zhí)行完則才置為高電平。因此,與其連接的PO.20必須是普通的I/O端口功能,而不是引腳第2功能SSEL1。一般情況下,與寫(xiě)保護(hù)端(W)相連的PO.2l置低電平即可。該電路圖連接簡(jiǎn)單。試驗(yàn)表明由LPC2138與M25P64連接所構(gòu)成的存儲(chǔ)系統(tǒng)能夠有效穩(wěn)定運(yùn)行。
5 結(jié)語(yǔ)
本文介紹了一款新型的串行Flash存儲(chǔ)器M25P64的主要特點(diǎn),工作原理,驅(qū)動(dòng)程序的開(kāi)發(fā),并且設(shè)計(jì)了一個(gè)典型的M25P64應(yīng)用系統(tǒng)。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、運(yùn)行穩(wěn)定,能實(shí)現(xiàn)大容量數(shù)據(jù)存儲(chǔ)。