摘 要:在工控現(xiàn)場及各種儀表中往往需要實(shí)時記錄一些數(shù)據(jù),本文介紹采用Xicor公司X24C45實(shí)現(xiàn)設(shè)備掉電時的數(shù)據(jù)自動存儲的方法,并給出了應(yīng)用實(shí)例。
關(guān)鍵詞:X24C45; 掉電; 數(shù)據(jù)自動存儲
在工控現(xiàn)場及電度表、流量計(jì)等儀表中往往有一些數(shù)據(jù)需要被不斷地實(shí)時刷新存儲(常常每天可達(dá)數(shù)萬次),并且在設(shè)備掉電或重新啟動時這些數(shù)據(jù)也需被保持。在這種情況下,使用靜態(tài)RAM雖然可以無限次記錄數(shù)據(jù),但為了保持?jǐn)?shù)據(jù),RAM必須加有電池;如果使用E2PROM或Flash ROM,則記錄次數(shù)有限(大多在百萬次左右)。同時為了掉電時能自動存儲數(shù)據(jù),系統(tǒng)必須具有掉電檢測電路,這樣系統(tǒng)將變得復(fù)雜且成本增加。
Xicor公司的X24C45串行256位NOVRAM則可以很好的滿足以上要求。X24C45是按16×16組織的靜態(tài)RAM,與非易失性E2PROM陣列位對位(bit-by-bit)重疊,可以利用軟件命令或外部輸入端在兩個存儲器陣列之間傳送數(shù)據(jù)。存儲操作(RAM數(shù)據(jù)至E2PROM)最長需5ms完成;調(diào)出操作(E2PROM數(shù)據(jù)至RAM)最長需5μs完成。X24C45可以不受限制的把數(shù)據(jù)從主機(jī)寫至RAM或從E2PROM調(diào)至RAM,最小存儲操作次數(shù)為100萬次,數(shù)據(jù)保存期大于100年。X24C45還具有用戶可選的AUTOSTORE(自動存儲)特性,即當(dāng)VCC下降到預(yù)置的門限(4.0~4.3V)以下時能自動完成存儲操作;同時它能上電自動執(zhí)行調(diào)出操作。X24C45與串行端口兼容(COPSTM,8051),可很方便地和各種微控制器接口。


1. 引腳功能
X24C45的引腳排列如圖1所示,各引腳說明如表1所列,具體的功能如下。
芯片允許(CE):CE為高電平時方可允許讀寫操作。在讀或?qū)懨詈,CE必須保持高電平,直到數(shù)據(jù)傳送完為止。CE為低電平將使X24C45處于低功耗的待機(jī)方式并復(fù)位指令寄存器。因此,在準(zhǔn)備下一操作命令時,為了使指令寄存器復(fù)位,每一次操作完成之后必須把CE拉至低電平。
串行時鐘(SK):SK用于所有數(shù)據(jù)能在時鐘同步下輸入或輸出的器件。
數(shù)據(jù)輸入(DI):DI是串行數(shù)據(jù)輸入端。
數(shù)據(jù)輸出(DO):DO是串行數(shù)據(jù)輸出端。除了在響應(yīng)READ指令數(shù)據(jù)輸出周期之外,均為高阻狀態(tài)。
AUTOSTORE(自動存儲)輸出(AS):AS是漏極開路輸出端,當(dāng)它為低電平有效時表示VCC已下降到AUTOSTORE(自動存儲)門限(VASTH)之下。AS可以和多個漏極開路輸出端“線或”(wire-ORed)連接,并可用作微控制器的中斷輸或低功率復(fù)位電路的輸入。
RECALL:RECALL為低電平時,啟動從E2PROM至RAM陣列的內(nèi)部數(shù)據(jù)傳送。
2. 工作原理
X24C45包含一個8位的指令寄存器,它通過DI輸入端來訪問,數(shù)據(jù)在SK的上升沿由時鐘同步輸入。在整個數(shù)據(jù)傳送操作期間,CE必須保持高電平。

表2列出了X24C45的所有指令及操作碼。所有指令的最高有效位(MSB)是邏輯1(高電平),位6至3是RAM地址(A)或不關(guān)心(X),而位2至 0是操作碼。X24C45要求按最高位(MSB)在前的方式送入指令。在CE為高電平之后直到邏輯“1”送入DI為止,X24C45將不會解釋數(shù)據(jù)流。因此,可以在SK工作(running)且DI為低電平的情況下把CE拉至高電平;但在X24C45開始任何動作之前,DI必須為高電平以表示指令的起始條件。
此外,SK時鐘是完全靜態(tài)的(totally static)。用戶如完全停止時鐘,數(shù)據(jù)移動也將被停止,重新啟動時鐘將恢復(fù)數(shù)據(jù)的移動。

