国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

串口擴(kuò)展芯片XR16L784在水文監(jiān)測(cè)系統(tǒng)中的應(yīng)用

2016-11-17 10:12王心鵬門雅彬顧季源李永軍
關(guān)鍵詞:銥星寄存器中斷

王心鵬,門雅彬,顧季源,李永軍

(國家海洋技術(shù)中心,天津 300112)

?

串口擴(kuò)展芯片XR16L784在水文監(jiān)測(cè)系統(tǒng)中的應(yīng)用

王心鵬,門雅彬,顧季源,李永軍

(國家海洋技術(shù)中心,天津 300112)

為了解決系統(tǒng)設(shè)計(jì)中單片機(jī)串口數(shù)量較少不能同時(shí)滿足多路串行通信的問題,通過對(duì)現(xiàn)有串口擴(kuò)展技術(shù)進(jìn)行對(duì)比分析,并針對(duì)水文監(jiān)測(cè)系統(tǒng)的應(yīng)用需求,提出了基于芯片XR16L784完成串口擴(kuò)展的設(shè)計(jì)方案;介紹了串口擴(kuò)展芯片XR16L784的硬件設(shè)計(jì)和軟件編程的具體實(shí)現(xiàn)方法,并在水文監(jiān)測(cè)系統(tǒng)上進(jìn)行了實(shí)驗(yàn)驗(yàn)證;結(jié)果表明:串口擴(kuò)展芯片XR16L784可有效實(shí)現(xiàn)多個(gè)串口擴(kuò)充,擴(kuò)充后的串口通道能夠在不同波特率下穩(wěn)定、可靠實(shí)現(xiàn)數(shù)據(jù)雙向傳輸;串口擴(kuò)展方案解決了在多路串行通信系統(tǒng)中系統(tǒng)主控單元串口數(shù)量有限的問題,在水文監(jiān)測(cè)系統(tǒng)中體現(xiàn)出很好的實(shí)用價(jià)值。

串口擴(kuò)展;水文監(jiān)測(cè);RS232;XR16L784

0 引言

海洋的水體溫度、電導(dǎo)率、深度是研究海洋不同水層水文信息的3個(gè)基本物理量,根據(jù)以上參數(shù)可計(jì)算出海水密度、聲速等其它各種物理參數(shù),這些數(shù)據(jù)可用于研究海水的物理化學(xué)性質(zhì)、水層結(jié)構(gòu)和水團(tuán)運(yùn)動(dòng)狀況,對(duì)研究海洋水文信息具有重要意義,因此對(duì)其監(jiān)測(cè)十分重要[1]。水文監(jiān)測(cè)系統(tǒng),可完成對(duì)海水溫度、電導(dǎo)率、深度的實(shí)時(shí)監(jiān)測(cè),其工作原理如下:系統(tǒng)通過溫度和電導(dǎo)率傳感器對(duì)水文數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,使用GPS模塊獲取位置信息,將采集的數(shù)據(jù)與時(shí)間、經(jīng)緯度信息打包成數(shù)據(jù)幀,在一定周期內(nèi)按照設(shè)定的工作模式通過數(shù)傳電臺(tái)或銥星通信方式向外發(fā)送。系統(tǒng)可設(shè)定為近岸或離岸模式,近岸模式下用戶可通過數(shù)傳電臺(tái)接收數(shù)據(jù)并可向系統(tǒng)發(fā)送控制指令,離岸模式下用戶可使用銥星通信方式通過Email接收數(shù)據(jù)[2-3],其工作原理如圖1所示。該系統(tǒng)以C8051F020單片機(jī)為主控芯片,在系統(tǒng)平臺(tái)上集成了溫度及電導(dǎo)率傳感器、銥星通信模塊、GPS模塊、數(shù)傳電臺(tái)和PC通訊等異步串行通信設(shè)備,其中PC通訊用于系統(tǒng)使用前的外部自檢。由圖1可知,系統(tǒng)共需要6個(gè)串口。由于單片機(jī)自身只有2個(gè)UART接口,遠(yuǎn)不能滿足系統(tǒng)設(shè)計(jì)需求,因此需要對(duì)串口進(jìn)行擴(kuò)展。

