??? 摘 要:介紹了基于GPRS的無線數(shù)據(jù)終端的總體結(jié)構(gòu),闡述了采用S3C2410作為微控制器的硬件平臺(tái)設(shè)計(jì)方案,移植了Linux操作系統(tǒng),最后對(duì)應(yīng)用程序的設(shè)計(jì)進(jìn)行了介紹。運(yùn)行結(jié)果表明,數(shù)據(jù)終端工作穩(wěn)定,數(shù)據(jù)傳輸安全可靠,有實(shí)際參考價(jià)值。
??? 關(guān)鍵詞:GPRS;S3C2410;Linux
?
??? 無線通信技術(shù)的飛速發(fā)展,促進(jìn)了無線通信技術(shù)在工業(yè)監(jiān)視、控制、檢測(cè)中的應(yīng)用。無線通信包括短距離無線通信和無線移動(dòng)通信。其中短距離無線通信的通信距離一般在幾十米,而無線移動(dòng)通信則沒有距離限制,只要在移動(dòng)網(wǎng)絡(luò)的覆蓋范圍之內(nèi)都可以。目前的移動(dòng)網(wǎng)絡(luò)主要有GPRS/GSM和CDMA 2種,雖然CDMA網(wǎng)絡(luò)采用的是碼分多址技術(shù),在理論上比GPRS更為先進(jìn),但考慮到信號(hào)覆蓋范圍和成本等因素,在許多實(shí)際工業(yè)應(yīng)用中,仍然選擇了GPRS網(wǎng)絡(luò)[1]。數(shù)據(jù)終端是一種通過GPRS接入Internet的設(shè)備,它為客戶提供穩(wěn)定、高速、永遠(yuǎn)在線、成本低廉的數(shù)據(jù)傳輸通道,因此廣泛應(yīng)用于各種遠(yuǎn)程數(shù)據(jù)傳輸與監(jiān)控系統(tǒng)。
??? 控制領(lǐng)域中,傳統(tǒng)無線數(shù)據(jù)終端一般采用單片機(jī)與GPRS模塊的系統(tǒng)結(jié)構(gòu),受硬件運(yùn)算能力的限制,其整體功能較弱,尤其是在網(wǎng)絡(luò)協(xié)議的開發(fā)與支持上都有相當(dāng)?shù)碾y度。而近年來,以ARM為代表的嵌入式32位微處理器技術(shù)得到了飛速發(fā)展,無論是在功耗還是在硬件成本上,許多高性能的ARM芯片已經(jīng)與單片機(jī)相差無幾,因此在許多工業(yè)應(yīng)用中,使用ARM芯片取代傳統(tǒng)的8/16位單片機(jī)已經(jīng)是一個(gè)非常經(jīng)濟(jì)、理想的選擇。本文以ARM和GPRS模塊的系統(tǒng)架構(gòu)取代傳統(tǒng)的無線數(shù)據(jù)終端設(shè)計(jì)方案。
1 系統(tǒng)硬件設(shè)計(jì)
??? 采用三星公司的S3C2410為控制器,和西門子的GPRS模塊MC39I組成的系統(tǒng)架構(gòu)取代傳統(tǒng)的無線數(shù)據(jù)終端設(shè)計(jì)方案,不僅可以利用ARM芯片豐富的片內(nèi)、片外資源簡(jiǎn)化系統(tǒng)硬件結(jié)構(gòu),而且可以通過移植Linux等嵌入式操作系統(tǒng)來利用其豐富的協(xié)議接口[2],減小實(shí)際應(yīng)用的開發(fā)難度,便于向高端系統(tǒng)應(yīng)用升級(jí)。系統(tǒng)結(jié)構(gòu)如圖1所示。
?
??? 系統(tǒng)通過GPRS模塊連接到GSM/GPRS網(wǎng)絡(luò),實(shí)現(xiàn)數(shù)據(jù)的無線傳輸;且通過UART接口和S3C2410連接,實(shí)現(xiàn)與S3C2410的通信并接受S3C2410的控制,圖中的其他功能模塊實(shí)現(xiàn)系統(tǒng)所需的基本功能。
??? 本文設(shè)計(jì)的無線數(shù)據(jù)終端選用S3C2410處理器作為系統(tǒng)的核心處理單元,外接GPRS模塊,作為整個(gè)系統(tǒng)的硬件平臺(tái)。S3C2410是三星公司的一款基于ARM920T核的32位微處理器。主頻最高可達(dá)266 MHz,在本系統(tǒng)中工作于200 MHz。
??? GPRS模塊采用西門子的MC39I模塊,它支持900/1 800 MHz的雙頻,通過一個(gè)40針對(duì)接口與外接連接,包括電源接口、SIM卡接口、音頻接口、串口接口和其他的一些控制接口[3]。
1.1 電源部分
??? MC39I在突發(fā)傳輸過程中電流高達(dá)2 A,當(dāng)天線不匹配時(shí)電流可能更大,并且要保證在大電流的情況下,電壓VBATT+不能低于3.3 V,當(dāng)?shù)陀?.3 V時(shí)MC39I自動(dòng)關(guān)閉。
??? 基于上述考慮,采用了開關(guān)電源芯片。當(dāng)負(fù)載電流在0~3V之間時(shí),可以確保輸出電壓不超過150 mV。電源部分原理圖如圖2所示。
?
1.2 S3C2410和MC39I的通信接口設(shè)計(jì)
??? S3C2410和MC39I通過標(biāo)準(zhǔn)的RS-232串行接口進(jìn)行通信,用戶可以使用AT指令通過串口對(duì)MC39I進(jìn)行操作。S3C2410和MC39I的通信連接如圖3所示。
?
??? 當(dāng)S3C2410與MC39I模塊通信時(shí),可以只使用TXD、RXD引腳。但是若要通過模塊上網(wǎng),則應(yīng)該盡量使用全部的串口信號(hào)線引腳,包括TXD、RXD、RTS、CTS、DTR、DSR、DCD、RING。另外,可以將MC39I的RI信號(hào)線與S3C2410的中斷引腳相連,表示來電呼入[4]。
1.3 SIM卡接口設(shè)計(jì)
??? 在40針的接口中有6個(gè)接口是SIM卡接口:CCVCC為SIM卡提供電源;CCRST為SIM卡復(fù)位引腳;CCLK為SIM卡時(shí)鐘信號(hào)線;CCGDN為地線;CCIN,利用此信號(hào)線,MC39I可以檢測(cè)SIM的一些狀態(tài),比如SIM卡是否在SIM卡座之中;CCIO為I/O串行數(shù)據(jù)線。這6個(gè)接口可以直接與SIM卡座相連,另外,在CCVCC和CCGND處都使用一個(gè)100 pF的電容,并且盡量靠近引腳,在布線時(shí)采用低阻抗走線。MC39I與SIM卡的接口如圖4所示。
?
1.4 其他信號(hào)線
??? IGT觸發(fā)引腳在下降沿時(shí)觸發(fā)MC39I,低電平需保持100 ms以上。利用S3C2410的GPIO口產(chǎn)生大于100 ms的低電平。引腳當(dāng)?shù)碗娖綍r(shí)間大于3.2 s時(shí)將關(guān)閉MC39I。同樣可以利用S3C2410的GPIO口產(chǎn)生大于3.2 s的低電平。SYNC引腳用來控制一個(gè)LED燈,LED燈的狀態(tài)反映系統(tǒng)當(dāng)前的狀態(tài)。
2? 系統(tǒng)軟件設(shè)計(jì)
??? 系統(tǒng)的軟件設(shè)計(jì)包括2部分:操作系統(tǒng)的移植和應(yīng)用程序的設(shè)計(jì)。
2.1 Linux的移植
??? Linux內(nèi)核采用模塊化設(shè)計(jì),具有良好的可移植性和可定制性,因此成為一種主流的嵌入式操作系統(tǒng)。Linux 2.6.10以后,Samsung S3C2410已經(jīng)成為L(zhǎng)inux的一個(gè)標(biāo)準(zhǔn)支持平臺(tái),不需要任何patch就可以在S3C2410的目標(biāo)板上運(yùn)行得很好。所以在系統(tǒng)中移植了Linux2.6.11版本。主要包括3項(xiàng)工作:(1)修改makefile文件,將ARCH設(shè)置為arm,CROSS_COMPILE設(shè)置為arm-Linux-;(2)進(jìn)行Flash分區(qū)的設(shè)置;(3)進(jìn)行Linux內(nèi)核的配置,去掉一些系統(tǒng)不再需要的模塊,使內(nèi)核映像減小到最小,使系統(tǒng)更加穩(wěn)定。另外,無線數(shù)據(jù)終端中采用了U-boot-1.1.4作為bootloader。最后,為了能夠保存一些重要的數(shù)據(jù),增加了YAFFS2文件系統(tǒng),專門針對(duì)nandflash做了優(yōu)化,可以充分利用nandflash的特點(diǎn)。
2.2 應(yīng)用程序設(shè)計(jì)
??? 系統(tǒng)應(yīng)用程序是通過ARM模塊對(duì)MC39I模塊的控制實(shí)現(xiàn)快速的短信收發(fā),ARM模塊通過串口并使用AT指令來對(duì)MC39I模塊進(jìn)行控制[5]。例如,通過串口向MC39I寫入AT+CMGS=“5955176621”
??? 主函數(shù)main.c主要完成GPRS模塊的初始化(包括設(shè)置短信中心號(hào)碼、采用AT+CMEE=1來設(shè)置MC39I返回詳細(xì)的錯(cuò)誤信息、采用AT+CNMI=2,2,0,0,1來選擇新消息的提示方式、采用AT+CMGF=1來設(shè)置消息為TEXT格式等)、串口的初始化(包括打開串口、設(shè)置串口的波特率、奇偶校驗(yàn)等),然后等待輸入命令(是發(fā)送短信還是接收短信,比如接收到的命令是發(fā)送短信時(shí)將發(fā)送文件中的內(nèi)容發(fā)送出去,接收到的命令是接收短信時(shí)再根據(jù)接收到的短信內(nèi)容進(jìn)行相應(yīng)的操作)。主函數(shù)的流程如圖5所示。
?
??? SendSMS.c主要用于發(fā)送文件內(nèi)容。先打開串口;然后保存已經(jīng)打開串口的各種屬性值,設(shè)置ARM和MC39I模塊通信時(shí)采用的各種串口屬性值;以只讀方式打開需要發(fā)送的文件,將文件內(nèi)容讀取到緩沖區(qū);然后通過AT+CMGF=1設(shè)置消息為文本格式,通過AT+CMGS將文件內(nèi)容發(fā)送到指定的手機(jī)中,在使用AT指令的過程中,要注意分析返回信息來判斷發(fā)送是否成功。短信發(fā)送流程如圖6所示。
?
??? ReceiveSMS.c主要完成短信的接收并且將接收到的內(nèi)容寫入文件中。與發(fā)送短信相同,先打開串口;然后保存已經(jīng)打開串口的各種屬性值,設(shè)置ARM和MC39I模塊通信時(shí)采用的各種串口屬性值;采用AT+CNMI=2,1,0,0,0將接收到的短信存儲(chǔ)到SIM卡中;再采用AT+CMGR從SIM卡中讀取短信內(nèi)容到緩沖區(qū);最后以讀寫方式打開文件并將短信內(nèi)容寫入文件。短信接收到流程如圖7所示。
?
??? 通過實(shí)驗(yàn),無線數(shù)據(jù)終端與平時(shí)所用的手機(jī)能夠進(jìn)行很好的短信通信。作為實(shí)驗(yàn)通過手機(jī)對(duì)無線數(shù)據(jù)終端上的LED燈進(jìn)行控制,為遠(yuǎn)程的無線控制打下了基礎(chǔ)。同時(shí),基于GPRS/GSM網(wǎng)絡(luò)的無線數(shù)據(jù)終端采用ARM和Linux作為平臺(tái),使應(yīng)用程序的設(shè)計(jì)和升級(jí)會(huì)比較容易一些。例如MC39I沒有帶TCP/IP協(xié)議,所以在以后的升級(jí)中可以使用Linux中的TCP/IP協(xié)議,從而很方便地實(shí)現(xiàn)GPRS的無線上網(wǎng)。
參考文獻(xiàn)
[1]?BATES R J.通用分組無線業(yè)務(wù)(GPRS)技術(shù)與應(yīng)用 [M].朱洪波,譯.北京:人民郵電出版社,2004.
[2]?劉淼.嵌入式系統(tǒng)接口設(shè)計(jì)與Linux 驅(qū)動(dòng)程序開發(fā)[M].北京:北京航空航天大學(xué)出版,2006.
[3]?MC39I Hardware Interface Description[Z] .Siemens mobile,2003.
[4]?管耀武,楊宗德.ARM嵌入式無線通信系統(tǒng)開發(fā)[M].北京:電子工業(yè)出版社,2006.
[5]?MC39I AT Command Set[Z] .Siemens mobile,2003.