基于XR16L788的多串口扩展及其应用

2016-03-22 06:56:23王淑平
电子器件 2016年1期

王淑平,杨 卫*,侯 爽

(1.中北大学仪器科学与动态测试教育部重点实验室,太原030051;2.中北大学电子测试技术重点实验室,太原030051)



基于XR16L788的多串口扩展及其应用

王淑平1,2,杨卫1,2*,侯爽1,2

(1.中北大学仪器科学与动态测试教育部重点实验室,太原030051;2.中北大学电子测试技术重点实验室,太原030051)

摘要:详细介绍了基于高性能八通道UART控制器芯片XR16L788的串口扩展通信方法,并完成其在S3C2410上的驱动程序,将其应用在了一种具有定位功能的新型遥控终端上,解决了该设备接口不足的问题,使遥控终端可以一方面利用GPS、电子罗盘、激光测距仪提供的信息实现对目标的被动定位,另一方面利用无线模块发送控制命令接受反馈信息。实际使用表明,该方法设计可靠,在满足原有要求的同时,还预留了接口以方便扩展其它功能。

关键词:XR16L788;串口扩展;S3C2410;遥控终端;被动定位

随着计算机技术的不断发展,嵌入式设备的应用也越来越广泛,嵌入式设备的串口是最常用、最简单的接口,串行接口凭借其接口简单、成本较低、占用资源少等特点而被广泛应用在各种设备中[1-2]。而嵌入式设备实际使用过程中因为外接设备较多常常会出现串口不足的问题,本设计的遥控终端为了实现定位功能需要同时与GPS、电子罗盘、激光测距仪等通信,其使用的S3C2410处理器自身带有3路串口,但串口0用于系统调试信息输出,实际可用只有两路,无法满足设计要求需要的串口数,为了实现多串口通信需要进行串口扩展设计。常用的方法有软件模拟法和硬件扩展法。软件模拟法因无法直观看到实验效果且开销大、误码率高而不予采用[3-4]。采用硬件扩展法有3种方案:(1)利用并口扩展串口,并口转串口实现起来软硬件较复杂,扩展出的串口稳定性差,容易受到外界环境干扰;(2)利用USB口扩展串口,使用USB/串口转换器,可扩展最多16路串口,性能可靠,但体积大,且价格随串口数增加显著提高;(3)串口扩展串口,该方法简单易行,选择串口扩展芯片是扩展设计的关键[5-6]。

本设计中采用方案3,扩展芯片是EXAR的XR16L788。XR16L788通用异步接收/发射器是一款8通道的UART控制器芯片。XR16L788包含片内振荡器(XTAL1和XTAL2),可为每一个通道的可编程波特率发生器(BRG)提供系统时钟,因此满足GPS、电子罗盘等设备对不同波特率的通信要求。另外,它还包括一个通用中断输出引脚与通用中断源寄存器,为所有8个UART通道提供完整的状态指示,这可以加快中断分析,串口扩展的硬件电路设计完成后在S3C2410核心板下并不能直接驱动使用,本文还介绍了串口扩展驱动程序的设计,使扩展的串口能正确传输数据[7]。

1 扩展电路硬件设计

1.1XR16L788芯片

EXAR的XR16L788是一种高度集成的器件,设计用于具有高带宽需求的通信系统,工作电压为3.3 V(+5 V的耐压)。XR16L788拥有几个创新性的特性,其中最突出的是通用中断源寄存器的设计,它用于使软件设备驱动程序更有效,从而在多通道系统降低CPU的带宽需求。

此外,该器件的八个通道都有各自的UART通道控制、软复位、同步寄存器初始化、带16种可选滞后的RTS/CTS或DTR/DSR硬件流控和带可编程延时滞后的RS-485半双工方向控制输出。8 bit数据总线配置方面支持基于Intel或Motorola的系统设计。该芯片还具有64 byte的发送和接收FIFO(先进先出)以及FIFO byte计数器、可编程的TX和RX FIFO触发字节。它的最高串行数据速率可达6.25 Mbit/s。