現(xiàn)將X24C45的指令操作碼及功能分述如下:
●RCL和RECALL
軟件RCL指令或RECALL輸入端的低電平可以啟動數(shù)據(jù)從E2PROM傳送到RAM。這種軟件或硬件的調(diào)用操作可設(shè)置內(nèi)部“先前調(diào)用(previous recall)”鎖存器。該鎖存器上電時被復(fù)位,為了允許任何寫或存儲操作,它必須由用戶加以設(shè)置。雖然上電前完成了調(diào)用操作,但是此操作并不設(shè)置“先前調(diào)用”鎖存器。
●WRDS和WREN
X24C45內(nèi)部包含“寫允許”(write enabled)鎖存器。寫入RAM或?qū)2PROM進(jìn)行存儲操作時必須設(shè)置該鎖存器?捎肳REN指令設(shè)置鎖存器,WRDS指令復(fù)位鎖存器,從而有效的保護(hù)非易失性數(shù)據(jù),使之免受破壞。上電時“寫允許”鎖存器自動復(fù)位。
●STO
STO指令將啟動數(shù)據(jù)從RAM至E2PROM的傳遞。要避免不想要的存儲操作,下列條件必須為真:
(1) 發(fā)生STO指令
(2)內(nèi)部“寫允許”鎖存器必須被設(shè)置(WREN指令已發(fā)出)
(3)“先前調(diào)用”鎖存器必須被設(shè)置(軟件或硬件調(diào)用操作)
一旦存儲周期開始,器件的所有其它功能將被禁止,存儲周期完成之后,寫允許鎖存器被復(fù)位。
●WRITE(寫)
WRITE(寫)指令包含要寫的字的4位地址和寫指令之后要寫的16位字,移入的數(shù)據(jù)將寫至RAM。在整個操作期間,CE必須保持高電平。在寫結(jié)束后到 SK下一個上升沿之前,CE必須變?yōu)榈碗娖健5绻鸆E過早的變?yōu)榈碗娖?在指令之后但16位數(shù)據(jù)被傳送之前),那么指令寄存器將被復(fù)位。如果CE保持高電平的時間大于24個SK時鐘周期(8位指令加16位數(shù)據(jù)),那么已移入的數(shù)據(jù)將被重寫。
●READ(讀)
READ(讀)指令包含要訪問的字的4位地址。與其它的6個指令不同,該指令字的I0是“不關(guān)心”。這樣有兩個優(yōu)點(diǎn),首先,在把DI和DO二者連接在一起的設(shè)計(jì)中,指令中不存在第8位,這將允許主機(jī)有時間把I/O線從輸出轉(zhuǎn)為輸入;其次,在第9個SK時鐘周期內(nèi),它可供有效數(shù)據(jù)輸出使用。
讀操作期間的首位輸出DO被截?cái)。即它在?nèi)部由第8個SK時鐘的下降沿同步;然后,所有的后續(xù)位由SK的上升沿同步。
●低功耗方式
當(dāng)CE為低電平時,非關(guān)鍵的內(nèi)部器件被斷電,使器件處于待機(jī)狀態(tài),因而功耗最小。
●AUTOSTORE(自動存儲)特性
AUTOSTORE(自動存儲)指令(ENAS)用來設(shè)置“AUTOSTORE允許”鎖存器,X24C45在VCC下降到AUTOSTORE(自動存儲)門限(VASTH)以下時自動執(zhí)行存儲操作。執(zhí)行該指令前必須先執(zhí)行WREN指令。
●寫保護(hù)
X24C45提供了兩種軟件寫保護(hù)機(jī)制以防止未知數(shù)據(jù)的誤存儲,首先,上電時“寫允許”和“AUTOSTORE”(自動存儲)允許鎖存器處于復(fù)位狀態(tài),禁止任何存儲操作;其次,在上電后“先前調(diào)用(previous recall)”鎖存器被設(shè)置后可進(jìn)行數(shù)據(jù)存儲,它僅通過運(yùn)行軟件或硬件調(diào)用操作來設(shè)置,以確保所有的RAM單元內(nèi)的數(shù)據(jù)有效。
●系統(tǒng)的考慮
X24C45執(zhí)行上電調(diào)用時,可把E2PROM的內(nèi)容傳送到RAM陣列。雖然可以從RAM陣列讀出數(shù)據(jù),但是這種調(diào)用并不設(shè)置“先前調(diào)用”鎖存器。因?yàn)樵谶@種上電調(diào)用操作期間所有的命令被忽略,因此,在VCC穩(wěn)定之后,主機(jī)還應(yīng)當(dāng)把X24C45的任何操作最少延遲tPUR(最大為200μs)的時間。





