《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于X24C45芯片的非易失性數(shù)據(jù)存儲(chǔ)設(shè)計(jì)

基于X24C45芯片的非易失性數(shù)據(jù)存儲(chǔ)設(shè)計(jì)

2008-11-28
作者:萬(wàn) 頻

  摘? 要: 介紹了一種設(shè)計(jì)思想獨(dú)特的非易失性" title="非易失性">非易失性存儲(chǔ)器X24C45,其特點(diǎn)是能滿(mǎn)足頻繁更新數(shù)據(jù)和快速存取數(shù)據(jù)的需求。強(qiáng)調(diào)了在硬件設(shè)計(jì)時(shí)應(yīng)特別注意的問(wèn)題,給出了有關(guān)該芯片操作的編程實(shí)例。

  關(guān)鍵詞: 非易失性存儲(chǔ)器? 自動(dòng)存儲(chǔ)? 單片機(jī)

?

  在智能化電子產(chǎn)品的設(shè)計(jì)過(guò)程中,經(jīng)常會(huì)遇到一些重要數(shù)據(jù)的非易失性保存問(wèn)題。早期普遍采用的是電池維持RAM供電以實(shí)現(xiàn)整機(jī)掉電后的數(shù)據(jù)保存。但這樣做會(huì)由于電池本身的原因,如電池的使用壽命相對(duì)較短及某些惡劣環(huán)境(高濕高溫等)導(dǎo)致電池失效,而引起數(shù)據(jù)丟失的情況出現(xiàn)。同時(shí)電池體積相對(duì)較大,會(huì)嚴(yán)重限制某些電子產(chǎn)品的微型化設(shè)計(jì)。

  目前非易失性的數(shù)據(jù)保存方法多采用EEPROM。但EEPROM也有其弱點(diǎn),一是擦寫(xiě)次數(shù)有限(多為10萬(wàn)次),二是寫(xiě)入速度慢,這樣就限制了其在許多需要頻繁更新數(shù)據(jù)且需高速傳輸數(shù)據(jù)場(chǎng)合中的應(yīng)用。

本文介紹的存儲(chǔ)器芯片X24C45,可以較好地解決上述非易失性數(shù)據(jù)存儲(chǔ)過(guò)程中遇到的難題。

1 X24C45的功能特點(diǎn)

  X24C45是Xicor公司開(kāi)發(fā)的一種設(shè)計(jì)思想獨(dú)特的非易失性存儲(chǔ)器。這種器件將RAM和EEPROM制作在同一塊芯片上,RAM存儲(chǔ)陣列(16×16)的各個(gè)bit與EEPROM存儲(chǔ)陣列的各個(gè)bit一一對(duì)應(yīng),通過(guò)軟件指令或外部輸入能夠使數(shù)據(jù)在兩個(gè)存儲(chǔ)陣列之間相互傳送。其中的RAM存儲(chǔ)陣列正常工作時(shí)能實(shí)現(xiàn)數(shù)據(jù)與外部芯片的隨機(jī)存取功能,這樣可保證該芯片適合數(shù)據(jù)快速存取的場(chǎng)合;而在電源電壓" title="電源電壓">電源電壓降至閾值電壓" title="閾值電壓">閾值電壓時(shí),該芯片能自動(dòng)將RAM中的當(dāng)前數(shù)據(jù)傳輸至EEPROM中,這樣就保證了掉電時(shí)的數(shù)據(jù)非易失性保存。掉電情況在絕大多數(shù)系統(tǒng)中都不會(huì)頻繁出現(xiàn),故對(duì)EEPROM的擦寫(xiě)次數(shù)相應(yīng)地不會(huì)太多。而X24C45中EEPROM的擦寫(xiě)次數(shù)又高達(dá)100萬(wàn)次,可見(jiàn)X24C45完全能勝任在數(shù)據(jù)頻繁更新的場(chǎng)合實(shí)現(xiàn)非易失性存儲(chǔ)的任務(wù)。

X24C45的引腳圖如圖1所示。

?

