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