摘 要: 針對(duì)海表氣象參數(shù)的存儲(chǔ),設(shè)計(jì)了基于AT89LV52和AT45DB041B的手持數(shù)據(jù)接收存儲(chǔ)器系統(tǒng)。詳細(xì)闡述了系統(tǒng)硬件組成和軟件設(shè)計(jì),給出了單片機(jī)與AT45DB041B的SPI接口電路、程序流程圖及部分程序代碼。該系統(tǒng)具有存儲(chǔ)容量大、數(shù)據(jù)保存非易失性等特點(diǎn)。
關(guān)鍵詞: AT45DB041B;存儲(chǔ)器;手持接收系統(tǒng);單片機(jī)
?
?? 由于海表溫度、空氣濕度、氣壓等是影響蒸發(fā)波導(dǎo)的重要因素,近年來,通過蒸發(fā)波導(dǎo)來增大雷達(dá)的探測(cè)距離從而形成超視距探測(cè),已經(jīng)逐步成為世界各國(guó)海軍密切關(guān)注的研究方向。由于蒸發(fā)波導(dǎo)出現(xiàn)在海洋大氣近地層內(nèi),受海氣交接面處微氣象條件影響與制約,因此,對(duì)海面氣象特征參數(shù)的數(shù)據(jù)采集和存儲(chǔ),以便分析蒸發(fā)波導(dǎo)模型,從而利用蒸發(fā)波導(dǎo)模型來預(yù)報(bào)波導(dǎo)高度等特征量以及繪制修正折射指數(shù)剖面顯得十分重要。鑒于艦船長(zhǎng)期在海面工作,針對(duì)目前手持接收設(shè)備自身存儲(chǔ)容量過小,無法滿足大量數(shù)據(jù)采集的實(shí)際情況,本文設(shè)計(jì)了一種基于ATMEL公司生產(chǎn)的大容量Flash存儲(chǔ)器AT45DB041B的手持?jǐn)?shù)據(jù)接收系統(tǒng),通過無線數(shù)傳的方式將前端采集的各種氣象數(shù)據(jù)進(jìn)行接收存儲(chǔ)和顯示。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于復(fù)雜海洋環(huán)境下數(shù)據(jù)的接收和存儲(chǔ),具有很好的推廣應(yīng)用價(jià)值。
1 系統(tǒng)設(shè)計(jì)
手持?jǐn)?shù)據(jù)接收存儲(chǔ)系統(tǒng)結(jié)構(gòu)如圖1所示,主要由AT89LV52單片機(jī)、AT45DB041B存儲(chǔ)器、GPS模塊、OLED顯示模塊以及鍵盤電路等組成。
根據(jù)系統(tǒng)結(jié)構(gòu)及功能需求,手持?jǐn)?shù)據(jù)接收存儲(chǔ)系統(tǒng)各模塊之間的關(guān)系與功能定義如下:
(1)主控單元采用AT89LV52單片機(jī),工作電壓為2.7~6.0 V,與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容。因?yàn)槠溥\(yùn)算效率高、功耗低、接口符合設(shè)計(jì)要求。
(2)數(shù)據(jù)存儲(chǔ)模塊具有4 MB的串口Flash DATA,是本設(shè)計(jì)的關(guān)鍵點(diǎn)。主要用于接收和保存采集到的氣象數(shù)據(jù),最后通過CH375芯片轉(zhuǎn)存到U盤。其體積小、容量大、耗電省、接口簡(jiǎn)單,特別是在移動(dòng)式智能化儀表中,可保存大量測(cè)量數(shù)據(jù),有著廣泛的應(yīng)用領(lǐng)域。
??? (3)鍵盤模塊采用44矩陣式鍵盤,采用逐行掃描的方法。主要用于命令的下達(dá)和狀態(tài)的設(shè)定,通過鍵盤輸入可以切換OLED屏的顯示模式,設(shè)置無線數(shù)傳的工作方式,選擇所要采集信號(hào)的類型等。同時(shí)具體在每個(gè)按鍵上設(shè)置一鍵多能的功能,使手持設(shè)備可以有選擇地接收和存儲(chǔ)數(shù)據(jù)。
??? (4)顯示部分采用128×64行點(diǎn)陣OLED,單色、字符、圖形形式模塊。主要用來顯示數(shù)據(jù)傳輸?shù)墓ぷ鳡顟B(tài)、系統(tǒng)時(shí)間以及鍵盤輸入的數(shù)據(jù)等,以方便工作人員進(jìn)行相應(yīng)的操作。其厚度薄、重量輕、功耗低、具有良好的抗震性,適合于海上作業(yè)。
(5)GPS模塊采用Holoux公司生產(chǎn)的基于Sirf3的高性能模塊,主要用來對(duì)海上作業(yè)船只進(jìn)行經(jīng)緯度定位和提供系統(tǒng)時(shí)間校正。
(6)數(shù)據(jù)采集模塊由前端氣象采集傳感器和無線數(shù)傳單元組成,通過多點(diǎn)-點(diǎn)方式實(shí)現(xiàn)與手持設(shè)備之間的通信。
(7)由于數(shù)據(jù)接收器為手持設(shè)備,且要滿足長(zhǎng)時(shí)間海上作業(yè)的要求,所以選用2節(jié)5號(hào)電池供電,以最大限度地延長(zhǎng)操作時(shí)間。
2 硬件電路
2.1 AT45DB041B
AT45DB041B是ATMEL公司生產(chǎn)的AT45DB系列Flash存儲(chǔ)器中的一種,共有8個(gè)引腳,其引腳功能如表1所示,芯片內(nèi)部結(jié)構(gòu)原理框圖如圖2所示。該存儲(chǔ)器主要由主存儲(chǔ)器(Flash memory array)和2個(gè)264 B的緩存(buffer1和buffer2)構(gòu)成,其中主存儲(chǔ)器容量為4 MB,共分為2 048頁,每頁容量為264 B,每8頁構(gòu)成1個(gè)塊,共256塊,主存儲(chǔ)區(qū)支持頁擦除和塊擦除操作;緩存讀寫方便迅速,但掉電數(shù)據(jù)會(huì)丟失,可以用作主存與外部進(jìn)行數(shù)據(jù)交換時(shí)的緩沖區(qū)域;當(dāng)通過一個(gè)緩存器對(duì)主存儲(chǔ)區(qū)進(jìn)行編程時(shí),另一個(gè)緩存器仍能進(jìn)行數(shù)據(jù)接收或者發(fā)送,實(shí)現(xiàn)虛擬的連續(xù)數(shù)據(jù)的存儲(chǔ)。AT45DB041B通過SPI口進(jìn)行數(shù)據(jù)的讀寫,使得硬件結(jié)構(gòu)簡(jiǎn)單,系統(tǒng)可靠性增強(qiáng)。
?
?
2.2 AT45DB041B與單片機(jī)接口電路
??? 對(duì)于內(nèi)部有SPI接口的單片機(jī),直接使用其SPI接口與AT45DB041B相連接即可;而內(nèi)部沒有SPI接口的單片機(jī)如MCS-51系列,可以利用通常的I/O口,用軟件接口模擬實(shí)現(xiàn)SPI接口與AT45DB041B相連接。以下簡(jiǎn)要介紹以89LV52單片機(jī)實(shí)現(xiàn)的AT45DB041B的接口,其硬件電路如圖3所示。這里使用89LV52的P2.3、P2.2、P2.1、P2.0分別作為AT45DB041B的SO、SI、SCK、/CS。一般情況下,可以將AT45DB041B的/WP接高電平。如對(duì)保存數(shù)據(jù)的保護(hù)要求非常高,可以另外使用單片機(jī)的1根I/O線驅(qū)動(dòng)AAT45DB041B的WP 引腳,這樣只有在將/WP拉為低的情況下才能對(duì)AT45DB041B進(jìn)行寫入,更進(jìn)一步提高了對(duì)數(shù)據(jù)的保護(hù)。
?
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)主程序
系統(tǒng)軟件采用C51語言編寫,由主程序模塊、無線數(shù)傳控制模塊、數(shù)據(jù)存取模塊、GPS通信模塊、顯示模塊、鍵盤處理模塊等組成。各模塊均按結(jié)構(gòu)化程序設(shè)計(jì)思想進(jìn)行設(shè)計(jì),使得軟件易于調(diào)試、維護(hù)和移植,具有較強(qiáng)的通用性。
單片機(jī)是整個(gè)系統(tǒng)的核心,負(fù)責(zé)協(xié)調(diào)控制各個(gè)模塊的工作。在系統(tǒng)啟動(dòng)以后,單片機(jī)的主要工作有:系統(tǒng)初始化、GPS定位、通過無線數(shù)傳模塊控制前端氣象數(shù)據(jù)采集傳感器傳回?cái)?shù)據(jù)、將數(shù)據(jù)寫入Flash芯片、控制OLED顯示等。另外,由于本系統(tǒng)功能較多,為節(jié)省硬件開銷,在4×4鍵盤掃描的基礎(chǔ)上采用一鍵多能的鍵盤管理。
3.2 AT45DB041B讀寫子程序
在本手持?jǐn)?shù)據(jù)接收存儲(chǔ)器裝置中,AT45DB041B用于保存監(jiān)測(cè)的歷史氣象數(shù)據(jù)和相關(guān)的狀態(tài)參數(shù),該數(shù)據(jù)包括溫度、經(jīng)緯度以及相關(guān)的時(shí)間(年、月、日、時(shí)、分)等信息,每保存1次數(shù)據(jù)需占用36 B,數(shù)據(jù)從主存儲(chǔ)器的第0頁開始依次往高位地址保存。同時(shí)該系統(tǒng)還具有歷史數(shù)據(jù)的回放和轉(zhuǎn)存功能,在測(cè)量現(xiàn)場(chǎng)可在OLED上查看所接收的不同時(shí)間段的歷史數(shù)據(jù),也可以通過CH375芯片轉(zhuǎn)存到U盤,這2個(gè)過程都需要從AT45DB041B中讀取數(shù)據(jù)。
下面主要對(duì)AT45DB041B的數(shù)據(jù)讀寫作簡(jiǎn)要介紹,AT45DB041的具體數(shù)據(jù)讀寫操作如圖4所示。
AT45DB041B的操作方式有21種,其具體的指令和讀寫操作已有不少介紹,本文只重點(diǎn)介紹在編寫程序中感覺比較難理解和容易出錯(cuò)的地方,這也是編寫正確接口程序的關(guān)鍵點(diǎn)。
AT45DB041B的操作指令可以分為三大類:從主存和緩存讀數(shù)據(jù)、往主存和緩存寫數(shù)據(jù)、主存和緩存之間的數(shù)據(jù)傳輸和比較。根據(jù)筆者在實(shí)際中的應(yīng)用體會(huì),以下幾點(diǎn)需要注意:
(1)單片機(jī)在通過SI、SO引腳與AT45DB041B通信期間必須保持/CS為低電平,但涉及到芯片內(nèi)部的操作(如主存與緩存之間的數(shù)據(jù)傳輸和比較、頁的擦除和塊擦除等),則是在芯片內(nèi)部自帶的時(shí)序電路控制下完成的,不需要單片機(jī)控制。另外,由于這些操作需要相對(duì)較長(zhǎng)的時(shí)間,在程序中有必要加入延時(shí)程序。
(2)單片機(jī)可直接從AT45DB041B主存頁的某個(gè)單元讀數(shù)據(jù),但不能直接往某個(gè)單元寫數(shù)據(jù),此時(shí)若要向主存寫數(shù)據(jù)有2種方法:①先將數(shù)據(jù)寫入緩存,然后采用自帶擦除方式將緩存中的數(shù)據(jù)寫入主存;②直接通過緩存將數(shù)據(jù)寫入主存,該操作實(shí)際是將第1種方法的2步合并成1步(即往主存寫數(shù)據(jù)必須借助于緩存來完成)。
(3)由于目前許多單片機(jī)并沒有集成SPI總線接口,但并非兩者之間就不能通信,可以采用單片機(jī)的I/O口結(jié)合軟件的方法來模擬SPI時(shí)序,實(shí)現(xiàn)兩者之間的通信。本文正是基于上述思路和方法成功地實(shí)現(xiàn)了該存儲(chǔ)器與89LV52單片機(jī)(該單片機(jī)內(nèi)部不帶SPI接口)之間的通信。
3.3 SPI總線模擬
??? 本文只對(duì)比較難以理解的軟件模擬SPI時(shí)序進(jìn)行簡(jiǎn)要介紹,并給出相關(guān)的C51程序代碼。其他相關(guān)操作模式的函數(shù),限于篇幅,本文不再贅述。
??? (1)從SPI上讀1個(gè)字節(jié)
??? uchar Flash_RByte(void)
??? {
????? uchar temp=0;
????? uchar i;
????? for(i=0;i<8;i++)
????? {
????????? Flash_CLK=0;
????????? _nop_();
????????? Flash_CLK=1;
????????? temp=temp<<1;
????????? if(Flash_SO==1)
????????? {temp=temp+1;}
?????? }
??? return(temp);
??? (2)向SPI上寫1個(gè)字節(jié)
??? uchar Flash_WByte(uchar temp)
??? {
????? uchar i;
????? for(i=0;i<8;i++)
????? {
????????? if(temp<????????? { Flash_SI=1;}
????????? else
????????? { Flash_SI=0;}
??? Flash_CLK=0;
????????? _nop_();
????????? Flash_CLK=1;
????? }
??? }
??? 在利用軟件編程模擬SPI總線的過程中,應(yīng)重點(diǎn)注意AT45DB041B的時(shí)序問題。在此基礎(chǔ)上,可以根據(jù)使用中的具體需要,建立自己的讀寫子函數(shù)庫(kù),以方便實(shí)際開發(fā)應(yīng)用。
??? 本文利用單片機(jī)普通I/O口模擬SPI接口實(shí)現(xiàn)了AT45DB041B和AT89LV52之間的通信,并在所設(shè)計(jì)的裝置中得到了成功地應(yīng)用,且運(yùn)行穩(wěn)定可靠。AT45DB041B串行Flash存儲(chǔ)芯片在實(shí)際應(yīng)用中效果好,編程比較簡(jiǎn)單,與其他一些Flash存儲(chǔ)芯片相比,AT45DB041B突出特點(diǎn)是電路簡(jiǎn)單、價(jià)格低、存儲(chǔ)容量大、占用系統(tǒng)資源少。構(gòu)建基于單片機(jī)的數(shù)據(jù)存儲(chǔ)系統(tǒng)應(yīng)用框架,為進(jìn)一步的數(shù)據(jù)處理、超視距雷達(dá)探測(cè)距離的研究提供了可行方案,能夠符合部隊(duì)雷達(dá)裝備發(fā)展的實(shí)際需要。
參考文獻(xiàn)
[1] 張毅坤,程善久,裘雪紅.單片微型計(jì)算機(jī)原理與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2001.
[2] 楊金巖,鄭應(yīng)強(qiáng),張振仁.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2005.
[3] 郭鐵寶.由海面蒸發(fā)波導(dǎo)預(yù)報(bào)平流海霧的方法[J].海洋預(yù)報(bào),2004,21(4):40-45.
[4] Atmel Corporation. AT89LV52 data sheet. 2005.
[5] Atmel Corporaiton. Serial data Flash product databook.2002.
[6] 張培仁.MCS-51單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2003.