摘 要:為了轉發水質監測數據,采用新型的1T周期單片機STC10F04EX為控制核心,將雙4選1模擬開關4052的2個公用端與單片機的RxD、TxD端連接,通過分時連通的方式,對單片機的UART進行擴展,構成一個多串口的數據轉發系統。擴展的串口分別連接到3個不同的水質監測設備,以及一個與無線發射模塊。單片機分時得到3個水質監測設備傳來的數據,并將得到的數據通過無線模塊進行轉發,轉發距離可達3 000 m。遠離現場的計算機完成數據接收及分析。該方法用于對單片機串口擴展和遠距離數據傳送簡潔可靠。所建的數據收發系統,可以同時連接多臺串口監測設備,彌補了計算機串口較少的不足,并且功能有別于多串口卡。該系統已成功應用于多傳感器水環境監測的數據轉發。關鍵詞:STC10F04EX; 串口; 收發控制; 水質監測; 無線模塊
中圖分類號:TN919-34; TP334 文獻標識碼: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串口通信是一種常用的通信方式,許多數字化設備、測量儀器都具有串行接口[1]。這些設備可以方便地與PC、PLC等控制器連接進行數據交換,從而組成一個測試檢測/監測系統。
目前安裝在江、河、湖等水體現場的不同種類的水環境監測設備,通過采集水樣,周期性地生成一組數據通過串口向外傳送。如果在現場需配置一臺或多臺PC,既不經濟,又難以維護。本文介紹的基于單片機的多串口數據收發控制系統,可以同時連接多臺不同類型的水質監測設備,現場接收采集的數據并通過無線模塊向遠端控制中心傳遞,轉發傳送的距離約為3 000 m[2],遠遠大于直接的RS 232互連。多串口數據收發控制系統不同于多串口卡,可以脫離計算機獨立工作,是計算機串口擴展、延伸的一種全新方法。
用多串口數據收發控制系統取代計算機安置于監測現場,將來自于不同設備的數據進行初步整合,再通過無線方式向遠離現場的中央控制室進行傳送,則監測系統的可靠性、實時性、易維護性都大為增強。
1 水質監測系統的構成
本文所提及的水質監測系統,由光譜分析儀、水毒性分析儀、生物狀態分析儀等組成,這些設備都具有RS 232接口,但是接口參數不盡一致,傳送的數據格式也差別極大(見表1)。
這些位于水體現場的測試設備,需要及時地將測量數據傳遞給遠端的中央控制室。
表1 水質監測系統中的串口設備及數據傳送特征
設備名稱接口通訊參數數據特點數據周期
光譜分析儀波特率9 600 b/s,數據8位,無校驗,1位停止位。數據量較大,每次最大要傳送3 600組數據,約8 000個字節。需要由接收設備發出命令,控制發送。40 s
水毒性分析儀波特率9 600 b/s,數據8位,無校驗,1位停止位。數據量小,38個字節。數據處理完畢自主發送。20 min
生物狀態分析儀波特率38 400 b/s,數據8位,無校驗,1位停止位數據量小,12個字節。
數據處理完畢自主發送。40 s
2 多串口數據收發控制系統
2.1 多串口數據收發控制系統工作原理
多串口數據收發控制系統,以單片機STC10F04EX為控制核心,擴展出多個全雙工異步串行口(UART),用以同時連接多個外部串口設備。該系統既可獨立地與所連接的設備交換數據,又能起到數據中繼的作用,將來自上位端的命令傳遞到指定的串口設備上,或將接收到的來自不同串口設備上的數據經過初步整理后發送到上位端。
由于要連接多個下位端執行設備,但STC10F04EX的獨立UART只有一個,因此,必須對該單片機的UART進行擴展,才能連接多臺串口設備。經過擴展的各路UART不能同時工作,必須在I/O的配合下選擇對應通道分時工作。
被監測的對象所發生的變化是個緩變過程,監測系統中的各個分析儀器所要傳送的數據量有限,并且接收端大部分時間處于等待階段,控制程序在設計時已充分考慮到數據的銜接和每種設備的采樣和轉換周期。因此,分時連接不會造成數據丟失導致失準,可以滿足監測要求。
圖1顯示了多串口收發控制系統的結構框圖以及與3個外部串口設備的連接。該系統既可以將接收到的數據通過無線方式對外發送,也可以用有線的方式直接傳遞給本地電腦。
2.2 多串口數據收發控制系統硬件組成
多串口數據收發控制系統,采用型號STC10F04XE 的單片機為控制核心,外加7279A鍵盤及數碼管驅動電路,TTL-RS232電平轉換電路MAX 232,4052雙4選1模擬開關,無線收發模塊等組成。
STC11F04XE 的單片機,以8051為內核,并具有以下鮮明特點:抗干擾能力強,1T周期CPU,獨立波特率發生器,2個可切換串口,在系統可編程(ISP),片上擴展XRAM 等[3-4]。
單片機STC10F04EX的UART可在P1口的P1.6/P1.7 (UART2) 和P3口P3.0/P3.1(UART1)間切換,可以分時當2個串口使用,這為調試系統和擴展串口帶來了方便[3]。由于該系列單片機支持在系統可編程(ISP),因此系統中的UART1通過電平轉換電路,直接連接到PC機的一個串口上,用于對單片機的程序下載和調試。單片機正常工作時,可將串口設置在UART2上。
圖1 多串口數據收發控制系統的結構
采用雙4選1模擬開關4052[5],將單片機的UART2擴展為4路。其中,單片機端的RxD/TxD分別接到4052的公共端,擴展端再由MAX232電平變換連接到外部具有串口的測量設備上。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導通的通道編號(雙路)UART2所指向設備
0/00設備1:生物狀態分析儀
0/11設備2:水毒性分析儀
1/02設備3:光譜分析儀
1/13設備4:無線模塊
由于連接的不同串口設備的通信參數不完全相同,STC10F04EX必須根據設備指向動態調整串口參數以適合外部串口設備。
顯示芯片7279A可以驅動8位共陰LED數碼管并可采集64個鍵盤位置信號[6]。該系統通過數碼管顯示工作狀態(收發,等待,時間,通道號,參數等);通過鍵盤不僅可以設置“多串口數據收發控制系統”自身參數和調節自身狀態,還可修改/設置所連接的外部設備的傳送參數。CPU通過4個I/O引腳與7279A的4條控制線CS、DATA、CLK、KEY連接,就可驅動8位數碼管并對按鍵進行監控。為了響應及時,采用中斷方式響應按鍵狀態,因此將KEY連接到P3.2(int0)上。
無線收發模塊,嵌入高性能射頻芯片,采用高效循環交織糾檢錯編碼,發送距離可達3 000 m[2]。模塊具有TTL電平的UART口,因此可以很方便地與單片機的一個擴展的UART連接。向無線收發模塊寫入和讀出數據,與一般的串口操作基本一樣。無線收發模塊頻點、空中速率、本地串口速率、校驗方式等參數可以在線設置或通過廠家提供的程序進行設置[2]。
系統中無線收發模塊本地串口通信參數設為( 9 600,8,N,1),數據被調制在434 MHz進行發送和接收,空中速率9 600 b/s,發射功率100 mW。
該無線收發模塊,收到數據后通常延時幾十到幾百毫秒才發送,所帶緩存256 B。若本地串口速率大于等于空中速率,則存在數據流量問題,可能會出現數據溢出導致丟失現象[2]。因此若傳送數據超過256 B,要進行數據分割,插入等待周期,采用分次發送的方式以避免數據丟失。本系統所連接的光譜儀數據量較大[7-8],因此單片機接收光譜儀數據后再經無線轉發,要采用分段接收/轉發方式,每次的數據量要小于256 B,多次重復,直至全部數據。
3 軟件設計
3.1 有關寄存器的說明
程序運行時首先進行初始化設置,其中涉及到幾個比較特別的寄存器,其定義不同于其他51系列的單片機[3]。
寄存器AUXR,地址8EH。關系到獨立波特率發生器,STC10F04EX既可以采用定時器1作為波特率發生器,又可以采用獨立波特率發生器以釋放定時器1,見表3說明。
表3 AUXR 寄存器的位說明
位值說明
D7:T0×1201系統時鐘12分頻作為定時器0 輸入
系統時鐘不分頻作為 定時器0 輸入
D6:T1×120
1系統時鐘12分頻作為定時器1 輸入
系統時鐘不分頻作為 定時器1 輸入
D5:U_M0×60
1串口0方式,時鐘12分頻
串口0方式,時鐘2分頻
D4: BRTR0不允許獨立波特率發生器運行
1允許獨立波特率發生器運行
D3: 保留
D2:BRTR×120獨立波特率發生器每12個時鐘計數一次
1獨立波特率發生器每1個時鐘計數一次
D1:XRAM0允許使用內部擴展的256個字節擴展RAM
1禁止使用內部擴展的256個字節擴展RAM
D0:S1BRS0定時器1作為串口的波特率發生器
1獨立波特率發生器作為串口的波特率發生器,定時器1 得到釋放
寄存器AUXR1,地址A2H。其中的D7位關系到單片機內在的串口切換。例如:
AUXR1=0X80; // UART在P1口,(RxD/P1.6 ,TxD/P1.7)
AUXR1=0X0; // UART在P3口(RxD/P3.0 ,TxD/P3.1)
3.2 數據存儲及轉發
STC10F04EX單片機,內部數據存儲器為256 B,片上擴展的外部數據存儲器為256 B,共計512 B[3],數據空間緊湊。程序運行中的一些變量需要占用一部分數據空間,因此只能開辟約220個字節作為緩存空間,暫存接收到的來自串口設備的數據。如果一次接收的數據量小于緩存空間,則不會導致數據溢出;如果外部設備需傳送的數據量較大,則必須與外部設備建立聯絡控制發送,以使每次傳來的數據小于系統緩存,避免數據丟失現象的發生。
所建立的水質監測系統中,“光譜儀”給出的數據量較大,因此“多串口收發控制系統”分時連接到“光譜儀”時,采用命令應答方式控制光譜儀的數據發送[8],分批多次傳送。單片機將UART指向光譜儀,首先向光譜儀發送命令,指明數據來源和傳送的數據量(例如200個字節);其次等待光譜儀的響應并將傳來的200個字節的數據暫存在所開辟的緩沖區中;然后再將UART切換至無線模塊通道,將單片機緩存中的數據寫入無線模塊轉發出去;重復進行上述步驟直至接收到光譜儀的全部數據。
水質監測系統中的另外2種設備的數據量相對較小,可以一次性接收/轉發。
3.3 接收/轉發控制流程
根據設備的不同數據周期,以時間為線索,為相應的設備分配接收/發送時間(圖2),在所分配的時間里,單片機要進行UART通道切換:指向串口設備接收或發送數據、指向無線設備發送數據。
圖2 程序為不同設備分配的時間示意圖
程序采用中斷方式處理定時、串口的數據接收/發送、鍵盤輸入等過程[9-10]。以中斷方式運行,提高了程序的執行效率。圖3 為定時中斷服務程序流程圖。該水質監測過程,就是循環掃描3個水監測設備,獲取數據并進行無線轉發。
3.4 主要的程序功能模塊說明
串口驅動程序為分析判斷數據來源,并調用相應的函數,完成對不同串口設備的數據接收和發送。將接收到的數據暫時保存于緩存中;將緩存中的數據進行轉發;
定時中斷程序為周期性地切換UART通道,分別連接到外部的3個串口設備上和無線發射模塊上。切換串口通道的同時,調整串口通信參數,以適應不同的串口設備。觸發串口發送過程,將緩存中的數據寫入無線模塊轉發;
INT0中斷服務程序為及時響應鍵盤操作,然后調用相應的函數,完成參數設置等控制任務;顯示程序為控制7279A驅動LED數碼管,顯示系統狀態等信息。
圖3 定時中斷程序流程圖
4 結 語
多串口數據收發控制系統,已應用于水環境監測的數據轉發,工作穩定,數據收發可靠。
本系統為采用一片單片機控制的單核心結構,與采用多核結構相比,盡管只能分時使用UART,但數據協調相對容易,并且在設計時已考慮了數據銜接問題,不會導致數據丟失現象的發生;與采用多串口卡的方案相比,本系統可以脫離計算機獨立工作,因此現場不需要一臺計算機參與數據接收;無線方式數據傳送,傳送距離相對更遠;系統占用資源少,維護成本降低。
該系統還可應用于其他的多串口數據收發場合。經過擴展,可連接的串口數目可以進一步擴大。
參考文獻
[1]謝瑞和.串行技術大全[M].北京:清華大學出版社,2003.
[2]深圳市安美通科技有限公司.APC802-43多通道微功耗嵌入式無線數傳模塊使用手冊[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]李雙慶,丘鷹,王向榮.常用半導體器件簡明手冊[M].北京:電子工業出版社,1989.
[6]比高科技有限公司.HD7279A 數據手冊[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系列單片機開發與C語言編程[M].北京:北京航空航天大學出版社,2005.
[10]趙建領.51系列單片機開發寶典[M].北京:電子工業出版社,2007.