?

  腳1為片選端,當(dāng)該腳為高時(shí)片選有效,當(dāng)該腳為低時(shí)芯片處于低功耗待機(jī)狀態(tài),且X24C45中的指令寄存器被復(fù)位;腳2為串行時(shí)鐘端;腳3為串行數(shù)據(jù)輸入;腳4為串行數(shù)據(jù)輸出;腳5為接地端;腳8為電源端;腳7為漏極開(kāi)路輸出,當(dāng)電源電壓降至低于自動(dòng)存儲(chǔ)閾值電壓VASTH(VASTH在4.0V~4.3V范圍)時(shí),腳7為低,對(duì)外部電路發(fā)出一個(gè)掉電報(bào)警或掉電復(fù)位信號(hào),可見(jiàn)該芯片同時(shí)具有電源監(jiān)視功能。腳6輸入一個(gè)低電平時(shí),將會(huì)執(zhí)行由EEPROM將數(shù)據(jù)傳輸?shù)絉AM的操作。

2 X24C45的指令集及工作時(shí)序

  X24C45的各種功能主要是由軟件來(lái)實(shí)現(xiàn)的。CPU通過(guò)DI端口向X24C45中的指令寄存器傳送一個(gè)指令,以實(shí)現(xiàn)某個(gè)功能。其指令集如表1所示。

?

?

  由表1可見(jiàn),所有指令的最高位都為“1”。所以在片選信號(hào)CE為高有效時(shí),DI口由低電平跳變出一個(gè)時(shí)鐘周期的高電平,表明開(kāi)始輸入一個(gè)指令,其工作時(shí)序如圖2所示。

?

?

  由RAM將數(shù)據(jù)存入EEPROM的操作條件限制較嚴(yán)格,為的是防止對(duì)EEPROM的意外寫(xiě)操作(因?yàn)镋EPROM的擦寫(xiě)次數(shù)有限,不必要的寫(xiě)操作應(yīng)避免)。所以該存儲(chǔ)功能的實(shí)現(xiàn),必須滿(mǎn)足以下三個(gè)條件同時(shí)成立:接收到STO指令;接收到WREN指令;接收到RCL指令或腳6電平被拉低。在將EEPROM的數(shù)據(jù)送回到RAM中的同時(shí),應(yīng)使X24C45內(nèi)部的“前次數(shù)據(jù)恢復(fù)”鎖存器置位。另外需要說(shuō)明的是,在將RAM中的數(shù)據(jù)存入EEPROM的操作過(guò)程中,X24C45的其它所有功能都被禁止。

  ENAS指令將X24C45內(nèi)部的“自動(dòng)存儲(chǔ)使能” 鎖存器置位,從而允許在電源電壓降至低于自動(dòng)存儲(chǔ)閾值電壓VASTH時(shí),自動(dòng)執(zhí)行將RAM中的數(shù)據(jù)存入EEPROM的操作。

  為了少占用CPU的I/O" title="I/O">I/O端口,X24C45的DI腳和DO腳通常連接到CPU的同一個(gè)I/O口(如圖1所示)。READ指令將RAM中AAAA地址的數(shù)據(jù)讀出,該指令的最低位為無(wú)關(guān)位,這樣正好允許在READ指令的第八個(gè)時(shí)鐘周期內(nèi)將I/O口由輸出轉(zhuǎn)換為輸入。RAM的讀操作時(shí)序如圖3所示。

?

?

  WRITE指令將數(shù)據(jù)寫(xiě)入RAM的AAAA地址中,其時(shí)序如圖4所示。需要說(shuō)明的是,RAM中的每個(gè)地址存儲(chǔ)16bit數(shù)據(jù)。

3 X24C45應(yīng)用時(shí)需注意的問(wèn)題

  X24C45實(shí)際應(yīng)用時(shí)與CPU的連接如圖1所示。前面已經(jīng)提到為節(jié)省CPU的I/O端口,可以將DI腳和DO腳連接到CPU的同一個(gè)I/O口(PA4)。

  在此要特別強(qiáng)調(diào)的是,電容C和二極管D本來(lái)是沒(méi)有加上去的,X24C45芯片手冊(cè)中也沒(méi)有這樣的說(shuō)明。但在實(shí)際應(yīng)用中筆者發(fā)現(xiàn),在沒(méi)有加上電容C和二極管D的情況下,X24C45會(huì)出現(xiàn)掉電時(shí)備份數(shù)據(jù)出錯(cuò)的現(xiàn)象。究其原因,是因?yàn)樵赬24C45中將當(dāng)前數(shù)據(jù)由RAM存儲(chǔ)到EEPROM時(shí)需要一定的時(shí)間(該時(shí)間典型數(shù)值為2ms,最長(zhǎng)可達(dá)5ms),而且啟動(dòng)自動(dòng)存儲(chǔ)的閾值電壓在4.0V~4.3V之間,數(shù)據(jù)由RAM存儲(chǔ)到EEPROM所需要的最低電源電壓為3.5V,掉電后電源電壓由閾值電壓下降到3.5V所需的時(shí)間,會(huì)由于各個(gè)電路中的電源電路和負(fù)載的不同而不同。顯然,掉電后電源電壓由閾值電壓下降到3.5V所需的時(shí)間如果少于數(shù)據(jù)由RAM存儲(chǔ)到EEPROM所需的時(shí)間,就會(huì)出現(xiàn)一部分?jǐn)?shù)據(jù)因不能被及時(shí)備份而丟失的問(wèn)題,而這種問(wèn)題的出現(xiàn)如果不采取相應(yīng)的措施是不可能被避免的。圖1中的電容C和二極管D可以保證掉電后X24C45電源端的電壓由閾值電壓下降到3.5V所需的時(shí)間足夠長(zhǎng),從而杜絕掉電時(shí)備份數(shù)據(jù)出錯(cuò)的情況。