圖1 水文監(jiān)測(cè)系統(tǒng)原理框圖

圖2 串口擴(kuò)展芯片連接框圖

串口擴(kuò)展是根據(jù)系統(tǒng)設(shè)計(jì)的需要,將原有串口擴(kuò)展為多個(gè)同類型或不同類型(RS232、RS422、RS485)的串口,以便與不同接口的計(jì)算機(jī)或設(shè)備進(jìn)行串行通信。常用的串口擴(kuò)展方法有軟件模擬法[4]和硬件法[5-6],軟件模擬法可根據(jù)串行通訊的傳送格式,利用定時(shí)器和主機(jī)的I/O口來模擬串行通訊時(shí)序,達(dá)到擴(kuò)展串口的目的。但其具有一定局限性:1)不能實(shí)現(xiàn)高波特率通訊時(shí)的可靠數(shù)據(jù)傳輸;2)串口擴(kuò)展在數(shù)量上難以保證。硬件法通常指在電路設(shè)計(jì)時(shí)使用專用擴(kuò)展芯片,該方法通過對(duì)芯片進(jìn)行編程實(shí)現(xiàn)多路串口擴(kuò)展,具有工作穩(wěn)定、實(shí)時(shí)性好、可靠性高等特點(diǎn)。這里選用EXAR公司生產(chǎn)的XR16L784芯片,通過合理搭建外圍電路并編寫配置程序,實(shí)現(xiàn)多路串口擴(kuò)展的功能,該電路可移植性高、串口擴(kuò)展能力強(qiáng)、便于配置。

1 串口擴(kuò)展芯片XR16L784功能介紹

1.1 芯片簡(jiǎn)介

XR16L784芯片是一款四通道通用異步收發(fā)器,能夠滿足通信系統(tǒng)中的高帶寬需求。它具有的全局中斷源寄存器為4個(gè)通道提供了完備的中斷狀態(tài)指示,每個(gè)UART通道都具有與16C550兼容的配置寄存器組、64字節(jié)發(fā)送和接收FIFO、可編程發(fā)送和接收FIFO級(jí)觸發(fā)器和計(jì)數(shù)器,RTS/ CTS或DTR/ DSR與可編程遲滯自動(dòng)硬件流控制、自動(dòng)軟件(XON / XOFF)流控制、紅外數(shù)據(jù)編碼器/解碼器以及一個(gè)16位通用定時(shí)器/計(jì)數(shù)器。該芯片具有軟件或硬件復(fù)位、UART通道選擇、同步向所有通道寫數(shù)據(jù)、中斷輸出、晶振設(shè)置、可編程波特率生成器、自動(dòng)485半雙工流控制、紅外模式、帶有喚醒指示的休眠模式等功能,能夠滿足硬件設(shè)計(jì)的各種需求[7]。

1.2 芯片寄存器介紹

XR16L784芯片集成了四通道增強(qiáng)型16550UART,一個(gè)通知16位定時(shí)器/計(jì)數(shù)器和片上振蕩器。芯片的配置寄存器組包括4個(gè)連續(xù)的中斷源寄存器,可提供4個(gè)UARTS的中斷狀態(tài)。每個(gè)UART通道具有用于自身的運(yùn)行控制、狀態(tài)報(bào)告、數(shù)據(jù)傳輸?shù)呐渲眉拇嫫?,這些寄存器被映射到具有256字節(jié)的數(shù)據(jù)存儲(chǔ)器地址空間,可由數(shù)據(jù)總線直接訪問。表1給出了一些常用寄存器的介紹。

表1 常用寄存器功能介紹

2 芯片外圍電路硬件設(shè)計(jì)

