摘 要:為了轉(zhuǎn)發(fā)水質(zhì)監(jiān)測數(shù)據(jù),采用新型的1T周期單片機STC10F04EX為控制核心,將雙4選1模擬開關(guān)4052的2個公用端與單片機的RxD、TxD端連接,通過分時連通的方式,對單片機的UART進行擴展,構(gòu)成一個多串口的數(shù)據(jù)轉(zhuǎn)發(fā)系統(tǒng)。擴展的串口分別連接到3個不同的水質(zhì)監(jiān)測設(shè)備,以及一個與無線發(fā)射模塊。單片機分時得到3個水質(zhì)監(jiān)測設(shè)備傳來的數(shù)據(jù),并將得到的數(shù)據(jù)通過無線模塊進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)距離可達3 000 m。遠離現(xiàn)場的計算機完成數(shù)據(jù)接收及分析。該方法用于對單片機串口擴展和遠距離數(shù)據(jù)傳送簡潔可靠。所建的數(shù)據(jù)收發(fā)系統(tǒng),可以同時連接多臺串口監(jiān)測設(shè)備,彌補了計算機串口較少的不足,并且功能有別于多串口卡。該系統(tǒng)已成功應(yīng)用于多傳感器水環(huán)境監(jiān)測的數(shù)據(jù)轉(zhuǎn)發(fā)。關(guān)鍵詞:STC10F04EX; 串口; 收發(fā)控制; 水質(zhì)監(jiān)測; 無線模塊
中圖分類號:TN919-34; TP334 文獻標(biāo)識碼:A
文章編號:1004-373X(2010)22-0199-04
Data Transceiver with Multi-serial-port Based on STC10F04EX
HU Li-qun, CHEN Dun-jun
(Key Laboratory of Advanced Photonic and Electronic Materials, School of Electronic Science and Engineering, Nanjing University, Nanjing 210093, China)
Abstract: In order to transmit the data of water quality, a multi-serial-port transceiver system is established, which adopts a new 1T cyclical MCU STC10F04EX as a core component, employs the two common pins of multiplexers 4052 to connect to UART (RxD and TxD), and extends the UART of the MCU through time-sharing mode so as to form 4 serial ports. One serial port is connected to a wireless transceiving module, the others communicates with three external equipments monitoring water quality. The MCU gets the monitoring data from those serial devices and transmits through the wireless module. The transmission distance is up to 3 000 m. A computer far away from the scene receives data and analyzes it. This method is simple and reliable for UART expansion and long-distance data transfer.The transceiver can simultaneously connect multiple serial equipments, and makes up for a shortage of computer serial port. The characteristics of this transceiver is different from that of multi-serial-port card. The transceiver has been demonstrated successfully in water monitoring system with multi-sensors.Keywords: STC10F04EX; serial port; transceiving control; water monitoring; wireless module
0 引 言
RS 232串口通信是一種常用的通信方式,許多數(shù)字化設(shè)備、測量儀器都具有串行接口[1]。這些設(shè)備可以方便地與PC、PLC等控制器連接進行數(shù)據(jù)交換,從而組成一個測試檢測/監(jiān)測系統(tǒng)。
目前安裝在江、河、湖等水體現(xiàn)場的不同種類的水環(huán)境監(jiān)測設(shè)備,通過采集水樣,周期性地生成一組數(shù)據(jù)通過串口向外傳送。如果在現(xiàn)場需配置一臺或多臺PC,既不經(jīng)濟,又難以維護。本文介紹的基于單片機的多串口數(shù)據(jù)收發(fā)控制系統(tǒng),可以同時連接多臺不同類型的水質(zhì)監(jiān)測設(shè)備,現(xiàn)場接收采集的數(shù)據(jù)并通過無線模塊向遠端控制中心傳遞,轉(zhuǎn)發(fā)傳送的距離約為3 000 m[2],遠遠大于直接的RS 232互連。多串口數(shù)據(jù)收發(fā)控制系統(tǒng)不同于多串口卡,可以脫離計算機獨立工作,是計算機串口擴展、延伸的一種全新方法。
用多串口數(shù)據(jù)收發(fā)控制系統(tǒng)取代計算機安置于監(jiān)測現(xiàn)場,將來自于不同設(shè)備的數(shù)據(jù)進行初步整合,再通過無線方式向遠離現(xiàn)場的中央控制室進行傳送,則監(jiān)測系統(tǒng)的可靠性、實時性、易維護性都大為增強。
1 水質(zhì)監(jiān)測系統(tǒng)的構(gòu)成
本文所提及的水質(zhì)監(jiān)測系統(tǒng),由光譜分析儀、水毒性分析儀、生物狀態(tài)分析儀等組成,這些設(shè)備都具有RS 232接口,但是接口參數(shù)不盡一致,傳送的數(shù)據(jù)格式也差別極大(見表1)。
這些位于水體現(xiàn)場的測試設(shè)備,需要及時地將測量數(shù)據(jù)傳遞給遠端的中央控制室。
表1 水質(zhì)監(jiān)測系統(tǒng)中的串口設(shè)備及數(shù)據(jù)傳送特征
設(shè)備名稱接口通訊參數(shù)數(shù)據(jù)特點數(shù)據(jù)周期
光譜分析儀波特率9 600 b/s,數(shù)據(jù)8位,無校驗,1位停止位。數(shù)據(jù)量較大,每次最大要傳送3 600組數(shù)據(jù),約8 000個字節(jié)。需要由接收設(shè)備發(fā)出命令,控制發(fā)送。40 s
水毒性分析儀波特率9 600 b/s,數(shù)據(jù)8位,無校驗,1位停止位。數(shù)據(jù)量小,38個字節(jié)。數(shù)據(jù)處理完畢自主發(fā)送。20 min
生物狀態(tài)分析儀波特率38 400 b/s,數(shù)據(jù)8位,無校驗,1位停止位數(shù)據(jù)量小,12個字節(jié)。
數(shù)據(jù)處理完畢自主發(fā)送。40 s
2 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)
2.1 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)工作原理
多串口數(shù)據(jù)收發(fā)控制系統(tǒng),以單片機STC10F04EX為控制核心,擴展出多個全雙工異步串行口(UART),用以同時連接多個外部串口設(shè)備。該系統(tǒng)既可獨立地與所連接的設(shè)備交換數(shù)據(jù),又能起到數(shù)據(jù)中繼的作用,將來自上位端的命令傳遞到指定的串口設(shè)備上,或?qū)⒔邮盏降膩碜圆煌谠O(shè)備上的數(shù)據(jù)經(jīng)過初步整理后發(fā)送到上位端。
由于要連接多個下位端執(zhí)行設(shè)備,但STC10F04EX的獨立UART只有一個,因此,必須對該單片機的UART進行擴展,才能連接多臺串口設(shè)備。經(jīng)過擴展的各路UART不能同時工作,必須在I/O的配合下選擇對應(yīng)通道分時工作。
被監(jiān)測的對象所發(fā)生的變化是個緩變過程,監(jiān)測系統(tǒng)中的各個分析儀器所要傳送的數(shù)據(jù)量有限,并且接收端大部分時間處于等待階段,控制程序在設(shè)計時已充分考慮到數(shù)據(jù)的銜接和每種設(shè)備的采樣和轉(zhuǎn)換周期。因此,分時連接不會造成數(shù)據(jù)丟失導(dǎo)致失準(zhǔn),可以滿足監(jiān)測要求。
圖1顯示了多串口收發(fā)控制系統(tǒng)的結(jié)構(gòu)框圖以及與3個外部串口設(shè)備的連接。該系統(tǒng)既可以將接收到的數(shù)據(jù)通過無線方式對外發(fā)送,也可以用有線的方式直接傳遞給本地電腦。
2.2 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)硬件組成
多串口數(shù)據(jù)收發(fā)控制系統(tǒng),采用型號STC10F04XE 的單片機為控制核心,外加7279A鍵盤及數(shù)碼管驅(qū)動電路,TTL-RS232電平轉(zhuǎn)換電路MAX 232,4052雙4選1模擬開關(guān),無線收發(fā)模塊等組成。
STC11F04XE 的單片機,以8051為內(nèi)核,并具有以下鮮明特點:抗干擾能力強,1T周期CPU,獨立波特率發(fā)生器,2個可切換串口,在系統(tǒng)可編程(ISP),片上擴展XRAM 等[3-4]。
單片機STC10F04EX的UART可在P1口的P1.6/P1.7 (UART2) 和P3口P3.0/P3.1(UART1)間切換,可以分時當(dāng)2個串口使用,這為調(diào)試系統(tǒng)和擴展串口帶來了方便[3]。由于該系列單片機支持在系統(tǒng)可編程(ISP),因此系統(tǒng)中的UART1通過電平轉(zhuǎn)換電路,直接連接到PC機的一個串口上,用于對單片機的程序下載和調(diào)試。單片機正常工作時,可將串口設(shè)置在UART2上。
圖1 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)的結(jié)構(gòu)
采用雙4選1模擬開關(guān)4052[5],將單片機的UART2擴展為4路。其中,單片機端的RxD/TxD分別接到4052的公共端,擴展端再由MAX232電平變換連接到外部具有串口的測量設(shè)備上。STC10F04EX 的2個I/O引腳P1.1, P1.0 與4052的通道選擇線B、A分別相連,UART2的具體指向由這2條I/O選擇控制。擴展的串口只能分時工作,具體分配見表2。
表2 I/O控制和UART2的指向
B(P1.1)/A(P1.0)4052導(dǎo)通的通道編號(雙路)UART2所指向設(shè)備
0/00設(shè)備1:生物狀態(tài)分析儀
0/11設(shè)備2:水毒性分析儀
1/02設(shè)備3:光譜分析儀
1/13設(shè)備4:無線模塊
由于連接的不同串口設(shè)備的通信參數(shù)不完全相同,STC10F04EX必須根據(jù)設(shè)備指向動態(tài)調(diào)整串口參數(shù)以適合外部串口設(shè)備。
顯示芯片7279A可以驅(qū)動8位共陰LED數(shù)碼管并可采集64個鍵盤位置信號[6]。該系統(tǒng)通過數(shù)碼管顯示工作狀態(tài)(收發(fā),等待,時間,通道號,參數(shù)等);通過鍵盤不僅可以設(shè)置“多串口數(shù)據(jù)收發(fā)控制系統(tǒng)”自身參數(shù)和調(diào)節(jié)自身狀態(tài),還可修改/設(shè)置所連接的外部設(shè)備的傳送參數(shù)。CPU通過4個I/O引腳與7279A的4條控制線CS、DATA、CLK、KEY連接,就可驅(qū)動8位數(shù)碼管并對按鍵進行監(jiān)控。為了響應(yīng)及時,采用中斷方式響應(yīng)按鍵狀態(tài),因此將KEY連接到P3.2(int0)上。
無線收發(fā)模塊,嵌入高性能射頻芯片,采用高效循環(huán)交織糾檢錯編碼,發(fā)送距離可達3 000 m[2]。模塊具有TTL電平的UART口,因此可以很方便地與單片機的一個擴展的UART連接。向無線收發(fā)模塊寫入和讀出數(shù)據(jù),與一般的串口操作基本一樣。無線收發(fā)模塊頻點、空中速率、本地串口速率、校驗方式等參數(shù)可以在線設(shè)置或通過廠家提供的程序進行設(shè)置[2]。
系統(tǒng)中無線收發(fā)模塊本地串口通信參數(shù)設(shè)為( 9 600,8,N,1),數(shù)據(jù)被調(diào)制在434 MHz進行發(fā)送和接收,空中速率9 600 b/s,發(fā)射功率100 mW。
該無線收發(fā)模塊,收到數(shù)據(jù)后通常延時幾十到幾百毫秒才發(fā)送,所帶緩存256 B。若本地串口速率大于等于空中速率,則存在數(shù)據(jù)流量問題,可能會出現(xiàn)數(shù)據(jù)溢出導(dǎo)致丟失現(xiàn)象[2]。因此若傳送數(shù)據(jù)超過256 B,要進行數(shù)據(jù)分割,插入等待周期,采用分次發(fā)送的方式以避免數(shù)據(jù)丟失。本系統(tǒng)所連接的光譜儀數(shù)據(jù)量較大[7-8],因此單片機接收光譜儀數(shù)據(jù)后再經(jīng)無線轉(zhuǎn)發(fā),要采用分段接收/轉(zhuǎn)發(fā)方式,每次的數(shù)據(jù)量要小于256 B,多次重復(fù),直至全部數(shù)據(jù)。
3 軟件設(shè)計
3.1 有關(guān)寄存器的說明
程序運行時首先進行初始化設(shè)置,其中涉及到幾個比較特別的寄存器,其定義不同于其他51系列的單片機[3]。
寄存器AUXR,地址8EH。關(guān)系到獨立波特率發(fā)生器,STC10F04EX既可以采用定時器1作為波特率發(fā)生器,又可以采用獨立波特率發(fā)生器以釋放定時器1,見表3說明。
表3 AUXR 寄存器的位說明
位值說明
D7:T0×1201系統(tǒng)時鐘12分頻作為定時器0 輸入
系統(tǒng)時鐘不分頻作為 定時器0 輸入
D6:T1×120
1系統(tǒng)時鐘12分頻作為定時器1 輸入
系統(tǒng)時鐘不分頻作為 定時器1 輸入
D5:U_M0×60
1串口0方式,時鐘12分頻
串口0方式,時鐘2分頻
D4: BRTR0不允許獨立波特率發(fā)生器運行
1允許獨立波特率發(fā)生器運行
D3: 保留
D2:BRTR×120獨立波特率發(fā)生器每12個時鐘計數(shù)一次
1獨立波特率發(fā)生器每1個時鐘計數(shù)一次
D1:XRAM0允許使用內(nèi)部擴展的256個字節(jié)擴展RAM
1禁止使用內(nèi)部擴展的256個字節(jié)擴展RAM
D0:S1BRS0定時器1作為串口的波特率發(fā)生器
1獨立波特率發(fā)生器作為串口的波特率發(fā)生器,定時器1 得到釋放
寄存器AUXR1,地址A2H。其中的D7位關(guān)系到單片機內(nèi)在的串口切換。例如:
AUXR1=0X80; // UART在P1口,(RxD/P1.6 ,TxD/P1.7)
AUXR1=0X0; // UART在P3口(RxD/P3.0 ,TxD/P3.1)
3.2 數(shù)據(jù)存儲及轉(zhuǎn)發(fā)
STC10F04EX單片機,內(nèi)部數(shù)據(jù)存儲器為256 B,片上擴展的外部數(shù)據(jù)存儲器為256 B,共計512 B[3],數(shù)據(jù)空間緊湊。程序運行中的一些變量需要占用一部分?jǐn)?shù)據(jù)空間,因此只能開辟約220個字節(jié)作為緩存空間,暫存接收到的來自串口設(shè)備的數(shù)據(jù)。如果一次接收的數(shù)據(jù)量小于緩存空間,則不會導(dǎo)致數(shù)據(jù)溢出;如果外部設(shè)備需傳送的數(shù)據(jù)量較大,則必須與外部設(shè)備建立聯(lián)絡(luò)控制發(fā)送,以使每次傳來的數(shù)據(jù)小于系統(tǒng)緩存,避免數(shù)據(jù)丟失現(xiàn)象的發(fā)生。
所建立的水質(zhì)監(jiān)測系統(tǒng)中,“光譜儀”給出的數(shù)據(jù)量較大,因此“多串口收發(fā)控制系統(tǒng)”分時連接到“光譜儀”時,采用命令應(yīng)答方式控制光譜儀的數(shù)據(jù)發(fā)送[8],分批多次傳送。單片機將UART指向光譜儀,首先向光譜儀發(fā)送命令,指明數(shù)據(jù)來源和傳送的數(shù)據(jù)量(例如200個字節(jié));其次等待光譜儀的響應(yīng)并將傳來的200個字節(jié)的數(shù)據(jù)暫存在所開辟的緩沖區(qū)中;然后再將UART切換至無線模塊通道,將單片機緩存中的數(shù)據(jù)寫入無線模塊轉(zhuǎn)發(fā)出去;重復(fù)進行上述步驟直至接收到光譜儀的全部數(shù)據(jù)。
水質(zhì)監(jiān)測系統(tǒng)中的另外2種設(shè)備的數(shù)據(jù)量相對較小,可以一次性接收/轉(zhuǎn)發(fā)。
3.3 接收/轉(zhuǎn)發(fā)控制流程
根據(jù)設(shè)備的不同數(shù)據(jù)周期,以時間為線索,為相應(yīng)的設(shè)備分配接收/發(fā)送時間(圖2),在所分配的時間里,單片機要進行UART通道切換:指向串口設(shè)備接收或發(fā)送數(shù)據(jù)、指向無線設(shè)備發(fā)送數(shù)據(jù)。
圖2 程序為不同設(shè)備分配的時間示意圖
程序采用中斷方式處理定時、串口的數(shù)據(jù)接收/發(fā)送、鍵盤輸入等過程[9-10]。以中斷方式運行,提高了程序的執(zhí)行效率。圖3 為定時中斷服務(wù)程序流程圖。該水質(zhì)監(jiān)測過程,就是循環(huán)掃描3個水監(jiān)測設(shè)備,獲取數(shù)據(jù)并進行無線轉(zhuǎn)發(fā)。
3.4 主要的程序功能模塊說明
串口驅(qū)動程序為分析判斷數(shù)據(jù)來源,并調(diào)用相應(yīng)的函數(shù),完成對不同串口設(shè)備的數(shù)據(jù)接收和發(fā)送。將接收到的數(shù)據(jù)暫時保存于緩存中;將緩存中的數(shù)據(jù)進行轉(zhuǎn)發(fā);
定時中斷程序為周期性地切換UART通道,分別連接到外部的3個串口設(shè)備上和無線發(fā)射模塊上。切換串口通道的同時,調(diào)整串口通信參數(shù),以適應(yīng)不同的串口設(shè)備。觸發(fā)串口發(fā)送過程,將緩存中的數(shù)據(jù)寫入無線模塊轉(zhuǎn)發(fā);
INT0中斷服務(wù)程序為及時響應(yīng)鍵盤操作,然后調(diào)用相應(yīng)的函數(shù),完成參數(shù)設(shè)置等控制任務(wù);顯示程序為控制7279A驅(qū)動LED數(shù)碼管,顯示系統(tǒng)狀態(tài)等信息。
圖3 定時中斷程序流程圖
4 結(jié) 語
多串口數(shù)據(jù)收發(fā)控制系統(tǒng),已應(yīng)用于水環(huán)境監(jiān)測的數(shù)據(jù)轉(zhuǎn)發(fā),工作穩(wěn)定,數(shù)據(jù)收發(fā)可靠。
本系統(tǒng)為采用一片單片機控制的單核心結(jié)構(gòu),與采用多核結(jié)構(gòu)相比,盡管只能分時使用UART,但數(shù)據(jù)協(xié)調(diào)相對容易,并且在設(shè)計時已考慮了數(shù)據(jù)銜接問題,不會導(dǎo)致數(shù)據(jù)丟失現(xiàn)象的發(fā)生;與采用多串口卡的方案相比,本系統(tǒng)可以脫離計算機獨立工作,因此現(xiàn)場不需要一臺計算機參與數(shù)據(jù)接收;無線方式數(shù)據(jù)傳送,傳送距離相對更遠;系統(tǒng)占用資源少,維護成本降低。
該系統(tǒng)還可應(yīng)用于其他的多串口數(shù)據(jù)收發(fā)場合。經(jīng)過擴展,可連接的串口數(shù)目可以進一步擴大。
參考文獻
[1]謝瑞和.串行技術(shù)大全[M].北京:清華大學(xué)出版社,2003.
[2]深圳市安美通科技有限公司.APC802-43多通道微功耗嵌入式無線數(shù)傳模塊使用手冊[EB/OL].http://www.appcon.com.cn.
[3]宏晶科技.STC11/10XX系列單片機器件手冊[EB/OL].(2010-5-10)[2010-6-10].http://www.mcu-memory.com/datasheet/stc.
[4]宏晶科技.STC12C5410AD系列單片機器件手冊[EB/OL].(2009-2-5)[2010-6-10].http://www.mcu-memory.com/datasheet/stc.
[5]李雙慶,丘鷹,王向榮.常用半導(dǎo)體器件簡明手冊[M].北京:電子工業(yè)出版社,1989.
[6]比高科技有限公司.HD7279A 數(shù)據(jù)手冊[EB/OL].4版.http://www.bitcode.com.cn.
[7]Ocean Optics Inc.. USB4000 fiber optic spectrometer installation and operation manual [M/CD].[2010-09-30].http://www.oceanoptics.com.
[8]Ocean Optics Inc.. USB4000 data sheet[M/OL].[2010-08-18].http://www.oceanoptics.com.
[9]童長飛.C8051F系列單片機開發(fā)與C語言編程[M].北京:北京航空航天大學(xué)出版社,2005.
[10]趙建領(lǐng).51系列單片機開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.