??? 摘 要:在分析串口擴(kuò)展原理及現(xiàn)有串口擴(kuò)展方法的基礎(chǔ)上,,提出了一種用單片機(jī)作為擴(kuò)展模塊主控部分,將嵌入式多參數(shù)監(jiān)護(hù)儀的串口由1個(gè)擴(kuò)展為4個(gè)的雙向透明設(shè)計(jì)方案,。經(jīng)驗(yàn)證,,該方案通信可靠,波特率滿足系統(tǒng)要求,,對串口擴(kuò)展及其他接口設(shè)計(jì)均有一定的啟迪作用和實(shí)際參考價(jià)值,。
??? 關(guān)鍵詞:串口擴(kuò)展;雙向,;透明,;多參數(shù)監(jiān)護(hù)儀
?
??? 嵌入式多參數(shù)監(jiān)護(hù)儀系統(tǒng)中一般包括多個(gè)獨(dú)立的硬件采集模塊,每個(gè)硬件采集模塊分別完成對人體的心電,、呼吸率,、體溫、血壓和血氧飽和度等生理參數(shù)的采集,,并通過其串口接收HOST端的控制信息,,定時(shí)向HOST端發(fā)送采集數(shù)據(jù)。
??? 本嵌入式多參數(shù)監(jiān)護(hù)儀HOST端使用AT91RM9200處理器,,該處理器具有4個(gè)通用同步/異步接收/發(fā)送器(USART),,其中一個(gè)是DEBUG串口,但它們都是分時(shí)復(fù)用的[1]。為了使HOST端更好地與各采集模塊進(jìn)行通信,,必須解決其串口擴(kuò)展的問題,。
??? 目前比較通用的串口擴(kuò)展方案主要有2種。一種通過硬件實(shí)現(xiàn),,使用多串口ARM/MCU或?qū)S?a class="innerlink" href="http://forexkbc.com/tags/串口擴(kuò)展芯片" title="串口擴(kuò)展芯片" target="_blank">串口擴(kuò)展芯片,,可供選擇的串口擴(kuò)展芯片有TI公司開發(fā)的16C55X系列串口擴(kuò)展芯片和國騰公司開發(fā)的GM812X系列串口擴(kuò)展芯片等。TI公司的16C55X系列芯片通過并行口擴(kuò)展串行口,,功能比較強(qiáng)大,、通信速度高,,但控制復(fù)雜,,同時(shí)價(jià)格較高,主要應(yīng)用于PC機(jī)串口擴(kuò)展,。另一種串口擴(kuò)展方案通過軟件實(shí)現(xiàn),,但用軟件模擬串口存在缺點(diǎn):(1)采樣次數(shù)低,一般只能做到2次/bit,,這樣,,數(shù)據(jù)的正確性就難以保證,;(2)不能實(shí)現(xiàn)高波特率通信,軟件模擬串口一般不能實(shí)現(xiàn)高于4 800 b/s的波特率[2-3],。
??? 不管是采用硬件還是軟件方案,,大多數(shù)串口擴(kuò)展產(chǎn)品幾乎都是單向傳輸,不夠透明化[4-7],。本文根據(jù)參與的多參數(shù)監(jiān)護(hù)儀項(xiàng)目的需要,,提出一種雙向透明的串口擴(kuò)展設(shè)計(jì)方案,并通過了實(shí)驗(yàn)驗(yàn)證,。
1硬件設(shè)計(jì)
1.1串口擴(kuò)展模塊拓?fù)鋱D
??? 在設(shè)計(jì)中,,串口擴(kuò)展模塊可以外接4個(gè)用戶設(shè)備,每個(gè)用戶設(shè)備都可以在與HOST端進(jìn)行雙向數(shù)據(jù)傳輸,,采用分時(shí)復(fù)用技術(shù),,即在任一時(shí)刻,最多僅有一個(gè)串口與HOST端連接,,串口擴(kuò)展模塊負(fù)責(zé)4個(gè)通道的切換/選擇,。雙方通過硬件和軟件機(jī)制進(jìn)行仲裁。如圖1所示,。
?
1.2硬件設(shè)計(jì)方案
??? 串口擴(kuò)展模塊主要由2部分組成:單片機(jī)AT89C2051及模擬開關(guān)CD4052,、雙4通道模擬開關(guān)。
??? 串口擴(kuò)展模塊拓?fù)浣Y(jié)構(gòu)圖如圖2所示,,其中虛線框內(nèi)為串口擴(kuò)展模塊的主要部分,。
?
?
2 通信協(xié)議設(shè)計(jì)
2.1數(shù)據(jù)由用戶設(shè)備發(fā)送到HOST端
??? 由于各模塊是分時(shí)復(fù)用的,為了避免用戶設(shè)備之間發(fā)生競爭,,需要AT89C2051對4個(gè)用戶設(shè)備通道進(jìn)行仲裁,,本文采用以下方案。
??? 4個(gè)用戶設(shè)備各用一根I/O口線分別與AT89C2051的P1.0~P1.3引腳相連,,同時(shí)還與一個(gè)4輸入或非門相連,,將某根或某幾根I/O口線置高電平并經(jīng)過該4輸入或非門來觸發(fā)中斷,通知AT89C2051有用戶設(shè)備請求向HOST終端發(fā)送數(shù)據(jù),,同時(shí)AT89C2051進(jìn)行用戶設(shè)備號查詢,。AT89C2051收到請求信號后,首先判斷HOST端與其他用戶設(shè)備之間的數(shù)據(jù)發(fā)送是否結(jié)束,,若結(jié)束,,則根據(jù)仲裁機(jī)制通過與各用戶設(shè)備相連的P1.4~P1.7引腳置高給出應(yīng)答響應(yīng)信號,同時(shí)AT89C2051根據(jù)中斷查詢到的用戶設(shè)備號對P3.4和P3.5引腳進(jìn)行設(shè)置來控制CD4052模擬開關(guān)選通對應(yīng)通道,,用戶設(shè)備收到應(yīng)答響應(yīng)信號后就開始發(fā)送數(shù)據(jù),;若未結(jié)束,則屏蔽此次中斷,直到數(shù)據(jù)發(fā)送結(jié)束才開中斷,。用戶設(shè)備數(shù)據(jù)發(fā)送結(jié)束時(shí)則將通過一個(gè)4輸入或非門來觸發(fā)中斷,,通知AT89C2051此次數(shù)據(jù)發(fā)送結(jié)束。在響應(yīng)數(shù)據(jù)發(fā)送請求時(shí)會涉及到多個(gè)用戶設(shè)備請求,,從而需要AT89C2051進(jìn)行仲裁,。仲裁機(jī)制如下:心電和血氧模塊是50 ms定時(shí)發(fā)送數(shù)據(jù),而血壓模塊需要HOST端發(fā)來啟動測量命令后才向HOST端發(fā)送血壓數(shù)據(jù),,因此需要將血壓模塊發(fā)送數(shù)據(jù)的請求設(shè)置為較高優(yōu)先級,,才能保證血壓數(shù)據(jù)正確及時(shí)地發(fā)送到HOST端,而心電和血氧模塊設(shè)置為低優(yōu)先級輪流發(fā)送,。
2.2數(shù)據(jù)由HOST端發(fā)送到用戶設(shè)備
??? 為了使HOST端的數(shù)據(jù)能夠及時(shí)準(zhǔn)確地發(fā)送到各個(gè)用戶設(shè)備,,就需要和AT89C2051之間定義好通信協(xié)議。其協(xié)議如下,。
??? AT89C2051始終監(jiān)視HOST終端發(fā)出的信息,,一旦收到HOST終端發(fā)出的串口選擇命令,如表1所示,,立即對P3.4和P3.5引腳進(jìn)行設(shè)置來控制CD4052模擬開關(guān)選通對應(yīng)通道并控制相應(yīng)的LED燈以作指示,。串口選擇后, HOST終端需要根據(jù)AT89C2051指令執(zhí)行和模擬開關(guān)切換時(shí)間延遲一定時(shí)間后再開始向?qū)?yīng)用戶設(shè)備發(fā)送數(shù)據(jù)/命令,。HOST端數(shù)據(jù)發(fā)送結(jié)束則由接收端的用戶設(shè)備向AT89C2051發(fā)送中斷結(jié)束信號,,其結(jié)束處理與數(shù)據(jù)由用戶設(shè)備發(fā)送到HOST端的結(jié)束處理相同。如果同時(shí)有用戶設(shè)備向AT89C2051請求發(fā)送數(shù)據(jù)到HOST端,,則優(yōu)先響應(yīng)HOST端的發(fā)送數(shù)據(jù)/命令請求,,即HOST端的發(fā)送數(shù)據(jù)/命令請求的優(yōu)先級最高。
?
??? 本文在設(shè)計(jì)中將HOST端的TXD引腳連接到AT89C2051的RXD引腳,,這樣就可以通過AT89C2051的串口接收中斷和HOST端通信,, HOST端發(fā)送數(shù)據(jù)/命令時(shí)首先發(fā)送串口選擇命令字,其次再發(fā)送數(shù)據(jù)/命令去控制用戶設(shè)備的數(shù)據(jù)采集,,例如增益大小,、是否啟動血壓測量等命令。
3軟件設(shè)計(jì)
??? 軟件設(shè)計(jì)分為主函數(shù),、串口中斷服務(wù)程序,、外部中斷0和1服務(wù)程序4個(gè)部分,如圖3所示,。
?
??? 在很多場合需要進(jìn)行串口擴(kuò)展以滿足系統(tǒng)集成多個(gè)串口設(shè)備,,擴(kuò)展方法很多,各有優(yōu)缺點(diǎn),。本文提出的用單片機(jī)AT89C2051為AT91RM9200擴(kuò)展串口的方案是基于單片機(jī)價(jià)格低廉,、體積小,,完全可以替代一般的專用接口芯片,,作為真正意義上的可編程接口,,實(shí)現(xiàn)雙向通信,使串口擴(kuò)展模塊變得透明,。這種方案使用靈活,,與一般接口芯片相比對外部用戶設(shè)備具有更好的適用性,經(jīng)實(shí)驗(yàn)驗(yàn)證達(dá)到了設(shè)計(jì)目標(biāo),。將單片機(jī)等同于普通接口芯片使用,,是一種新思路,具有一定的啟迪作用和實(shí)際參考價(jià)值,。
參考文獻(xiàn)
[1]? AT91RM9200 datasheet.http://www.atmel.com/dyn/resources/prod_documents/doc1768.pdf.2008.
[2]? 顏坤.多串口船舶導(dǎo)航數(shù)據(jù)轉(zhuǎn)換器的低成本實(shí)現(xiàn)[J]. 微計(jì)算機(jī)信息,,2006,22(8-2):106-108.
[3]? 胡勇,丁萬山.多串口擴(kuò)展解決方案[J].計(jì)算機(jī)應(yīng)用,,2005,20(5):63-65.
[4]? 王海衛(wèi).一種新的可重配置的串口擴(kuò)展方案[J].計(jì)算機(jī)應(yīng)用研究,,2001,18(12):101-103.
[5]? 劉小芳.單片機(jī)的多串口擴(kuò)展技術(shù)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2004,12(11):1088-1090.
[6]? 金蒙,,王立勝.嵌入式設(shè)備串口擴(kuò)展的兩種解決方案[J].微計(jì)算機(jī)信息,,2005,21(11-2):39-40.
[7]? 張聞捷,唐琎.基于嵌入式處理器EP9312的多串口擴(kuò)展[J].計(jì)算機(jī)測量與控制,,2007,15(8):1063-1066.