由于系統(tǒng)需要較強(qiáng)的控制和數(shù)據(jù)處理能力,因此需要選用性能穩(wěn)定且軟件開發(fā)過程中難度低的MCU,經(jīng)對(duì)比選型最終選用Silicon Laboratories公司的高性能微控制器C8051F020作為主控芯片。它具有與8051兼容的CIP-51微控制器內(nèi)核,是完整的混合信號(hào)片上系統(tǒng)SoC芯片[8]。使用兩片MAXIM公司生產(chǎn)的MAX3232芯片完成四路收發(fā)數(shù)據(jù)的TTL電平與RS232電平轉(zhuǎn)換,并將其與4個(gè)數(shù)據(jù)接口相連接,其硬件框圖如圖2所示。

C8051F020單片機(jī)具有豐富的IO資源和處理能力,選擇P6和P7端口作為XR16L784芯片的數(shù)據(jù)和地址總線,為XR16L784的數(shù)據(jù)讀寫和尋址所用。將XR16L784芯片的INT引腳與單片機(jī)的中斷引腳P1.0相連,當(dāng)單片機(jī)檢測(cè)到中斷信號(hào)時(shí)能夠進(jìn)入相應(yīng)的中斷服務(wù)程序,將RST引腳與一個(gè)IO口相連以滿足芯片的復(fù)位需要,將IOR和IOW與單片機(jī)的P4.6和P4.7(RD和WR)引腳相連以控制芯片實(shí)時(shí)讀寫狀態(tài),片選引腳CS在使用時(shí)由單片機(jī)進(jìn)行控制。由于本設(shè)計(jì)中不會(huì)使用芯片的紅外模式,因此將ENIR引腳接低電平。將18/68引腳連接高電平使芯片工作在INTEL接口模式下。選用頻率為1.843 2 MHz的晶振作為芯片外部時(shí)鐘輸入,其電路連接如圖3所示。

圖3 串口擴(kuò)展芯片外圍電路

3 芯片軟件設(shè)計(jì)

為了能充分利用芯片的4個(gè)UART通道,保證可靠穩(wěn)定的數(shù)據(jù)傳輸,需要對(duì)單片機(jī)編程[9-10]以完成對(duì)串口擴(kuò)展芯片的配置。

3.1 芯片初始化

1) 通過在RST引腳上加一個(gè)超過100 ms的低脈沖信號(hào)來實(shí)現(xiàn)XR16L784芯片的硬件可靠復(fù)位,此時(shí)其內(nèi)部各寄存器均恢復(fù)至缺省狀態(tài);

2)選擇外部時(shí)鐘作為芯片的時(shí)鐘源,設(shè)置數(shù)據(jù)傳輸波特率;

3)對(duì)LCR寄存器配置設(shè)置收發(fā)的字節(jié)長(zhǎng)度為8位且無校驗(yàn)位;

4)配置FCTR寄存器選擇觸發(fā)表,通過RXTRG和TXTRG寄存器設(shè)置觸發(fā)級(jí),這里將其設(shè)為16個(gè)字節(jié);

6)設(shè)置FCR寄存器使能發(fā)送和接收FIFO,配置IER寄存器使能發(fā)送空中斷和接收中斷;

7)配置TIMERMSB和TIMERLSB寄存器以設(shè)定定時(shí)器初始值,通過TIMERCNTL寄存器實(shí)現(xiàn)定時(shí)器的開啟和關(guān)斷。在實(shí)際應(yīng)用中,利用定時(shí)器可對(duì)每個(gè)UART通道是否正常收發(fā)數(shù)據(jù)做出判斷。

3.2 中斷服務(wù)程序

XR16L784芯片INT引腳上的電平狀態(tài)如表2所示,單片機(jī)通過其外部中斷引腳響應(yīng)該信號(hào),從而進(jìn)入圖4所示的XR16L784中斷服務(wù)程序。

表2 XR16L784芯片INT引腳電平狀態(tài)表

程序的執(zhí)行過程如下:

1)通過XR16L784芯片內(nèi)部的INT0、INT1、INT2寄存器狀態(tài)判斷本次中斷的類型; UART中斷或定時(shí)器中斷;

2)若為UART中斷,則判斷中斷的UART通道編號(hào)和類型,即接收或發(fā)送中斷;

