多串口船舶導(dǎo)航數(shù)據(jù)轉(zhuǎn)換器的低成本實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
由于接收信號(hào)強(qiáng)弱差別、設(shè)備使用狀況差異等因素,船舶導(dǎo)航過(guò)程中會(huì)出現(xiàn)信號(hào)不穩(wěn)、輸出中斷等問(wèn)題,給船舶導(dǎo)航帶來(lái)極大不便。而電羅經(jīng)和GPS是遠(yuǎn)洋船舶上常用的導(dǎo)航設(shè)備,合理地配合使用這兩種設(shè)備可以有效地增加導(dǎo)航的可靠性。
為實(shí)現(xiàn)電羅經(jīng)和GPS的配合使用,使用單片機(jī)設(shè)計(jì)了一種新型的船舶導(dǎo)航數(shù)據(jù)轉(zhuǎn)換器[1]。在只有一種可靠導(dǎo)航數(shù)據(jù)的情況下,轉(zhuǎn)換器可以實(shí)時(shí)地進(jìn)行兩種數(shù)據(jù)格式的轉(zhuǎn)換,保證電羅經(jīng)和GPS設(shè)備的正常工作,為船舶航行提供可靠導(dǎo)航。
2 串口擴(kuò)展方案比較分析
數(shù)據(jù)轉(zhuǎn)換器有兩個(gè)輸入端,分別與電羅經(jīng)和GPS設(shè)備連接,且均為RS422接口[2]。GPS信號(hào)是標(biāo)準(zhǔn)NMEA-0183格式,并包括兩種語(yǔ)句,其中HDT語(yǔ)句輸出航向信號(hào),ROT語(yǔ)句輸出航向變化率信號(hào)。而電羅經(jīng)信號(hào)只有一種格式,它包括了航向數(shù)據(jù)信號(hào)和航向變化率信號(hào)。
數(shù)據(jù)轉(zhuǎn)換器對(duì)輸入信號(hào)進(jìn)行選擇,當(dāng)輸入信號(hào)為電羅經(jīng)時(shí),轉(zhuǎn)換器將電羅經(jīng)的航向語(yǔ)句直接輸出到接口為RS422的電羅經(jīng)導(dǎo)航設(shè)備終端,同時(shí)將輸入的數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)NMEA-0183格式的HDT與ROT語(yǔ)句數(shù)據(jù)輸出到接口為RS232的GPS導(dǎo)航設(shè)備終端。而輸入信號(hào)為GPS時(shí),轉(zhuǎn)換器將GPS的航向語(yǔ)句直接輸出到接口為RS232的GPS導(dǎo)航設(shè)備終端,同時(shí)將輸入的HDT與ROT數(shù)據(jù)轉(zhuǎn)換為電羅經(jīng)數(shù)據(jù)格式輸出到接口為RS422的電羅經(jīng)導(dǎo)航設(shè)備終端。數(shù)據(jù)轉(zhuǎn)換器的功能框圖如圖1所示。
圖1 數(shù)據(jù)轉(zhuǎn)換器的功能框圖
為實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換,就需要數(shù)據(jù)轉(zhuǎn)換器至少具備三個(gè)標(biāo)準(zhǔn)的UART串口。有多種設(shè)計(jì)方案都能滿(mǎn)足這一要求且不盡相同,成本、指標(biāo)、可靠性等都存在差異。根據(jù)目前的串口器件設(shè)計(jì),歸納起來(lái)主要有以下幾種比較常用的多串口設(shè)計(jì)方案[3]。
(1) 多串口單片機(jī)。其中雙串口的單片機(jī)的價(jià)格在30~70元左右,三串口的單片機(jī)價(jià)格更加昂貴,直接增加了系統(tǒng)設(shè)計(jì)的成本。同時(shí),由于各單片機(jī)的指令不同,以及由于串口功能的擴(kuò)展帶來(lái)的陌生寄存器的使用都增加了設(shè)計(jì)人員的工作量和難度。
(2) 軟件模擬串口。其主要優(yōu)點(diǎn)是成本低,但是可靠性和串口指標(biāo)都無(wú)法控制,存在缺點(diǎn):一是采樣次數(shù)低,一般只能做到2次/BIT,這樣數(shù)據(jù)的正確性就難以保證;二是不能實(shí)現(xiàn)高波特率通訊,軟件模擬串口一般不能實(shí)現(xiàn)高于4800 bps的波特率。
(3) 專(zhuān)用IC器件。使用專(zhuān)用串口擴(kuò)展芯片,例如TI等公司開(kāi)發(fā)的16C554系列串口擴(kuò)展芯片,通過(guò)并行口擴(kuò)展串行口,功能比較強(qiáng)大、通訊速度高;成都國(guó)騰微電子有限公司推出的GM8123/25系列串口擴(kuò)展芯片,通過(guò)串行口擴(kuò)展串行口,可簡(jiǎn)單方便地實(shí)現(xiàn)全硬件擴(kuò)展。但總而言之,串口擴(kuò)展芯片價(jià)格普遍較高。
根據(jù)數(shù)據(jù)轉(zhuǎn)換器的設(shè)計(jì)要求,考慮降低成本,最后選取可通過(guò)RS232接口在線(xiàn)編程的飛利浦單片機(jī)P89C669作為數(shù)據(jù)轉(zhuǎn)換的主處理器。并充分利用P89C669豐富的IO口,通過(guò)AT89C2051來(lái)擴(kuò)展數(shù)據(jù)轉(zhuǎn)換器所需要的第三個(gè)串口,以低成本實(shí)現(xiàn)了串口擴(kuò)展[4]。
3 UART的低成本實(shí)現(xiàn)方案
3.1 單片機(jī)IO口的分配、連線(xiàn)
P89C669[5]是基于Philips半導(dǎo)體新51MX(存儲(chǔ)器擴(kuò)展)內(nèi)核的Flash微控制器代表。它包含96k字節(jié)的Flash程序存儲(chǔ)器、2k字節(jié)的片內(nèi)數(shù)據(jù)RAM、1個(gè)可編程計(jì)數(shù)器陣列(PCA)、可配置成不同時(shí)間范圍的看門(mén)狗定時(shí)器(通過(guò)SFR的位設(shè)置)、2個(gè)增強(qiáng)型UART以及字節(jié)型I2C總線(xiàn)串行接口等。
P89C669主要實(shí)現(xiàn)電羅經(jīng)和GPS信號(hào)數(shù)據(jù)的接收、轉(zhuǎn)換和發(fā)送,AT89C2051主要用來(lái)擴(kuò)展串口[5],具體的IO分配如下。AT89C2051的P1口與P89C669的P0口相連,作為數(shù)據(jù)通信總線(xiàn);單片機(jī)AT89C2051的P3.3引腳接P89C669的P3.2引腳,作為AT89C2051向P89C669的發(fā)送請(qǐng)求信號(hào)( );AT89C2051的P3.2引腳接P89C669的P2.7引腳,作為P89C669向AT89C2051請(qǐng)求中斷的控制信號(hào);AT89C2051的P3.4引腳接P89C669的P2.6引腳,作為P89C669對(duì)AT89C2051讀寫(xiě)操作的控制信號(hào)( );AT89C2051的P3.5引腳接P89C669的P2.5引腳,作為P89C669向AT89C2051寫(xiě)入指令或數(shù)據(jù)的控制信號(hào)( )。AT89C2051與P89C669之間的連接圖如圖2所示。
500)this.style.width=500;" border="0" />
圖2 P89C669與AT89C2051的硬件連接圖
3.2 單片機(jī)P89C669與AT89C2051通信程序的設(shè)計(jì)
單片機(jī)P89C669與AT89C2051之間的數(shù)據(jù)通信流程圖如圖3所示,具體實(shí)現(xiàn)如下。
(1) P89C669方面
① P89C669發(fā)送數(shù)據(jù)。首先,程序初始化后P89C669將AT89C2051有關(guān)的晶振信息、波特率等參數(shù)以命令字形式傳送給AT89C2051,AT89C2051接收后查表求解進(jìn)行串口波特率設(shè)置。然后P89C669將接收完畢的數(shù)據(jù)存入緩沖區(qū),并檢測(cè) 引腳,若為高電平則等待,直到變?yōu)榈碗娖綍r(shí)通過(guò)并口將數(shù)據(jù)傳給AT89C2051。在AT89C2051將接收緩沖區(qū)數(shù)據(jù)發(fā)送出去的同時(shí)檢測(cè)緩沖區(qū),如果緩沖區(qū)不滿(mǎn)則將 引腳置低,反之則高。
② P89C669接收數(shù)據(jù)。AT89C2051接收到數(shù)據(jù)后用 引腳產(chǎn)生邊沿信號(hào)向P89C669發(fā)出請(qǐng)求,P89C669收到請(qǐng)求信號(hào)后執(zhí)行讀取數(shù)據(jù)程序。
圖3 P89C669方面的程序流程圖
(2) AT89C2051方面
AT89C2051是作為IC芯片用來(lái)進(jìn)行串口擴(kuò)展的,在初始化階段接收上位機(jī)傳來(lái)的數(shù)據(jù)進(jìn)行初始化設(shè)置,然后循環(huán)等待接收上位機(jī)發(fā)送的數(shù)據(jù)[6]。AT89C2051將并口傳來(lái)的數(shù)據(jù)存在并口接收緩沖區(qū),并復(fù)制到串口發(fā)送緩沖區(qū),激活串口使用中斷方式發(fā)送;將串口傳來(lái)的數(shù)據(jù)存在串口接收緩沖區(qū),并復(fù)制到并口發(fā)送緩沖區(qū),同時(shí)改變 的電位,向上位機(jī)發(fā)出請(qǐng)求。在船舶導(dǎo)航數(shù)據(jù)轉(zhuǎn)換器中,AT89C2051主要是用來(lái)串口發(fā)送電羅經(jīng)信號(hào),它與P89C669的通信流程圖如圖4所示。
4 結(jié)束語(yǔ)
文中應(yīng)用AT89C2051擴(kuò)展串口后,系統(tǒng)共有三個(gè)串行口。其中,一個(gè)串口用來(lái)選擇接收電羅經(jīng)或者GPS信號(hào)用以數(shù)據(jù)轉(zhuǎn)換;一個(gè)串口經(jīng)過(guò)MAX3232實(shí)現(xiàn)TTL電平與RS-232電平轉(zhuǎn)換后可連接微機(jī)的串行口,從而簡(jiǎn)單方便地實(shí)現(xiàn)單片機(jī)P89C669的在線(xiàn)編程,它同時(shí)也作為GPS信號(hào)的輸出接口;另一個(gè)串口主要用來(lái)輸出電羅經(jīng)信號(hào)。
該電路與采用專(zhuān)用芯片的電路相比,并不復(fù)雜,而且編程設(shè)計(jì)較簡(jiǎn)單,綜合考慮是一種比較經(jīng)濟(jì)實(shí)用的低成本設(shè)計(jì)方法。
創(chuàng)新點(diǎn):
文章本著低成本的指導(dǎo)思想進(jìn)行設(shè)計(jì)。首先,選用可在線(xiàn)編程的P89C669單片機(jī)為主處理器,省去編程器,降低了成本;其次,采用價(jià)格便宜的AT89C2051單片機(jī)與充分利用P89C669單片機(jī)豐富的IO口進(jìn)行串口擴(kuò)展。最終,實(shí)現(xiàn)了多串口船舶導(dǎo)航數(shù)據(jù)轉(zhuǎn)換器的低成本實(shí)現(xiàn)。