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