3)接收中斷的處理流程:首先讀取LSR寄存器清除該中斷,然后讀取RXCNT寄存器以獲得接收FIFO中字節(jié)數(shù),最后將RHR中的每字節(jié)數(shù)據(jù)依次存入接收緩沖區(qū)中;

4)發(fā)送中斷的處理流程:首先讀取ISR寄存器清除該中斷,然后將待發(fā)送緩沖區(qū)中的數(shù)據(jù)依次寫入該通道的THR寄存器,當(dāng)數(shù)據(jù)量超過FIFO中的設(shè)定值時(shí)停止寫入;

5)當(dāng)確認(rèn)4個(gè)UART通道均沒有發(fā)送或接收中斷時(shí),跳出UART中斷循環(huán)。若本次中斷為定時(shí)器中斷,則程序完成相應(yīng)的定時(shí)計(jì)數(shù)操作。

6)待確認(rèn)沒有中斷信號(hào)后,本次中斷服務(wù)程序結(jié)束并返回主程序。

圖4 中斷服務(wù)程序軟件流程圖

3.3 中斷服務(wù)程序軟件代碼

void XR16L784_isr(void)

{

uchar temp_reg, int0_reg,int1_reg,int2_reg;

//讀取INT0、INT1、INT2寄存器的狀態(tài)

int0_reg=XR16L784_INT0; int1_reg=XR16L784_INT1; int2_reg=XR16L784_INT2;

EX0=0;//關(guān)閉單片機(jī)外部中斷

while(int0_reg) //UART中斷

{

if(int0_reg&0x01) { // UART0通道中斷

switch(int1_reg&0x07) { //判斷中斷類型

case 1: case 2: //接收中斷

LSR_PORT(0);//讀ISR清除中斷,其中0表示UART通道編號(hào)

temp_reg=RXCNT_PORT(0);//讀取FIFO中的數(shù)據(jù)數(shù)量

while(temp_reg) {//將FIFO中的數(shù)據(jù)依次存入接收緩沖區(qū)

temp_reg--; buffer_rx0[rx0_start]=RHR_PORT(0);

rx0_start++; rx0_start%=RX0_SIZE; } break;

case 3: //發(fā)送中斷

ISR_PORT(0); //讀ISR清除TXRDY中斷

temp_reg=0;

while(tx0_start!=tx0_end) {

THR_PORT(0)=buffer_tx0[tx0_end];//發(fā)送緩沖區(qū)數(shù)據(jù)寫入THR

tx0_end++; tx0_end%=TX0_SIZE; temp_reg++;

if(temp_reg>16) break; } //數(shù)據(jù)量超過FIFO中設(shè)定值時(shí)停止寫入

break;

default: break;}

}

// UART1、UART2、UART3收發(fā)數(shù)據(jù)代碼與UART0形式一致

int0_reg=XR16L784_INT0; int1_reg=XR16L784_INT1; int2_reg=XR16L784_INT2; }

if((int1_reg&0x07)==0x07) { //定時(shí)器中斷

XR16L784_TIME_CTRL; //清除定時(shí)器中斷

//完成相應(yīng)的定時(shí)計(jì)數(shù)操作

if(uart0_counter != 0) uart0_counter--; if(uart1_counter != 0) uart1_counter--;

if(uart2_counter != 0) uart2_counter--; if(uart3_counter != 0) uart3_counter--; }

EX0=1; //打開單片機(jī)外部中斷

}

4 系統(tǒng)測(cè)試結(jié)果及分析

