AT28C系列EEPROM中數(shù)據(jù)的保護(hù)
1 前言
EEPROM是一種具有掉電記憶功能的存貯器,其內(nèi)容可以象普通RAM一樣進(jìn)行改寫,而且改寫時(shí)能夠自動(dòng)擦除并換成新內(nèi)容。它不象EPROM那樣需要紫外線擦除;而只需用電即可擦除并改寫存貯在其內(nèi)部的內(nèi)容。EEPROM通常在內(nèi)部帶有編程電源。由于它只需外接單一+5V電源,因此使用起來(lái)十分方便。和串行芯片相比,并行EEPROM的電路接口和編程設(shè)計(jì)均簡(jiǎn)單得多,所以在對(duì)電路板面積要求不很苛刻的情況下,使用EEPROM存貯器還是十分的方便。
2 并行EEPROM中數(shù)據(jù)丟失的原因
并行EEPROM通常采用總線擴(kuò)展接口方法,圖1所示是基于AT28C256的接口電路,其中為地址譯碼產(chǎn)生的片選信號(hào)為單片機(jī)的讀、寫信號(hào)。
編程時(shí),只需一句MOVX指令即可完成EEP-ROM存貯器的讀、寫操作,使用十分方便,但并行EEPROM在工業(yè)現(xiàn)場(chǎng)往往會(huì)受到干擾而導(dǎo)致其存貯在內(nèi)部的數(shù)據(jù)內(nèi)容發(fā)生改變,從而造成數(shù)據(jù)的損壞或丟失。
經(jīng)分析,EEPROM存貯器的數(shù)據(jù)丟失主要發(fā)生在系統(tǒng)上電、掉電或復(fù)位等情況下。主要表現(xiàn)在以下兩種情況:
?。?)當(dāng)整個(gè)數(shù)據(jù)存貯系統(tǒng)中的CPU在復(fù)位信號(hào)解除后,一般都將會(huì)延時(shí)數(shù)百μs時(shí)間,因此,在這段時(shí)間內(nèi),讀信號(hào)、寫信號(hào)、地址信號(hào)和數(shù)據(jù)信號(hào)都可能隨機(jī)變化,從而造成對(duì)存貯器的誤寫操作而使其中的數(shù)據(jù)改變。
?。?)在電源緩慢升降過(guò)程中,當(dāng)CPU處于臨界工作狀態(tài)時(shí),其讀寫時(shí)序可能會(huì)出現(xiàn)混亂,從而使存貯器中的數(shù)據(jù)發(fā)生改變。
3 AT28C系列EEPROM簡(jiǎn)介
圖2所示是ATMEL公司的AT28C系列并行EEPROM存貯器的邏輯框圖,該系列中的主要產(chǎn)品有AT28C64(8K×8)、AT28C256(32K×8)、AT28C010(128K×8)、AT28C040(512K×8)等型號(hào),它們的結(jié)構(gòu)基本相同。和普通的28系列EEPROM相比,AT28C系列EEPROM具有如下特點(diǎn):
●具有64、128或256字節(jié)的標(biāo)識(shí)字節(jié)(不同型號(hào)有不同);
●可快速讀取,讀取時(shí)間范圍為120ns~150ns;
●具有字節(jié)和頁(yè)兩種寫模式,在頁(yè)寫模式中,EEPROM存貯器的內(nèi)部定時(shí)器控制時(shí)序可在一個(gè)內(nèi)部編程周期內(nèi)寫入一頁(yè)數(shù)據(jù),其頁(yè)容量為64、128或256字節(jié)(依型號(hào)不同而不同);
●可提供數(shù)據(jù)保護(hù)功能,具有卓越的抗干擾能力。
在上述特性中,最具吸引力的無(wú)疑是完善的數(shù)據(jù)保護(hù)功能。
4 AT28C系列的數(shù)據(jù)保護(hù)措施
AT28C系列EEPROM一般采用硬件數(shù)據(jù)保護(hù)和軟件數(shù)據(jù)保護(hù)(SDP)兩類措施。
4.1 硬件數(shù)據(jù)保護(hù)
AT28C系列EEPROM的硬件數(shù)據(jù)保護(hù)措施有以下幾種:
第一種措施是對(duì)Vcc實(shí)施監(jiān)控,當(dāng)Vcc低于3.8V時(shí),禁止對(duì)EEPROM的寫入;第二種是采用上電延時(shí),即在系統(tǒng)上電時(shí),當(dāng)Vcc上升到3.8V后再延時(shí)5ms才允許寫入數(shù)據(jù);第三種是寫入禁止,即在為低電平、為高電平或?yàn)楦唠娖竭@三個(gè)條件中的任何一個(gè)出現(xiàn)時(shí),禁止寫入數(shù)據(jù);最后一種是采用噪聲濾波,以便使得和信號(hào)線上窄于15ns的脈沖不能觸發(fā)寫操作。
4.2 軟件數(shù)據(jù)保護(hù)
軟件控制的數(shù)據(jù)保護(hù)功能可以由用戶編程來(lái)啟動(dòng)或禁止,芯片出廠時(shí)設(shè)定為禁止。
過(guò)執(zhí)行三條特定寫指令的序列可以使芯片進(jìn)入SDP狀態(tài)。一旦芯片進(jìn)入SDP狀態(tài),應(yīng)首先執(zhí)行此寫指令序列來(lái)使芯片允許寫入,隨后進(jìn)行字節(jié)或頁(yè)寫入操作,然后再使EEPROM自動(dòng)進(jìn)入SDP狀態(tài)。以AT28C256為例的使能算法如圖3所示。
將RAM中長(zhǎng)度為N(N<64)的字節(jié)數(shù)組mydata存入AT28C256中起始地址為address的連續(xù)存儲(chǔ)空間的C51程序如下:
不同型號(hào)的三條寫指令序列地址和數(shù)據(jù)值將有所不同,對(duì)于AT28C64,這三個(gè)地址值為1555、0AAA和1555,而三個(gè)數(shù)據(jù)值則相同。
退出SDP狀態(tài)(如AT28C256)的算法如圖4所示。對(duì)于不同型號(hào),地址和數(shù)據(jù)值也會(huì)有所不同。
需要指出的是,這里所說(shuō)的三條寫指令序列,只是用于EEPROM內(nèi)部SDP所需的邏輯判斷,而不會(huì)改變EEPROM中這三個(gè)地址的內(nèi)容。
5 結(jié)論
筆者曾用MP-100型編程器重寫具有SDP功能的AT28C256芯片,結(jié)果未能改變?nèi)我庖粋€(gè)字節(jié)的內(nèi)容。在開發(fā)的多款儀器中,利用該技術(shù)擴(kuò)展AT28C系列EEPROM后,從未出現(xiàn)數(shù)據(jù)丟失的情況。
實(shí)踐證明,AT28C系列EEPROM的數(shù)據(jù)保護(hù)功能非常有效,尤其是其軟件數(shù)據(jù)保護(hù)功能。由于其具有卓越的抗干擾能力,因此值得推薦使用。