1.2串口扩展设计

图1为串口扩展电路图,XR16L788的8 bit双向数据引脚D0~D7与F020的P7口相连;A0~A7地址引脚与C8051F020的P6口相连,其中A0~A3用于选择各个通道的16个配置寄存器,A4~A5用于通道UART0到UART7的选通,A7用于选择全局设备配置寄存器;IOR#、IOW#引脚与F020的P4.6、P4.7外部存储器读写选通引脚相连,并将XR16L788映射在F020的片外数据地址空间中;CS#片选与P1.2相连,INT#与P0.4相连,它为漏极开路输出,所以需要一个外部上拉电阻[8-9]。

其它引脚TMRCK、ENIR等接地,16/68#(Intel 和Motorola总线接口选通引脚)接高电平。由于XR16L788未内置晶振所以需在XTAL1、XTAL2引脚外接晶振单元。

图1 串口扩展电路图

2 多串口驱动程序实现

2.1驱动程序设计过程

Linux中的驱动设计是Linux开发中十分重要的部分,它是应用程序与硬件之间的一个中间软件层[10]。嵌入式Linux系统采用模块化方式管理设备驱动,并且将各种设备映射成设备文件,向开发人员提供统一且简单易用的接口,达到简化应用程序开发和屏蔽不同硬件设备的目的。Linux的驱动开发调试有两种方法,一种是直接编译到内核,再运行新的内核来测试;二是编译为模块的形式,单独加载运行调试。第一种方法效率低,但在某些场合是惟一的方法,模块方式调试效率高,可以使用insmod工具将编译的模块直接插入内核,还可以用rmmod从内核中卸载模块,从而不需要重新启动内核,使调试效率大大提高[11]。以下是实现的具体过程:

(1)在S3C2410核心板的内核的头文件即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串口芯片内存映射地址表

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)在串口驱动文件即kerneldriversserial中添加XR16L788驱动文件exar_serial.c及头文件ex⁃ar_serial_reg.h

完成上述设计后,就可使用make zImage重新编译内核映像文件,也可以把(3)中的驱动文件编译成exar_serial.o模块文件,使用过程中可使用ins⁃mod和rmmod命令分别动态链接和去除该模块。

2.2扩展串口的通信

使用XR16L788进行串行通信前,应先对其初始化。XR16L788的初始化程序流程图如下:

图2 XR16L788初始化流程图

首先,写RESET寄存器,软件重置各个通道,寄存器的bit0~bit7位置分别对应UART0~UART7。重置各个通道时,要把REG2寄存器bit0位置1。需要注意的是,在对设备进行读操作时REG2寄存器的bit2位置必须为0。然后,设置各通道串行通信的数据格式。LCR是数据格式控制寄存器,bit1~bit0位指定数据位长度,数据位长度可根据需要设置为5 bit~8 bit,bit2位选择停止位个数,bit5~bit3位置是奇偶校验选择位,bit6为中断控制位(逻辑1时允许产生输出中断)。通过设置LCR寄存器来确定各通道的数据格式,来满足不同的通信要求。

图3 波特率发生器

最后为波特率的设置。XR16L788的每个UART通道都有自己的波特率发生器,LCR寄存器的bit7位(分频允许位)、MCR寄存器的bit7位(4分频允许位)及DLL&DLM寄存器共同设置各通道的波特率。DLL&DLM的值在上电后是随机的,因此,在使用前必须在初始化过程中对其编程。DLL&DLM的值可由如下公式得出:

Divisor=(clockfrequency/prescaler)/(serialdataratex8)

初始化完成之后,就是用串口的打开、读、写和关闭函数进行数据的传输[12]。

3 应用设计

3.1系统总体设计

