基于STC10F04EX的多串口數(shù)據(jù)收發(fā)系統(tǒng)
掃描二維碼
隨時隨地手機(jī)看文章
引言
RS 232串口通信是一種常用的通信方式,許多數(shù)字化設(shè)備、測量儀器都具有串行接口。這些設(shè)備可以方便地與PC、PLC等控制器連接進(jìn)行數(shù)據(jù)交換,從而組成一個測試檢測/監(jiān)測系統(tǒng)。
目前安裝在江、河、湖等水體現(xiàn)場的不同種類的水環(huán)境監(jiān)測設(shè)備,通過采集水樣,周期性地生成一組數(shù)據(jù)通過串口向外傳送。如果在現(xiàn)場需配置一臺或多臺PC,既不經(jīng)濟(jì),又難以維護(hù)。本文介紹的基于單片機(jī)的多串口數(shù)據(jù)收發(fā)控制系統(tǒng),可以同時連接多臺不同類型的水質(zhì)監(jiān)測設(shè)備,現(xiàn)場接收采集的數(shù)據(jù)并通過無線模塊向遠(yuǎn)端控制中心傳遞,轉(zhuǎn)發(fā)傳送的距離約為3 000 m,遠(yuǎn)遠(yuǎn)大于直接的RS 232互連。多串口數(shù)據(jù)收發(fā)控制系統(tǒng)不同于多串口卡,可以脫離計算機(jī)獨(dú)立工作,是計算機(jī)串口擴(kuò)展、延伸的一種全新方法。
用多串口數(shù)據(jù)收發(fā)控制系統(tǒng)取代計算機(jī)安置于監(jiān)測現(xiàn)場,將來自于不同設(shè)備的數(shù)據(jù)進(jìn)行初步整合,再通過無線方式向遠(yuǎn)離現(xiàn)場的中央控制室進(jìn)行傳送,則監(jiān)測系統(tǒng)的可靠性、實(shí)時性、易維護(hù)性都大為增強(qiá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ù)傳遞給遠(yuǎn)端的中央控制室。
2 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)
2.1 多串口數(shù)據(jù)收發(fā)控制系統(tǒng)工作原理
多串口數(shù)據(jù)收發(fā)控制系統(tǒng),以單片機(jī)STC10F04EX為控制核心,擴(kuò)展出多個全雙工異步串行口(UART),用以同時連接多個外部串口設(shè)備。該系統(tǒng)既可獨(dú)立地與所連接的設(shè)備交換數(shù)據(jù),又能起到數(shù)據(jù)中繼的作用,將來自上位端的命令傳遞到指定的串口設(shè)備上,或?qū)⒔邮盏降膩碜圆煌谠O(shè)備上的數(shù)據(jù)經(jīng)過初步整理后發(fā)送到上位端。
由于要連接多個下位端執(zhí)行設(shè)備,但STC10F04EX的獨(dú)立UART只有一個,因此,必須對該單片機(jī)的UART進(jìn)行擴(kuò)展,才能連接多臺串口設(shè)備。經(jīng)過擴(kuò)展的各路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的單片機(jī)為控制核心,外加7279A鍵盤及數(shù)碼管驅(qū)動電路,TTL-RS232電平轉(zhuǎn)換電路MAX
232,4052雙4選1模擬開關(guān),無線收發(fā)模塊等組成。
STC11F04XE的單片機(jī),以8051為內(nèi)核,并具有以下鮮明特點(diǎn):抗干擾能力強(qiáng),1T周期CPU,獨(dú)立波特率發(fā)生器,2個可切換串口,在系統(tǒng)可編程(ISP),片上擴(kuò)展XRAM等。
單片機(jī)STC10F04EX的UART可在P1口的P1.6/P1.7(UART2)和P3口P3.0/P3.1(UART1)間切換,可以分時當(dāng)2個串口使用,這為調(diào)試系統(tǒng)和擴(kuò)展串口帶來了方便。由于該系列單片機(jī)支持在系統(tǒng)可編程(ISP),因此系統(tǒng)中的UART1通過電平轉(zhuǎn)換電路,直接連接到PC機(jī)的一個串口上,用于對單片機(jī)的程序下載和調(diào)試。單片機(jī)正常工作時,可將串口設(shè)置在UART2上。
采用雙4選1模擬開關(guān)4052,將單片機(jī)的UART2擴(kuò)展為4路。其中,單片機(jī)端的RxD/TxD分別接到4052的公共端,擴(kuò)展端再由MAX232電平變換連接到外部具有串口的測量設(shè)備上。STC10F04EX的2個I/O引腳P1.1,P1.0與4052的通道選擇線B、A分別相連,UART2的具體指向由這2條I/O選擇控制。擴(kuò)展的串口只能分時工作,具體分配見表2。
由于連接的不同串口設(shè)備的通信參數(shù)不完全相同,STC10F04EX必須根據(jù)設(shè)備指向動態(tài)調(diào)整串口參數(shù)以適合外部串口設(shè)備。
顯示芯片7279A可以驅(qū)動8位共陰LED數(shù)碼管并可采集64個鍵盤位置信號。該系統(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ù)碼管并對按鍵進(jìn)行監(jiān)控。為了響應(yīng)及時,采用中斷方式響應(yīng)按鍵狀態(tài),因此將KEY連接到P3.2(int0)上。
無線收發(fā)模塊,嵌入高性能射頻芯片,采用高效循環(huán)交織糾檢錯編碼,發(fā)送距離可達(dá)3 000 m。模塊具有TTL電平的UART口,因此可以很方便地與單片機(jī)的一個擴(kuò)展的UART連接。向無線收發(fā)模塊寫入和讀出數(shù)據(jù),與一般的串口操作基本一樣。無線收發(fā)模塊頻點(diǎn)、空中速率、本地串口速率、校驗方式等參數(shù)可以在線設(shè)置或通過廠家提供的程序進(jìn)行設(shè)置。
系統(tǒng)中無線收發(fā)模塊本地串口通信參數(shù)設(shè)為(9 600,8,N,1),數(shù)據(jù)被調(diào)制在434 MHz進(jìn)行發(fā)送和接收,空中速率9 600 b/s,發(fā)射功率100 mW。
該無線收發(fā)模塊,收到數(shù)據(jù)后通常延時幾十到幾百毫秒才發(fā)送,所帶緩存256 B。若本地串口速率大于等于空中速率,則存在數(shù)據(jù)流量問題,可能會出現(xiàn)數(shù)據(jù)溢出導(dǎo)致丟失現(xiàn)象。因此若傳送數(shù)據(jù)超過256 B,要進(jìn)行數(shù)據(jù)分割,插入等待周期,采用分次發(fā)送的方式以避免數(shù)據(jù)丟失。本系統(tǒng)所連接的光譜儀數(shù)據(jù)量較大,因此單片機(jī)接收光譜儀數(shù)據(jù)后再經(jīng)無線轉(zhuǎn)發(fā),要采用分段接收/轉(zhuǎn)發(fā)方式,每次的數(shù)據(jù)量要小于256 B,多次重復(fù),直至全部數(shù)據(jù)。
3 軟件設(shè)計
3.1 有關(guān)寄存器的說明
程序運(yùn)行時首先進(jìn)行初始化設(shè)置,其中涉及到幾個比較特別的寄存器,其定義不同于其他51系列的單片機(jī)。
寄存器AUXR,地址8EH。關(guān)系到獨(dú)立波特率發(fā)生器,STC10F04EX既可以采用定時器1作為波特率發(fā)生器,又可以采用獨(dú)立波特率發(fā)生器以釋放定時器1,見表3說明。
寄存器AUXR1,地址A2H。其中的D7位關(guān)系到單片機(jī)內(nèi)在的串口切換。例如:
3.2 數(shù)據(jù)存儲及轉(zhuǎn)發(fā)
STC10F04EX單片機(jī),內(nèi)部數(shù)據(jù)存儲器為256 B,片上擴(kuò)展的外部數(shù)據(jù)存儲器為256 B,共計512 B,數(shù)據(jù)空間緊湊。程序運(yùn)行中的一些變量需要占用一部分?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ā)送,分批多次傳送。單片機(jī)將UART指向光譜儀,首先向光譜儀發(fā)送命令,指明數(shù)據(jù)來源和傳送的數(shù)據(jù)量(例如200個字節(jié));其次等待光譜儀的響應(yīng)并將傳來的200個字節(jié)的數(shù)據(jù)暫存在所開辟的緩沖區(qū)中;然后再將UART切換至無線模塊通道,將單片機(jī)緩存中的數(shù)據(jù)寫入無線模塊轉(zhuǎn)發(fā)出去;重復(fù)進(jìn)行上述步驟直至接收到光譜儀的全部數(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),在所分配的時間里,單片機(jī)要進(jìn)行UART通道切換:指向串口設(shè)備接收或發(fā)送數(shù)據(jù)、指向無線設(shè)備發(fā)送數(shù)據(jù)。
程序采用中斷方式處理定時、串口的數(shù)據(jù)接收/發(fā)送、鍵盤輸入等過程。以中斷方式運(yùn)行,提高了程序的執(zhí)行效率。圖3為定時中斷服務(wù)程序流程圖。該水質(zhì)監(jiān)測過程,就是循環(huán)掃描3個水監(jiān)測設(shè)備,獲取數(shù)據(jù)并進(jìn)行無線轉(zhuǎn)發(fā)。
3.4 主要的程序功能模塊說明
串口驅(qū)動程序為分析判斷數(shù)據(jù)來源,并調(diào)用相應(yīng)的函數(shù),完成對不同串口設(shè)備的數(shù)據(jù)接收和發(fā)送。將接收到的數(shù)據(jù)暫時保存于緩存中;將緩存中的數(shù)據(jù)進(jìn)行轉(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)等信息。
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)為采用一片單片機(jī)控制的單核心結(jié)構(gòu),與采用多核結(jié)構(gòu)相比,盡管只能分時使用UART,但數(shù)據(jù)協(xié)調(diào)相對容易,并且在設(shè)計時已考慮了數(shù)據(jù)銜接問題,不會導(dǎo)致數(shù)據(jù)丟失現(xiàn)象的發(fā)生;與采用多串口卡的方案相比,本系統(tǒng)可以脫離計算機(jī)獨(dú)立工作,因此現(xiàn)場不需要一臺計算機(jī)參與數(shù)據(jù)接收;無線方式數(shù)據(jù)傳送,傳送距離相對更遠(yuǎn);系統(tǒng)占用資源少,維護(hù)成本降低。
該系統(tǒng)還可應(yīng)用于其他的多串口數(shù)據(jù)收發(fā)場合。經(jīng)過擴(kuò)展,可連接的串口數(shù)目可以進(jìn)一步擴(kuò)大。