在水文監(jiān)測(cè)系統(tǒng)設(shè)計(jì)中,將溫度和電導(dǎo)率傳感器與單片機(jī)自身的兩個(gè)UART通道相連,將銥星通信模塊、GPS模塊、數(shù)傳電臺(tái)、PC通訊分別與硬件設(shè)計(jì)中的接口1至4相連,通過芯片的UART0至UART3通道實(shí)現(xiàn)與MCU的雙向數(shù)據(jù)傳輸。數(shù)據(jù)幀格式由測(cè)試系統(tǒng)標(biāo)號(hào)、幀標(biāo)號(hào)、溫度數(shù)據(jù)、電導(dǎo)率數(shù)據(jù)、緯度、經(jīng)度、時(shí)間信息七部分組成,發(fā)送周期依工作模式而定。將相應(yīng)UART通道的計(jì)時(shí)時(shí)間設(shè)定為2分鐘,若在該時(shí)間內(nèi)未收到數(shù)據(jù)傳輸則認(rèn)為通道故障,需對(duì)串口擴(kuò)展芯片重新復(fù)位。

在自檢模式下PC會(huì)向系統(tǒng)的MCU發(fā)送特定指令,系統(tǒng)收到該指令后回傳應(yīng)答數(shù)據(jù)以表示其工作狀態(tài);在近岸工作模式下,系統(tǒng)將采集的數(shù)據(jù)通過數(shù)傳電臺(tái)直接傳輸至岸邊接收設(shè)備,接收設(shè)備也可通過發(fā)送指令對(duì)系統(tǒng)采集發(fā)送實(shí)測(cè)數(shù)據(jù)的周期進(jìn)行調(diào)整;在離岸模式下,系統(tǒng)將采集的數(shù)據(jù)通過銥星模塊以小時(shí)為周期發(fā)送給銥星,銥星轉(zhuǎn)發(fā)數(shù)據(jù)后通過電子郵件方式傳輸給用戶。系統(tǒng)在各種工作狀態(tài)下的數(shù)據(jù)收發(fā)情況如表3所示,實(shí)驗(yàn)結(jié)果表明:系統(tǒng)在離岸模式下銥星通信數(shù)據(jù)接收完整,數(shù)據(jù)幀無丟失。系統(tǒng)在近岸模式下可通過數(shù)傳電臺(tái)與近岸控制端進(jìn)行雙向通信,完成數(shù)據(jù)接收及系統(tǒng)遠(yuǎn)程設(shè)定,但其偶有數(shù)據(jù)丟失的現(xiàn)象,經(jīng)合理分析原因?yàn)闊o線通信鏈路上的電磁環(huán)境變化所致。由此可見,通過使用增加硬件專用芯片來實(shí)現(xiàn)串口擴(kuò)展的方式,系統(tǒng)工作正常穩(wěn)定,在不同波特率下均能正常完成數(shù)據(jù)雙向傳輸、效果較好。

表3 水文監(jiān)測(cè)系統(tǒng)工作情況

5 結(jié)語

由于使用了專用串口擴(kuò)展芯片,并采用中斷方式設(shè)計(jì)該部分電路,系統(tǒng)單片機(jī)在處理多路UART數(shù)據(jù)時(shí)并沒有耗費(fèi)過多的內(nèi)部資源,從而保證了設(shè)備工作運(yùn)行的實(shí)時(shí)性與可靠性,水文監(jiān)測(cè)系統(tǒng)在實(shí)際應(yīng)用中能夠高效穩(wěn)定的完成測(cè)量功能。由于應(yīng)用的要求,本文只給出了RS-232通信的實(shí)例,通過對(duì)寄存器進(jìn)行相應(yīng)設(shè)置,并且使用RS-232轉(zhuǎn)RS-422 /RS485的轉(zhuǎn)換芯片也可實(shí)現(xiàn)RS-422 /RS485通信。本文中論述的采用XR16L784擴(kuò)展串口的硬件及軟件設(shè)計(jì)方法為串口需求量大、可靠性要求高的系統(tǒng)設(shè)計(jì)提供了良好的解決方案和參考設(shè)計(jì)。

[1] 李 真, 艾 波, 陶華學(xué). 基于GIS的海洋水文信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 海洋地質(zhì)動(dòng)態(tài), 2007, 23(8): 35-38.

[2] 劉解華, 楊東凱, 邢兆棟, 等. 基于PC104工控機(jī)/GPS/銥星通信的海洋監(jiān)測(cè)系統(tǒng)[J]. 計(jì)算機(jī)測(cè)量與控制, 2005, 13(11): 1161-1163.