本设计中扩展电路被应用在具有定位功能的新型遥控终端上。上图为遥控终端的结构框图:串口扩展电路通过RS-232接口电路与ARM主控模块通信,ARM主控模块用来数据处理、图像显示及与上位机通信。ARM主控模块的处理器选用三星公司ARM9系列S3C2410处理器,外围电路主要由FLASH和SRAM存储单元、电源供电电路、复位电路、晶振、JATG调试口等构成[13]。

图4 遥控终端结构框图

图5 RS-232接口电路

3.2定位程序设计

系统对目标单元的定位可得到目标的绝对坐标和相对坐标。电子罗盘和激光测距仪提供被测目标相对测量点的距离、垂直角和水平角等,在空间直角坐标系下,以测量点为坐标原点,利用距离、水平角和垂直角等参数可得到被测目标的相对坐标。GPS使用的是WGS-84坐标系,利用被测目标的相对坐标对提供的经纬度信息进行坐标变换,即可得到当前位置的绝对坐标。

完成对每个目标单元的定位后,将定位数据存储到非易失性的存储器中,并通过无线网络把定位坐标传送至每个目标单元。使得各个目标单元了解自己所在的位置。

3.3定位测试

在矩形区域内,把5个目标按照五边形进行布置,边长约为10 m。以遥控终端为坐标原点,分别测量各个目标的距离和方位角,每个目标测量两次,并与实际的测量值进行对比。

图6 定位程序流程图

实验结果如表1所示。

表1 测试数据

4 结束语

本文介绍的多串口扩展方法通过实验表明能够满足项目的主要设计指标,目标定位误差小于0.2 m。基于XR16L788的串口扩展设计在结构上、功能上具有良好的稳定性、可靠性,全系统数据通信正常、误码率低,很好地解决了系统接口不足的问题,这对今后嵌入式串口扩展有一定的借鉴意义。

参考文献:

[1]于海彬,王斌,陈兴林,等.基于Linux的SC16IS752的串口驱动程序设计[J].计算机应用,2013(12):36-41.

[2]杨宗霖,姚速瑞,张浩峰.卫星/惯性组合定位系统中的数据采集单元设计[J]. 2015,2(38):452-457.

[3]岳晓庆,张其善,常青.串口扩展技术在嵌入式系统中的实现[J].电子测量技术,2006,29(2):45-46.

[4]杨光友,朱宏辉.单片微型计算机原理及接口[M].北京:中国水利水电出版社,2006:22-41.

[5]刘小芳.单片机的多串口扩展技术的设计[J].计算机测量与控制,2004,12(11):1088-1090.

[6]张伟,李文魁,陈永冰.基于GM814X的单片机串口扩展及其应用[J].电子技术应用,2012,38(9):96-99.

[7]曹富禄.基于XR16L78x的多串口扩展方案优势分析[J].现代电子技术,2011,34(24):163-170.

[8]朱思荣,周万里,毕春元,等. C8051F120单片机串口扩展与通讯设计[J].山东科学,2013,26(1):69-73.

[9]潘琢金. C8051Fxxx高速SOC单片机原理及应用[M].北京:北京航空航天的学出版社,2002:12-22.

[10]宋宝华. Linux设备驱动详解[M].北京:人民邮电出版社,2010:112-126.

[11]罗苑棠,杨宗德.嵌入式Linux应用系统开发实例精讲[M].北京:电子工业出版社,2007:223-245.

[12]宋宝华,何昭然,史海滨,等.精通Linux设备驱动程序开发[M].北京:人民邮电出版社,2010:187-221.

[13]魏永明. LINUX设备驱动程序[M]. 3版.北京:中国电力出版社,2005:226-252.

王淑平(1990-),男,汉族,江西吉安人,中北大学仪器与电子学院硕士,主要研究方向为测试计量技术,935924529@qq.com;

杨卫(1957-),男,汉族,山西太原人,研高工,研究方向为微纳米器件、仪器与测试技术、微系统及集成技术、网域化微武器系统,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

中图分类号:TN993

文献标识码:A

文章编号:1005-9490(2016)01-0211-05