基于ARM和GPRS的遠(yuǎn)程監(jiān)測(cè)終端設(shè)計(jì)
各個(gè)數(shù)據(jù)采集模塊與主處理器通過(guò)SPI總線進(jìn)行通信。SPI總線是Motorola公司提出的一種高速全雙工串行通信總線,它容許CPU與各種外圍接口器件以串行方式進(jìn)行通信。SPI接口只有MISO(主入從出)、MOSI(主出從人)、SCLK(時(shí)鐘)和CS(片選)4個(gè)信號(hào)組成,在芯片上只占用4條線,大大節(jié)省了芯片資源。主處理器與各采集模塊的SPI通信方式為一主多從的方式,即ARM主處理器的作為主設(shè)備,各數(shù)據(jù)采集模塊作為從設(shè)備,主設(shè)備驅(qū)動(dòng)串行時(shí)鐘發(fā)起通信。主設(shè)備使用片選信號(hào)CS指明與哪個(gè)模塊采集模塊傳送數(shù)據(jù)。通信時(shí),主設(shè)備的MISO為輸入,MOSI為輸出,從設(shè)備的MISO為輸出,MOSI為輸入,在主設(shè)備時(shí)鐘的控制下,主設(shè)備與從設(shè)備的雙向移位寄存器同時(shí)進(jìn)行數(shù)據(jù)交換,完成一次數(shù)據(jù)的傳輸。主處理器與各模塊的通信結(jié)構(gòu)圖如圖4所示。本文引用地址:http://www.ex-cimer.com/article/149578.htm
2.3 GPRS模塊
GPRS模塊選用華為GTM900C模塊,它是一款三頻段GSM/GPRS無(wú)線模塊。模塊接口簡(jiǎn)單、使用方便且功能強(qiáng)大。它支持標(biāo)準(zhǔn)的AT命令及增強(qiáng)AT命令。GTM900C的GPRS數(shù)據(jù)業(yè)務(wù)的最高速率可達(dá)85.6 kbit/GTM900C提供40腳的ZIF接口,主要有電源接口、UART接口(最大串口速率可達(dá)115200bit/s)、標(biāo)準(zhǔn)SIM卡接口和模擬語(yǔ)音接口。
本系統(tǒng)中,GTM900C主要是實(shí)現(xiàn)GPRS上網(wǎng)功能。該模塊的主要特點(diǎn)如下:
1)單電源供電,供電范圍為3.3~4.8 V.典型供電電壓為4.2 V;
2)可工作于三頻EGSM900和/GSM1800/GT800單頻;最大發(fā)射功率EGSM900/GT800 Class(2W)和GSM1800 Classl(1W);
3)支持GSM標(biāo)準(zhǔn)AT命令、V.25 AT命令和華為擴(kuò)展AT命令;
4)GPRS傳輸速率最高可達(dá)85.6 kbps,支持CS-1,CS-2,CS-3,CS-4 4種編碼方式。內(nèi)嵌了TCP/IP協(xié)議;支持多連接,提供ACK應(yīng)答,提供大容量緩存。
GPRS模塊與主處理器的連接很簡(jiǎn)單,由于兩者是通過(guò)串口接口進(jìn)行通信的,所以將兩者用串口線連接即可。GPRS的網(wǎng)絡(luò)功能都已集成在模塊中,只需要在主處理器這一端將串口參數(shù)設(shè)置好,然后發(fā)送相應(yīng)的AT指令對(duì)模塊進(jìn)行操作即可。
3 終端軟件設(shè)計(jì)
終端軟件設(shè)計(jì)包括兩個(gè)任務(wù),一是搭建開(kāi)發(fā)環(huán)境,如Linux操作系統(tǒng)內(nèi)核移植,編寫設(shè)備驅(qū)動(dòng)等,二是在開(kāi)發(fā)環(huán)境準(zhǔn)備好的基礎(chǔ)上進(jìn)行應(yīng)用程序的編寫,包括完成SPI總線數(shù)據(jù)輸入輸出功能,GPRS無(wú)線數(shù)據(jù)傳輸功能,和界面顯示功能。
3.1 軟件開(kāi)發(fā)平臺(tái)搭建
軟件平臺(tái)采用嵌入式Linux操作系統(tǒng),嵌入式Linux操作系統(tǒng)是一個(gè)源代碼公開(kāi)的實(shí)時(shí)多任務(wù)操作系統(tǒng),可應(yīng)用于多種硬件平臺(tái),可根據(jù)需要定制內(nèi)核,有良好的網(wǎng)絡(luò)支持,Linux系統(tǒng)內(nèi)核精簡(jiǎn)、高效并且穩(wěn)定,能夠充分發(fā)揮硬件的功能,它非常適合在嵌入式領(lǐng)域中應(yīng)用。嵌入式Linux操作系統(tǒng)搭建的步驟為:在宿主機(jī)上建立交叉編譯的環(huán)境;編譯生成Linux的內(nèi)核,用的內(nèi)核是Linux-2.6.29;編譯生成根文件
系統(tǒng),用的根文件系統(tǒng)為yaffs;向目標(biāo)機(jī)下載Bootloader的映像,用的Bootloader為Supervivi;燒寫Linux內(nèi)核和文件系統(tǒng)的映像;復(fù)位啟動(dòng)。為了使終端可以使用觸摸屏,液晶屏和SPI總線,將編寫的對(duì)應(yīng)的驅(qū)動(dòng)編譯、添加到Linux內(nèi)核中。系統(tǒng)使用的宿主機(jī)系統(tǒng)為在虛擬機(jī)下運(yùn)行的RedHat9.0。
終端應(yīng)用程序用Qt來(lái)編寫,Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它具有優(yōu)良的跨平臺(tái)特性、面向?qū)ο?、豐富的API支持等優(yōu)點(diǎn)。Qt-Embedded是Qt的嵌入式版本,因此終端應(yīng)用程序的開(kāi)發(fā)使用Qt/E作為開(kāi)發(fā)工具。Qt運(yùn)行環(huán)境的搭建步驟為:首先在宿主機(jī)上分別建立Ot-x86編譯環(huán)境和Qt-ARM編譯調(diào)試環(huán)境,采用Qt4.5.0版本;其次,將宿主機(jī)生成的Lib下的庫(kù)文件下載到目標(biāo)板的某個(gè)目錄下,并在目標(biāo)板上設(shè)置好環(huán)境變量,這樣在目標(biāo)機(jī)上的Qt程序運(yùn)行環(huán)境就建好了。在宿主機(jī)上交叉編譯好的Ot/E程序就可以下載到目標(biāo)機(jī)上運(yùn)行了。
3.2 終端應(yīng)用程序設(shè)計(jì)
監(jiān)測(cè)終端需要采集監(jiān)測(cè)儀表的現(xiàn)場(chǎng)測(cè)量數(shù)據(jù),終端設(shè)計(jì)的數(shù)據(jù)采集模塊分別對(duì)不同的現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行采集并做相應(yīng)的處理,數(shù)據(jù)采集模塊與CPU之間通過(guò)SPI總線進(jìn)行數(shù)據(jù)傳輸,對(duì)與采集數(shù)據(jù)需按上端通信協(xié)議、PPP、TCP/IP協(xié)議進(jìn)行二次成幀;利用GPRS網(wǎng)絡(luò)接入Internet網(wǎng)絡(luò),將處理后的數(shù)據(jù)信息通過(guò)GPRS無(wú)線網(wǎng)絡(luò)上傳至監(jiān)控中心。
GPRS模塊附著GPRS網(wǎng)絡(luò)并與上位機(jī)建立TCP數(shù)傳鏈路是通過(guò)向模塊發(fā)送一串AT指令實(shí)現(xiàn)。撥號(hào)動(dòng)作完成,并成功建立數(shù)傳鏈路以后,GPRS模塊在終端串行口和上位機(jī)之間變得透明。另外,終端的重要狀態(tài)要能即時(shí)顯示在LCD上。
綜上分析,監(jiān)控終端應(yīng)用程序要完成的任務(wù)有:串口參數(shù)設(shè)置,GPRS網(wǎng)絡(luò)連接,讀取串口返回信息,SPI數(shù)據(jù)傳輸,GPRS數(shù)據(jù)傳輸,界面顯示。由于任務(wù)不止一個(gè),而且有的任務(wù)需要同時(shí)運(yùn)行,所以采用多線程編程。
在Qt編程中主界面UI一般為主線程,子線程通過(guò)繼承Qt中的QThread線程類來(lái)完成。這些任務(wù)和功能可以通過(guò)3個(gè)線程來(lái)實(shí)現(xiàn)。3個(gè)線程的作用分別為:1)主線程:負(fù)責(zé)界面顯示,串口參數(shù)設(shè)置,GPRS網(wǎng)絡(luò)連接,GPRS數(shù)據(jù)傳輸;2)SPI數(shù)據(jù)傳輸子線程:負(fù)責(zé)與數(shù)據(jù)采集模塊通信,將采集數(shù)據(jù)存入緩沖區(qū);3)串口數(shù)據(jù)讀取子線程:CPU通過(guò)串口操作GPRS模塊,GPRS模塊的返回信息可以通過(guò)串口數(shù)據(jù)讀取子線程隨時(shí)讀取。程序模塊圖如圖5所示。
評(píng)論