0 引言
隨著信息技術(shù)的發(fā)展,在工業(yè)應(yīng)用領(lǐng)域中需要采集存儲(chǔ)的信息越來越多,,相應(yīng)地使用了各種數(shù)據(jù)采集裝置,,以獲得被研究對(duì)象的相關(guān)信息。有時(shí)為了節(jié)約時(shí)間和計(jì)算機(jī)資源,,一般并不是在當(dāng)?shù)亓⒓刺幚磉@些信息數(shù)據(jù),,而是將數(shù)據(jù)傳向后臺(tái)由后臺(tái)計(jì)算機(jī)進(jìn)行處理、分析,。它們之間的數(shù)據(jù)傳輸媒介有有線傳輸,、無線傳輸和硬盤等幾種型式。當(dāng)采集現(xiàn)場(chǎng)條件不允許時(shí),,比如地形復(fù)雜且離后臺(tái)距離較遠(yuǎn),,有線、無線傳輸均不適用,。此外,有時(shí)周圍環(huán)境會(huì)出現(xiàn)高濕度,、高粉塵的惡劣情況,,在這種條件下硬盤驅(qū)動(dòng)器就難以可靠工作。為了滿足實(shí)際生產(chǎn)中在特定條件下數(shù)據(jù)采集系統(tǒng)的要求,,通過長(zhǎng)時(shí)間的研究,,設(shè)計(jì)出一種基于單片機(jī)超大容量存儲(chǔ)器。該存儲(chǔ)器容量可達(dá)4 Mb,,基本可以滿足復(fù)雜環(huán)
境下信息采集存儲(chǔ)的需要,。
1 系統(tǒng)設(shè)計(jì)
基于單片機(jī)存儲(chǔ)器存取數(shù)據(jù)的整體結(jié)構(gòu)框圖如圖1所示。
圖1中單片機(jī)是控制核心,,存儲(chǔ)器是控制對(duì)象,,所有電路均為二者服務(wù)。由于存儲(chǔ)器是4 Mb的,,單片機(jī)的地址線已經(jīng)不夠用了,,為了進(jìn)行擴(kuò)展,加入地址擴(kuò)展電路,。為了加快存儲(chǔ)器中的數(shù)據(jù)導(dǎo)入計(jì)算機(jī),,特加入了并機(jī)接口電路。譯碼電路是為了增加I/O的口數(shù)量,。
1.1 中央處理器(CPU)
采用W78E516B單片機(jī),,內(nèi)部包含有:64 kBE2PROM,可省去最小系統(tǒng),,節(jié)省了并行口,。
1.2 存儲(chǔ)器
靜態(tài)存儲(chǔ)器的核心是存儲(chǔ)器芯片,國(guó)內(nèi)市場(chǎng)有2種類型:
(1)芯片內(nèi)部有自帶電池的NVRAM,。
(2)自己設(shè)計(jì)掉電保護(hù)電路使用普通的SRAM,,DRAM,。閃速存儲(chǔ)器是一種非易失性存儲(chǔ)器,即使切斷供電電源以后也能保持所存儲(chǔ)的數(shù)據(jù),,在不加電的情況下存儲(chǔ)在內(nèi)的信息可長(zhǎng)達(dá)lO年之久,。閃速存儲(chǔ)器可以隨機(jī)尋址、訪問時(shí)間很短,,能抵抗強(qiáng)烈的碰撞,,具有很強(qiáng)的環(huán)境適應(yīng)性,可靠性好,,平均無故障時(shí)間可達(dá)數(shù)百萬小時(shí),。因此可以取代硬盤用于可移動(dòng)設(shè)備、工業(yè)電子產(chǎn)品領(lǐng)域及惡劣環(huán)境中,,其性能價(jià)格比很好,。系統(tǒng)選用Atmel公司生產(chǎn)的閃速存儲(chǔ)AT29C040芯片,它是國(guó)外新一代產(chǎn)品,,容量可達(dá)4 Mb,,采用分頁管理方式,這種芯片的讀/寫與一般RAM有所不同,。對(duì)芯片的基本操作如下:
讀:當(dāng)CE和OE為低,,WE為高時(shí),由地址決定的存儲(chǔ)器單元將數(shù)據(jù)輸出,;當(dāng)CE或OE為高時(shí),,輸出為高阻態(tài)。這種雙線控制為設(shè)計(jì)者防止總線爭(zhēng)用提供了靈活性,。
字節(jié)裝入:用于輸入要編程的128 B(一個(gè)扇區(qū))數(shù)據(jù)或保護(hù)數(shù)據(jù)軟件代碼,。當(dāng)OE為高時(shí),對(duì)WE加一負(fù)脈沖同時(shí)CE為低,,或?qū)E加負(fù)脈沖同時(shí)WE為低時(shí),,將地址在CE或WE首先下降的一個(gè)下降沿鎖定,數(shù)據(jù)由CE和WE首先上升的上升沿鎖定,。
編程:芯片編程以扇區(qū)為單位,。如果要改變扇區(qū)中的一個(gè)數(shù)據(jù),扇區(qū)中所有的數(shù)據(jù)都要重新裝入芯片,,扇區(qū)中所有沒有裝入的字節(jié)在編程中都將被擦寫為FFH,。一旦一個(gè)扇區(qū)中的所有字節(jié)都裝入芯片,芯片立即在編程周期中對(duì)其進(jìn)行編程,,在第一個(gè)字節(jié)裝入后,,后續(xù)字節(jié)以同樣方式裝入。每一個(gè)新裝入字節(jié)的WE由高到低的跳變必須在前一個(gè)字節(jié)WE信號(hào)由低變高的150μs以內(nèi)。如果在上個(gè)裝入字節(jié)后150μs內(nèi)沒有檢測(cè)到WE由高向低跳變,,裝入周期終止,,內(nèi)部編程周期開始。A7~A16確定扇區(qū)地址,,在WE由高到低的變化中必須有效,,A0~A6確定扇區(qū)內(nèi)的字節(jié)地址,裝入字節(jié)可以任意次序,,不必順序裝入,。
軟件數(shù)據(jù)保護(hù):在AT29C04O中應(yīng)用了軟件控制保護(hù)數(shù)據(jù)的功能,一旦對(duì)芯片使用軟件保護(hù),,則在芯片編程之前必須按一定算法進(jìn)行操作,。軟件保護(hù)可以由用戶啟動(dòng)或停止。啟動(dòng)軟件保護(hù)由一組3個(gè)編程命令組成,,對(duì)特定地址送特定數(shù)據(jù),。啟動(dòng)軟件保護(hù)以后每次對(duì)芯片編程都必須在編程周期前送相同的3個(gè)編程命令。一旦啟動(dòng)軟件保護(hù),,它將一直保持直到執(zhí)行停止命令,,上電掉電不能改變軟件保護(hù)的狀態(tài)。因此在電源變化期間,,為防止誤編程,啟動(dòng)保護(hù)后,,沒有3 B命令的寫操作無效,,但在twc期間,讀操作為有效操作,。
硬件數(shù)據(jù)保護(hù):AT29C040硬件防止誤編程通過以下途徑:
如果電源電壓低于3.8 V,,禁止編程;
電源電壓上電到達(dá)3.8 V以上后,,芯片自動(dòng)延時(shí)5 ms后才開始編程,;
OE為低或CE為高或WE為高禁止編程周期;
如果WE或CE是小于15 ns的脈沖則不會(huì)啟動(dòng)編程周期,。
1.3 接口電路設(shè)計(jì)
通過上述分析,,設(shè)計(jì)大容量存儲(chǔ)器的接口電路如圖2所示。
該接口電路圖為實(shí)際工程應(yīng)用中的剪切圖,,其中單片機(jī)采用的是華邦W78E516B,,由于8位單片機(jī)I/O口數(shù)量有限,在工程應(yīng)用中一般不能滿足要求(圖中沒連線的I/O口已被用作其他用途),,因此采用74LS138進(jìn)行了擴(kuò)展,。由于29C040為4 Mb的容量,所以單片機(jī)的16位數(shù)據(jù)線已不能滿足要求,為了進(jìn)行大容量存儲(chǔ)器的擴(kuò)展,,采用8255來擴(kuò)展存儲(chǔ)器的地址線及訪問的范圍00000~7FFFF,。在此基礎(chǔ)上,可以設(shè)計(jì)存儲(chǔ)容量從4 Mb到數(shù)Gb的存儲(chǔ)器,。
2 軟件設(shè)計(jì)
為了增加數(shù)據(jù)存儲(chǔ)的安全性,,在讀/寫數(shù)據(jù)之前,要經(jīng)過一定的指令才能進(jìn)行讀/寫,,其保護(hù)指令如圖3,、圖4所示。如下程序是把存儲(chǔ)器中的數(shù)據(jù)刪除和對(duì)存儲(chǔ)器進(jìn)行寫入數(shù)據(jù)的程序段,。該部分程序已通過調(diào)試,,是產(chǎn)品中程序的一部分。
3 結(jié)語
AT29C040具備在掉電情況下保存數(shù)據(jù)的功能,,在實(shí)際應(yīng)用中工作可靠,,適合于便攜式流動(dòng)性環(huán)境下的數(shù)據(jù)采集系統(tǒng),特別是在應(yīng)用中對(duì)數(shù)據(jù)存儲(chǔ)有要求且存儲(chǔ)容量較大的場(chǎng)合更有其發(fā)揮的地方,。本文中所述部分即為實(shí)際產(chǎn)品中的應(yīng)用,。