4 X24C45相關(guān)操作的軟件實(shí)現(xiàn)

  X24C45與MC68HC05C4單片機(jī)的硬件連接如圖1所示。下面給出與其對(duì)應(yīng)的有關(guān)X24C45的前次數(shù)據(jù)恢復(fù)到RAM和自動(dòng)存儲(chǔ)功能使能設(shè)置等操作的軟件編程。

SAMP: LDA????? #$1C????? $1C=00011100???

?????? STA????? $04?????? 設(shè)置PA2、PA3、PA4為輸出?

?????? LDA? ??? #$00?

?????? STA ???? $00?????? 初始化PA2、PA3、PA4為0?

?????? LDA? ??? #$85????? $85=10000101為RCL指令?

?????? STA????? $81?????? 將RCL指令送至待發(fā)送地址 ??????????

?????? JSR? ??? CEHI????? 調(diào)用置CE為高子程序

?????? JSR?? ?? OUTB????? 調(diào)用輸出8bit子程序" title="子程序">子程序???

?????? JSR? ??? CELO????? 調(diào)用置CE為低子程序

?????? LDA????? #$82????? $82=10000010為ENAS指令

?????? STA????? $81 ????? 將ENAS指令送至待發(fā)送地址? ????????

?????? JSR ???? CEHI????? 調(diào)用置CE為高子程序

?????? JSR????? OUTB????? 調(diào)用輸出8bit子程序

?????? JSR????? CELO????? 調(diào)用置CE為低子程序

?????? ……

CEHI: BSET? ?? 2,$00????置CE(PA2)為高??????????

?????? RTS

OUTB: LDA??????#$08??????準(zhǔn)備移出8個(gè)bit

?????? STA??????$84???????將8送至計(jì)數(shù)器

LOOP:?ROL???? ?$81???????待發(fā)送內(nèi)容循環(huán)左移

?????? BCC? ??? IS0?????? C=0轉(zhuǎn)移至IS0

?????? BSET? ? 4,$00?????送1至DI/O(PA4)?

?????? BRA? ??? IS1?????? 跳轉(zhuǎn)至IS1

IS0:??BCLR? ? 4,$00???? 送0至DI/O(PA4)?

IS1:? JSR????? CLOCK???? 調(diào)用時(shí)鐘信號(hào)子程序

?????? DEC? ??? $84?????? 計(jì)數(shù)器減1

?????? BNE? ??? LOOP????? 計(jì)數(shù)器內(nèi)容≠0跳轉(zhuǎn)

?????? RTS??????????????? 計(jì)數(shù)器內(nèi)容=0結(jié)束

CELO: BCLR? ? 4,$00???? 將DI/O(PA4)拉低

?????? BCLR? ? 2,$00???? 置CE(PA2)為低

?????? RTS

CLOCK:?BSET? ? 3,$00??? 置SK(PA3)為高

??????? BCLR? ? 3,$00??? 置SK(PA3)為低

??????? RTS

  限于篇幅,CPU對(duì)X24C45其它操作的軟件編程不再贅述。按照上述硬件、軟件的設(shè)計(jì)思想,已將X24C45成功地應(yīng)用在電話計(jì)費(fèi)器的設(shè)計(jì)中。

?

參考文獻(xiàn)

1 涂時(shí)亮. MC68HC05單片機(jī)原理、應(yīng)用及技術(shù)手冊(cè). 上海:復(fù)旦大學(xué)出版社,1991

2 http://www.xicor.com
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。