[3] 琚汝強(qiáng), 劉敬彪, 于海濱. 基于銥星的浮標(biāo)遠(yuǎn)程監(jiān)測(cè)與數(shù)據(jù)傳輸系統(tǒng)[J]. 電子技術(shù)應(yīng)用, 2010, 36(12): 36-38.

[4] 鄭志雄, 胡愛蘭. LPC1768的全雙工UART的軟件模擬實(shí)現(xiàn)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2013, 13(6): 25-28.

[5] 張 偉, 李文魁, 陳永冰. 基于GM814X的單片機(jī)串口擴(kuò)展及其應(yīng)用[J]. 電子技術(shù)應(yīng)用, 2012, 38(9): 96-99.

[6] 范開喜, 王 慶, 于先文. 嵌入式組合導(dǎo)航系統(tǒng)中多路異步串口系統(tǒng)的設(shè)計(jì)[J]. 測(cè)控技術(shù), 2010, 29(8): 39-42.

[7] XR16L784. Datasheet[Z]. Exar Corporation, 2005: 1-49.

[8] C8051F020. Datasheet[Z]. Silicon Laboratories Corporation, 2012: 161-248.

[9] 尹德淳. C函數(shù)速查手冊(cè)[M]. 北京:人民郵電出版社, 2009.

[10] Brian Kernighen, Dennis M Ritch. The C programming language(2nd edition)[M]. New Jersey: Prentice Hall, 1988: 100-370.

Application of Serial-Port Expansion Chip XR16L784 in Hydrology Monitoring System

Wang Xinpeng, Men Yabin, Gu Jiyuan, Li Yongjun

(National Ocean Technology Center, Tianjin 300112,China)

In order to solve the problem that the small number of serial-ports of single-chip can not meet multiple serial communication simultaneously in system design, by comparative analysis of the existing serial-port expansion technology and to meet the needs of hydrology monitoring system, the design scheme of serial-port expansion based on chip XR16L784 is put forward. The specific implementation method of hardware design and software programming of serial-port expansion chip XR16L784 is introduced, and it is verified in hydrology monitoring system experimentally. The result shows that multiple serial-ports expansion can be implemented by chip XR16L784 effectively, data can be transmitted and received stably and reliably at different baud rates in expanded serial-port channel. The issue of confined serial-port number within micro control unit is solved by the scheme of serial-port expansion in the multi-channel serial communication system, reflecting great practical value in the hydrology monitoring system.

serial-port expansion; hydrology monitoring; RS232; XR16L784

2015-08-27;

2015-11-04。

天津市青年基金項(xiàng)目(12JCQNJC02400)。

王心鵬(1983-),男,天津人,工學(xué)碩士,助理工程師,主要從事嵌入式系統(tǒng),電路設(shè)計(jì),無線通信方向的研究。

1671-4598(2016)03-0014-04

10.16526/j.cnki.11-4762/tp.2016.03.005

TP334

A

猜你喜歡
銥星寄存器中斷
STM32和51單片機(jī)寄存器映射原理異同分析
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
基于銥星機(jī)會(huì)信號(hào)的定位技術(shù)
基于FPGA的中斷控制器設(shè)計(jì)*
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
銥星絕地重生
閑聊銥星
石家莊上空的“銥星閃光”
FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
府谷县| 丹棱县| 瓦房店市| 惠来县| 宜春市| 郎溪县| 商南县| 新兴县| 睢宁县| 晴隆县| 莒南县| 得荣县| 文安县| 遂宁市| 满城县| 谷城县| 南溪县| 遵义县| 堆龙德庆县| 浏阳市| 大埔县| 江陵县| 唐河县| 海丰县| 安溪县| 克东县| 台南市| 奎屯市| 隆回县| 沁水县| 彰化县| 华坪县| 开化县| 化隆| 厦门市| 贵定县| 方山县| 垦利县| 洪雅县| 永寿县| 宁强县|