下载此文档

串口扩展芯片XR16L784在水文监测系统中的应用.docx


文档分类:论文 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
该【串口扩展芯片XR16L784在水文监测系统中的应用 】是由【科技星球】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【串口扩展芯片XR16L784在水文监测系统中的应用 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。串口扩展芯片XR16L784在水文监测系统中的应用
 
 
王心鹏,门雅彬,顾季源,李永军
(国家海洋技术中心,天津 300112)

串口扩展芯片XR16L784在水文监测系统中的应用
王心鹏,门雅彬,顾季源,李永军
(国家海洋技术中心,天津 300112)
为了解决系统设计中单片机串口数量较少不能同时满足多路串行通信的问题,通过对现有串口扩展技术进行对比分析,并针对水文监测系统的应用需求,提出了基于芯片XR16L784完成串口扩展的设计方案;介绍了串口扩展芯片XR16L784的硬件设计和软件编程的具体实现方法,并在水文监测系统上进行了实验验证;结果表明:串口扩展芯片XR16L784可有效实现多个串口扩充,扩充后的串口通道能够在不同波特率下稳定、可靠实现数据双向传输;串口扩展方
案解决了在多路串行通信系统中系统主控单元串口数量有限的问题,在水文监测系统中体现出很好的实用价值。
串口扩展;水文监测;RS232;XR16L784
0 引言
海洋的水体温度、电导率、深度是研究海洋不同水层水文信息的3个基本物理量,根据以上参数可计算出海水密度、声速等其它各种物理参数,这些数据可用于研究海水的物理化学性质、水层结构和水团运动状况,对研究海洋水文信息具有重要意义,因此对其监测十分重要[1]。水文监测系统,可完成对海水温度、电导率、深度的实时监测,其工作原理如下:系统通过温度和电导率传感器对水文数据进行实时采集,使用GPS模块获取位置信息,将采集的数据与时间、经纬度信息打包成数据帧,在一定周期内按照设定的工作模式通过数传电台或铱星通信方式向外发送。系统可设定为近岸或离岸模式,近岸模式下用户可通过数传电台接收数据并可向系统发送控制指令,离岸模式下用户可使用铱星通信方式通过Email接收数据[2-3],其工作原理如图1所示。该系统以C8051F020单片机为主控芯片,在系统平台上集成了温度及电导率传感器、铱星通信模块、GPS模块、数传电台和PC通讯等异步串行通信设备,其中PC通讯用于系统使用前的外部自检。由图1可知,系统共需要6个串口。由于单片机自身只有2个UART接口,远不能满足系统设计需求,因此需要对串口进行扩展。
图1 水文监测系统原理框图
图2 串口扩展芯片连接框图
串口扩展是根据系统设计的需要,将原有串口扩展为多个同类型或不同类型(RS232、RS422、RS485)的串口,以便与不同接口的计算机或设备进行串行通信。常用的串口扩展方法有软件模拟法[4]和硬件法[5-6],软件模拟法可根据串行通讯的传送格式,利用定时器和主机的I/O口来模拟串行通讯时序,达到扩展串口的目的。但其具有一定局限性:1)不能实现高波特率通讯时的可靠数据传输;2)串口扩展在数量上难以保证。硬件法通常指在电路设计时使用专用扩展芯片,该方法通过对芯片进行编程实现多路串口扩展,具有工作稳定、实时性好、可靠性高等特点。这里选用EXAR公司生产的XR16L784芯片,通过合
理搭建外围电路并编写配置程序,实现多路串口扩展的功能,该电路可移植性高、串口扩展能力强、便于配置。
1 串口扩展芯片XR16L784功能介绍
芯片简介
XR16L784芯片是一款四通道通用异步收发器,能够满足通信系统中的高带宽需求。它具有的全局中断源寄存器为4个通道提供了完备的中断状态指示,每个UART通道都具有与16C550兼容的配置寄存器组、64字节发送和接收FIFO、可编程发送和接收FIFO级触发器和计数器,RTS/ CTS或DTR/ DSR与可编程迟滞自动硬件流控制、自动软件(XON / XOFF)流控制、红外数据编码器/解码器以及一个16位通用定时器/计数器。该芯片具有软件或硬件复位、UART通道选择、同步向所有通道写数据、中断输出、晶振设置、可编程波特率生成器、自动485半双工流控制、红外模式、带有唤醒指示的休眠模式等功能,能够满足硬件设计的各种需求[7]。
芯片寄存器介绍
XR16L784芯片集成了四通道增强型16550UART,一个通知16位定时器/计数器和片上振荡器。芯片的配置寄存器组包括4个连续的中断源寄存器,可提供4个UARTS的中断状态。每个UART通道具有用于自身的运行控制、状态报告、数据传输的配置寄存器,这些寄存器被映射到具有256字节的数据存储器地址空间,可由数据总线直接访问。表1给出了一些常用寄存器的介绍。
表1 常用寄存器功能介绍
2 芯片外围电路硬件设计
由于系统需要较强的控制和数据处理能力,因此需要选用性能稳定且软件开发过程中难度低的MCU,经对比选型最终选用Silicon Laboratories公司的高性能微控制器C8051F020作为主控芯片。它具有与8051兼容的CIP-51微控制器内核,是完整的混合信号片上系统SoC芯片[8]。使用两片MAXIM公司生产的MAX3232芯片完成四路收发数据的TTL电平与RS232电平转换,并将其与4个数据接口相连接,其硬件框图如图2所示。
C8051F020单片机具有丰富的IO资源和处理能力,选择P6和P7端口作为XR16L784芯片的数据和地址总线,为XR16L784的数据读写和寻址所用。,当单片机检测到中断信号时能够进入相应的中断服务程序,将RST引脚与一个IO口相连以满足芯片的复位需要,(RD和WR)引脚相连以控
制芯片实时读写状态,片选引脚CS在使用时由单片机进行控制。由于本设计中不会使用芯片的红外模式,因此将ENIR引脚接低电平。将18/68引脚连接高电平使芯片工作在INTEL接口模式下。 2 MHz的晶振作为芯片外部时钟输入,其电路连接如图3所示。
图3 串口扩展芯片外围电路
3 芯片软件设计
为了能充分利用芯片的4个UART通道,保证可靠稳定的数据传输,需要对单片机编程[9-10]以完成对串口扩展芯片的配置。
芯片初始化
1) 通过在RST引脚上加一个超过100 ms的低脉冲信号来实现XR16L784芯片的硬件可靠复位,此时其内部各寄存器均恢复至缺省状态;
2)选择外部时钟作为芯片的时钟源,设置数据传输波特率;
3)对LCR寄存器配置设置收发的字节长度为8位且无校验位;
4)配置FCTR寄存器选择触发表,通过RXTRG和TXTRG寄存器设置触发级,这里将其设为16个字节;
6)设置FCR寄存器使能发送和接收FIFO,配置IER寄存器使能发送空中断和接收中断;
7)配置TIMERMSB和TIMERLSB寄存器以设定定时器初始值,通过TIMERCNTL寄存器实现定时器的开启和关断。在实际应用中,利用定时器可对每个UART通道是否正常收发数据做出判断。
中断服务程序
XR16L784芯片INT引脚上的电平状态如表2所示,单片机通过其外部中断引脚响应该信号,从而进入图4所示的XR16L784中断服务程序。
表2 XR16L784芯片INT引脚电平状态表
程序的执行过程如下:
1)通过XR16L784芯片内部的INT0、INT1、INT2寄存器状态判断本次中断的类型; UART中断或定时器中断;
2)若为UART中断,则判断中断的UART通道编号和类型,即接收或发送中断;
3)接收中断的处理流程:首先读取LSR寄存器清除该中断,然后读取RXCNT寄存器以获得接收FIFO中字节数,最后将RHR中的每字节数据依次存入接收缓冲区中;
4)发送中断的处理流程:首先读取ISR寄存器清除该中断,然后将待发送缓冲区中的数据依次写入该通道的THR寄存器,当数据量超过FIFO中的设定值时停止写入;
5)当确认4个UART通道均没有发送或接收中断时,跳出UART中断循环。若本次中断为定时器中断,则程序完成相应的定时计数操作。
6)待确认没有中断信号后,本次中断服务程序结束并返回主程序。
图4 中断服务程序软件流程图
中断服务程序软件代码
void XR16L784_isr(void)
{
uchar temp_reg, int0_reg,int1_reg,int2_reg;
//读取INT0、INT1、INT2寄存器的状态
int0_reg=XR16L784_INT0; int1_reg=XR16L784_INT1; int2_reg=XR16L784_INT2;
EX0=0;//关闭单片机外部中断
while(int0_reg) //UART中断
{
if(int0_reg&0x01) { // UART0通道中断
switch(int1_reg&0x07) { //判断中断类型
case 1: case 2: //接收中断
LSR_PORT(0);//读ISR清除中断,其中0表示UART通道编号
temp_reg=RXCNT_PORT(0);//读取FIFO中的数据数量
while(temp_reg) {//将FIFO中的数据依次存入接收缓冲区
temp_reg--; buffer_rx0[rx0_start]=RHR_PORT(0);
rx0_start++; rx0_start%=RX0_SIZE; } break;
case 3: //发送中断
ISR_PORT(0); //读ISR清除TXRDY中断
temp_reg=0;
while(tx0_start!=tx0_end) {
THR_PORT(0)=buffer_tx0[tx0_end];//发送缓冲区数据写入THR
tx0_end++; tx0_end%=TX0_SIZE; temp_reg++;
if(temp_reg>16) break; } //数据量超过FIFO中设定值时停止写入
break;
default: break;}

串口扩展芯片XR16L784在水文监测系统中的应用 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人科技星球
  • 文件大小421 KB
  • 时间2025-02-12
最近更新