王淑平,楊 衛(wèi)*,侯 爽
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051;2.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
?
基于XR16L788的多串口擴(kuò)展及其應(yīng)用
王淑平1,2,楊衛(wèi)1,2*,侯爽1,2
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051;2.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
摘要:詳細(xì)介紹了基于高性能八通道UART控制器芯片XR16L788的串口擴(kuò)展通信方法,并完成其在S3C2410上的驅(qū)動(dòng)程序,將其應(yīng)用在了一種具有定位功能的新型遙控終端上,解決了該設(shè)備接口不足的問(wèn)題,使遙控終端可以一方面利用GPS、電子羅盤(pán)、激光測(cè)距儀提供的信息實(shí)現(xiàn)對(duì)目標(biāo)的被動(dòng)定位,另一方面利用無(wú)線模塊發(fā)送控制命令接受反饋信息。實(shí)際使用表明,該方法設(shè)計(jì)可靠,在滿足原有要求的同時(shí),還預(yù)留了接口以方便擴(kuò)展其它功能。
關(guān)鍵詞:XR16L788;串口擴(kuò)展;S3C2410;遙控終端;被動(dòng)定位
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,嵌入式設(shè)備的應(yīng)用也越來(lái)越廣泛,嵌入式設(shè)備的串口是最常用、最簡(jiǎn)單的接口,串行接口憑借其接口簡(jiǎn)單、成本較低、占用資源少等特點(diǎn)而被廣泛應(yīng)用在各種設(shè)備中[1-2]。而嵌入式設(shè)備實(shí)際使用過(guò)程中因?yàn)橥饨釉O(shè)備較多常常會(huì)出現(xiàn)串口不足的問(wèn)題,本設(shè)計(jì)的遙控終端為了實(shí)現(xiàn)定位功能需要同時(shí)與GPS、電子羅盤(pán)、激光測(cè)距儀等通信,其使用的S3C2410處理器自身帶有3路串口,但串口0用于系統(tǒng)調(diào)試信息輸出,實(shí)際可用只有兩路,無(wú)法滿足設(shè)計(jì)要求需要的串口數(shù),為了實(shí)現(xiàn)多串口通信需要進(jìn)行串口擴(kuò)展設(shè)計(jì)。常用的方法有軟件模擬法和硬件擴(kuò)展法。軟件模擬法因無(wú)法直觀看到實(shí)驗(yàn)效果且開(kāi)銷(xiāo)大、誤碼率高而不予采用[3-4]。采用硬件擴(kuò)展法有3種方案:(1)利用并口擴(kuò)展串口,并口轉(zhuǎn)串口實(shí)現(xiàn)起來(lái)軟硬件較復(fù)雜,擴(kuò)展出的串口穩(wěn)定性差,容易受到外界環(huán)境干擾;(2)利用USB口擴(kuò)展串口,使用USB/串口轉(zhuǎn)換器,可擴(kuò)展最多16路串口,性能可靠,但體積大,且價(jià)格隨串口數(shù)增加顯著提高;(3)串口擴(kuò)展串口,該方法簡(jiǎn)單易行,選擇串口擴(kuò)展芯片是擴(kuò)展設(shè)計(jì)的關(guān)鍵[5-6]。
本設(shè)計(jì)中采用方案3,擴(kuò)展芯片是EXAR的XR16L788。XR16L788通用異步接收/發(fā)射器是一款8通道的UART控制器芯片。XR16L788包含片內(nèi)振蕩器(XTAL1和XTAL2),可為每一個(gè)通道的可編程波特率發(fā)生器(BRG)提供系統(tǒng)時(shí)鐘,因此滿足GPS、電子羅盤(pán)等設(shè)備對(duì)不同波特率的通信要求。另外,它還包括一個(gè)通用中斷輸出引腳與通用中斷源寄存器,為所有8個(gè)UART通道提供完整的狀態(tài)指示,這可以加快中斷分析,串口擴(kuò)展的硬件電路設(shè)計(jì)完成后在S3C2410核心板下并不能直接驅(qū)動(dòng)使用,本文還介紹了串口擴(kuò)展驅(qū)動(dòng)程序的設(shè)計(jì),使擴(kuò)展的串口能正確傳輸數(shù)據(jù)[7]。
1.1XR16L788芯片
EXAR的XR16L788是一種高度集成的器件,設(shè)計(jì)用于具有高帶寬需求的通信系統(tǒng),工作電壓為3.3 V(+5 V的耐壓)。XR16L788擁有幾個(gè)創(chuàng)新性的特性,其中最突出的是通用中斷源寄存器的設(shè)計(jì),它用于使軟件設(shè)備驅(qū)動(dòng)程序更有效,從而在多通道系統(tǒng)降低CPU的帶寬需求。
此外,該器件的八個(gè)通道都有各自的UART通道控制、軟復(fù)位、同步寄存器初始化、帶16種可選滯后的RTS/CTS或DTR/DSR硬件流控和帶可編程延時(shí)滯后的RS-485半雙工方向控制輸出。8 bit數(shù)據(jù)總線配置方面支持基于Intel或Motorola的系統(tǒng)設(shè)計(jì)。該芯片還具有64 byte的發(fā)送和接收FIFO(先進(jìn)先出)以及FIFO byte計(jì)數(shù)器、可編程的TX和RX FIFO觸發(fā)字節(jié)。它的最高串行數(shù)據(jù)速率可達(dá)6.25 Mbit/s。
1.2串口擴(kuò)展設(shè)計(jì)
圖1為串口擴(kuò)展電路圖,XR16L788的8 bit雙向數(shù)據(jù)引腳D0~D7與F020的P7口相連;A0~A7地址引腳與C8051F020的P6口相連,其中A0~A3用于選擇各個(gè)通道的16個(gè)配置寄存器,A4~A5用于通道UART0到UART7的選通,A7用于選擇全局設(shè)備配置寄存器;IOR#、IOW#引腳與F020的P4.6、P4.7外部存儲(chǔ)器讀寫(xiě)選通引腳相連,并將XR16L788映射在F020的片外數(shù)據(jù)地址空間中;CS#片選與P1.2相連,INT#與P0.4相連,它為漏極開(kāi)路輸出,所以需要一個(gè)外部上拉電阻[8-9]。
其它引腳TMRCK、ENIR等接地,16/68#(Intel 和Motorola總線接口選通引腳)接高電平。由于XR16L788未內(nèi)置晶振所以需在XTAL1、XTAL2引腳外接晶振單元。
圖1 串口擴(kuò)展電路圖
2.1驅(qū)動(dòng)程序設(shè)計(jì)過(guò)程
Linux中的驅(qū)動(dòng)設(shè)計(jì)是Linux開(kāi)發(fā)中十分重要的部分,它是應(yīng)用程序與硬件之間的一個(gè)中間軟件層[10]。嵌入式Linux系統(tǒng)采用模塊化方式管理設(shè)備驅(qū)動(dòng),并且將各種設(shè)備映射成設(shè)備文件,向開(kāi)發(fā)人員提供統(tǒng)一且簡(jiǎn)單易用的接口,達(dá)到簡(jiǎn)化應(yīng)用程序開(kāi)發(fā)和屏蔽不同硬件設(shè)備的目的。Linux的驅(qū)動(dòng)開(kāi)發(fā)調(diào)試有兩種方法,一種是直接編譯到內(nèi)核,再運(yùn)行新的內(nèi)核來(lái)測(cè)試;二是編譯為模塊的形式,單獨(dú)加載運(yùn)行調(diào)試。第一種方法效率低,但在某些場(chǎng)合是惟一的方法,模塊方式調(diào)試效率高,可以使用insmod工具將編譯的模塊直接插入內(nèi)核,還可以用rmmod從內(nèi)核中卸載模塊,從而不需要重新啟動(dòng)內(nèi)核,使調(diào)試效率大大提高[11]。以下是實(shí)現(xiàn)的具體過(guò)程:
(1)在S3C2410核心板的內(nèi)核的頭文件即ker?nelincludeasm-armarch-s3c2410 smdk.h增加中斷及片選地址宏定義
#define RUIJI_UART_IRQIRQ_EINT7
/*exar uart,nGCS2 */
#define pRUIJI_ UART_BASE
0x10000000
#define vRUIJI_UART_ BASE 0xd1000000
(2)在kernelarcharmmach-s3c2410smdk.c文件中增加CS2串口芯片內(nèi)存映射地址表
Static struct map_desc smdk_io_desc[]__initdata={
/* virtual physical length domain r w c b */
{vCS8900_BASE,pCS8900_BASE,0x00100000,DOMAIN_IO,
0,1,0,0},
{vRUIJI_UART_BASE,pRUIJI_UART_BASE,0x01000000,
DOMAIN_IO,0,1,0,0},
LAST_DESC
};
(3)在串口驅(qū)動(dòng)文件即kerneldriversserial中添加X(jué)R16L788驅(qū)動(dòng)文件exar_serial.c及頭文件ex?ar_serial_reg.h
完成上述設(shè)計(jì)后,就可使用make zImage重新編譯內(nèi)核映像文件,也可以把(3)中的驅(qū)動(dòng)文件編譯成exar_serial.o模塊文件,使用過(guò)程中可使用ins?mod和rmmod命令分別動(dòng)態(tài)鏈接和去除該模塊。
2.2擴(kuò)展串口的通信
使用XR16L788進(jìn)行串行通信前,應(yīng)先對(duì)其初始化。XR16L788的初始化程序流程圖如下:
圖2 XR16L788初始化流程圖
首先,寫(xiě)RESET寄存器,軟件重置各個(gè)通道,寄存器的bit0~bit7位置分別對(duì)應(yīng)UART0~UART7。重置各個(gè)通道時(shí),要把REG2寄存器bit0位置1。需要注意的是,在對(duì)設(shè)備進(jìn)行讀操作時(shí)REG2寄存器的bit2位置必須為0。然后,設(shè)置各通道串行通信的數(shù)據(jù)格式。LCR是數(shù)據(jù)格式控制寄存器,bit1~bit0位指定數(shù)據(jù)位長(zhǎng)度,數(shù)據(jù)位長(zhǎng)度可根據(jù)需要設(shè)置為5 bit~8 bit,bit2位選擇停止位個(gè)數(shù),bit5~bit3位置是奇偶校驗(yàn)選擇位,bit6為中斷控制位(邏輯1時(shí)允許產(chǎn)生輸出中斷)。通過(guò)設(shè)置LCR寄存器來(lái)確定各通道的數(shù)據(jù)格式,來(lái)滿足不同的通信要求。
圖3 波特率發(fā)生器
最后為波特率的設(shè)置。XR16L788的每個(gè)UART通道都有自己的波特率發(fā)生器,LCR寄存器的bit7位(分頻允許位)、MCR寄存器的bit7位(4分頻允許位)及DLL&DLM寄存器共同設(shè)置各通道的波特率。DLL&DLM的值在上電后是隨機(jī)的,因此,在使用前必須在初始化過(guò)程中對(duì)其編程。DLL&DLM的值可由如下公式得出:
Divisor=(clockfrequency/prescaler)/(serialdataratex8)
初始化完成之后,就是用串口的打開(kāi)、讀、寫(xiě)和關(guān)閉函數(shù)進(jìn)行數(shù)據(jù)的傳輸[12]。
3.1系統(tǒng)總體設(shè)計(jì)
本設(shè)計(jì)中擴(kuò)展電路被應(yīng)用在具有定位功能的新型遙控終端上。上圖為遙控終端的結(jié)構(gòu)框圖:串口擴(kuò)展電路通過(guò)RS-232接口電路與ARM主控模塊通信,ARM主控模塊用來(lái)數(shù)據(jù)處理、圖像顯示及與上位機(jī)通信。ARM主控模塊的處理器選用三星公司ARM9系列S3C2410處理器,外圍電路主要由FLASH和SRAM存儲(chǔ)單元、電源供電電路、復(fù)位電路、晶振、JATG調(diào)試口等構(gòu)成[13]。
圖4 遙控終端結(jié)構(gòu)框圖
圖5 RS-232接口電路
3.2定位程序設(shè)計(jì)
系統(tǒng)對(duì)目標(biāo)單元的定位可得到目標(biāo)的絕對(duì)坐標(biāo)和相對(duì)坐標(biāo)。電子羅盤(pán)和激光測(cè)距儀提供被測(cè)目標(biāo)相對(duì)測(cè)量點(diǎn)的距離、垂直角和水平角等,在空間直角坐標(biāo)系下,以測(cè)量點(diǎn)為坐標(biāo)原點(diǎn),利用距離、水平角和垂直角等參數(shù)可得到被測(cè)目標(biāo)的相對(duì)坐標(biāo)。GPS使用的是WGS-84坐標(biāo)系,利用被測(cè)目標(biāo)的相對(duì)坐標(biāo)對(duì)提供的經(jīng)緯度信息進(jìn)行坐標(biāo)變換,即可得到當(dāng)前位置的絕對(duì)坐標(biāo)。
完成對(duì)每個(gè)目標(biāo)單元的定位后,將定位數(shù)據(jù)存儲(chǔ)到非易失性的存儲(chǔ)器中,并通過(guò)無(wú)線網(wǎng)絡(luò)把定位坐標(biāo)傳送至每個(gè)目標(biāo)單元。使得各個(gè)目標(biāo)單元了解自己所在的位置。
3.3定位測(cè)試
在矩形區(qū)域內(nèi),把5個(gè)目標(biāo)按照五邊形進(jìn)行布置,邊長(zhǎng)約為10 m。以遙控終端為坐標(biāo)原點(diǎn),分別測(cè)量各個(gè)目標(biāo)的距離和方位角,每個(gè)目標(biāo)測(cè)量?jī)纱危⑴c實(shí)際的測(cè)量值進(jìn)行對(duì)比。
圖6 定位程序流程圖
實(shí)驗(yàn)結(jié)果如表1所示。
表1 測(cè)試數(shù)據(jù)
本文介紹的多串口擴(kuò)展方法通過(guò)實(shí)驗(yàn)表明能夠滿足項(xiàng)目的主要設(shè)計(jì)指標(biāo),目標(biāo)定位誤差小于0.2 m?;赬R16L788的串口擴(kuò)展設(shè)計(jì)在結(jié)構(gòu)上、功能上具有良好的穩(wěn)定性、可靠性,全系統(tǒng)數(shù)據(jù)通信正常、誤碼率低,很好地解決了系統(tǒng)接口不足的問(wèn)題,這對(duì)今后嵌入式串口擴(kuò)展有一定的借鑒意義。
參考文獻(xiàn):
[1]于海彬,王斌,陳興林,等.基于Linux的SC16IS752的串口驅(qū)動(dòng)程序設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013(12):36-41.
[2]楊宗霖,姚速瑞,張浩峰.衛(wèi)星/慣性組合定位系統(tǒng)中的數(shù)據(jù)采集單元設(shè)計(jì)[J]. 2015,2(38):452-457.
[3]岳曉慶,張其善,常青.串口擴(kuò)展技術(shù)在嵌入式系統(tǒng)中的實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2006,29(2):45-46.
[4]楊光友,朱宏輝.單片微型計(jì)算機(jī)原理及接口[M].北京:中國(guó)水利水電出版社,2006:22-41.
[5]劉小芳.單片機(jī)的多串口擴(kuò)展技術(shù)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2004,12(11):1088-1090.
[6]張偉,李文魁,陳永冰.基于GM814X的單片機(jī)串口擴(kuò)展及其應(yīng)用[J].電子技術(shù)應(yīng)用,2012,38(9):96-99.
[7]曹富祿.基于XR16L78x的多串口擴(kuò)展方案優(yōu)勢(shì)分析[J].現(xiàn)代電子技術(shù),2011,34(24):163-170.
[8]朱思榮,周萬(wàn)里,畢春元,等. C8051F120單片機(jī)串口擴(kuò)展與通訊設(shè)計(jì)[J].山東科學(xué),2013,26(1):69-73.
[9]潘琢金. C8051Fxxx高速SOC單片機(jī)原理及應(yīng)用[M].北京:北京航空航天的學(xué)出版社,2002:12-22.
[10]宋寶華. Linux設(shè)備驅(qū)動(dòng)詳解[M].北京:人民郵電出版社,2010:112-126.
[11]羅苑棠,楊宗德.嵌入式Linux應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例精講[M].北京:電子工業(yè)出版社,2007:223-245.
[12]宋寶華,何昭然,史海濱,等.精通Linux設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:人民郵電出版社,2010:187-221.
[13]魏永明. LINUX設(shè)備驅(qū)動(dòng)程序[M]. 3版.北京:中國(guó)電力出版社,2005:226-252.
王淑平(1990-),男,漢族,江西吉安人,中北大學(xué)儀器與電子學(xué)院碩士,主要研究方向?yàn)闇y(cè)試計(jì)量技術(shù),935924529@qq.com;
楊衛(wèi)(1957-),男,漢族,山西太原人,研高工,研究方向?yàn)槲⒓{米器件、儀器與測(cè)試技術(shù)、微系統(tǒng)及集成技術(shù)、網(wǎng)域化微武器系統(tǒng),yangwei@nuc.edu.cn。
The Fire Alarm System of Wind Turbine Engine Room Based on ZigBee*
WU Chunming,YANG Tao*,ZHANG Jinqiang
(Information Engineering College Northeast Dianli University,Jilin Jilin 132012,China)
Abstract:In order to solve the loss of fire hidden trouble in the wind turbine,we designed a fire alarm system of wind turbine engine based on ZigBee. The system consists of the collection nodes,the coordination node and the monitoring center node. We use CC2530 as the processor,which controls the location of the fire hidden trouble in wind turbine engine room,collecting the data through the data collection nodes and sending them to monitoring cen?ter by GPRS network. According to the experiment and test results,the system can work stability,high reliability,early warning accuracy and monitoring of the regional operations of each time period effectiveness,thus it can guar?antee the wind turbine running security and stability.
Key words:wind turbine engine room;fire prevention;CC2530;GPRS network;software platform
doi:EEACC:814010.3969/j.issn.1005-9490.2016.01.044
收稿日期:2015-03-25修改日期:2015-05-16
中圖分類(lèi)號(hào):TN993
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1005-9490(2016)01-0211-05