关键词:中心站 多路数据 TL16C554 异步串行通信
1 引 言
水情自动测报系统一般由中心站、中继站和遥测站组成。水情自动测报系统的中心站用来接收遥测站(或经中继站转发)的数据并进行解调、存储和处理,通过数据库和应用软件实现防汛调度需求。其中中心站一般由接收天线、馈线、避雷器、无线接收机(电台)、解码器、工业控制计算机(或PC)组成。
为了满足水情、城市防洪计算机监控等遥测遥控系统中心站的数据交换的需要,常常要求几个终端共享遥测数据,即要求把中心站获取的数据资料通过无线或有线信道,传送到各个共享数据的终端,而各个终端也可以与中心站进行数据交换。最为常用的是采用异步串行通信方式,实现中心站与各终端的多路数据的接收与发送。
2 系统设计
2.1 TL16C554
在异步串行通信中,一般都要求设备的串行口要符合RS-232、RS-485等串行通信标准,并按该标准定义的信号进行信息控制和数据传输,能够实现该功能的集成电路通常称为UART,即通用异步接收器/发送器。利用At89s8252构成主从式多机串行通信系统时发现,主机At89s8252一方面要和从机通讯,另一方面还要和终端机通讯,此时便有必要进行串口扩展,同时多台从机有可能同时与主机传送数据,此时采用4通道异步收发器TL16C554显然是一种较好的选择。
TL16C554是TI公司生产的4通道异步收发器集成芯片,它的每个通道能从外围设备或MODEM接收数据,实现串-并转换;同时它也可从CPU端接受数据,实现并-串转换。在FIFO模式下,传输和接收前将数据缓冲为16字节数据包,减少了CPU的中断数量。内部包含4片改良的16C550异步传输器件,使得串行I/O更加可靠,每个信道可实现串行和并行两种连接方式的转换,每个信道的状态可以通过CPU的操作读取,可以获取操作情况或任何的错误状态。三态输出为双向数据总线和控制总线提供TTL驱动能力、优先级中断系统控制、可编程的串行接口特性。
TL16C554的主要特点如下:(1)由4个带有逻辑控制的TL16C550异步通信单元组成;(2)最高可达1 Mbps的波特率,具有可编程的波特率发生器,便于灵活选择数据收发频率;(3)具有16字节的收发FIFO 缓冲器;(4)具有可独立控制的发送、接收、线路状态和MODEM 状态中断;(5)具有全双工的接收发送线路,可独立进行接收发送控制;(6)全面的线路状态报告功能;(7)充分分级的中断系统控制;(8)三态TTL电平输出。
TL16C554有68引脚PLCC和80引脚TQFP两种封装形式,各个引脚的功能为:A0~A2为片内寄存器的选择信号端;D0~D7为双向8位数据线;IOR为读选通端(低电平有效);IOW为写选通端(低电平有效);INTA~INTD为中断A、B、C、D(高电平有效);CSA~CSD为片选A、B、C、D(低电平有效);XTAL1、XTAL2为外部时钟端,该两脚可接晶振或外部时钟信号;RXA~RXD为串行输入A、B、C、D端;TXA~TXD为串行输出A、B、C、D端;RXRDY为接收准备好信号端(低电平有效);TXRDY为发送准备好信号端(低电平有效)。
2.2 系统框图
利用TL16C554实现中心站与各终端之间多路数据接收的系统框图如图1所示,数据采集器将采集到的水文数据存储在单片机里,这里的主控MCU使用的是ATMEL公司的AT89S8252。主控MCU要完成的工作是将收集到的水文信息存储到本地计算机,同时通过TL16C554的4个异步串行口向各个电台发送,另外也可以通Internet向远程计算机发送。四个电台也能通过四个Modem向本地PC发送信息。
2.3 硬件电路图
下面介绍一下中心站多路数据接收的硬件电路图。图3中,TL16C554的数据线D0~D7直接与AT89S8252的P0口相连;TL16C554的片内寄存器选择线A2~A0经过地址锁存器74HC373接AT89S8252的低位地址P0.2~P0.0,此时AT89S8252对TL16C554片内寄存器的读写操作同对外部RAM读写一样。TL16C554 的片选CSA~CSD 分别接P1.0~P1.3,这样可以通过对P1.0~P1.3的清零来选通通道A~D。TL16C554 的中断线INTA~INTD 分与AT89S8252的P1.4~P1.7相连,并经过一个四输入或非门接AT89S8252的INT0。这样当多个串口同时使用时,任一个指定通信事件的出现都将使UART产生一次通信中断,并触发外部INT0中断。在中断服务子程序中,通过对P1.4~P1.7的检测来确定中断到底来自于哪个口,并完成相应的数据处理。TL16C554的IOR、IOW和RESET直接与AT89S8252的RD、WR和RESET相连,串行输出口A通过调制解调器MC145442与电台J1相连,由于B、C、D口与电台连接方式雷同,故省略未画出。
3 软件设计
系统软件设计的重要部分就是TL16C554 的初始化。系统上电后,应分别初始化要使用的每一个通道,并对其内部13个寄存器的读写、波特率、数据帧格式以及FIFO 控制等进行设置。下面是TL16C554 的初始化程序:
ini16554 :
mov dptr , # 0fffbh ;指向线性控制寄存器
mov a , # 80h
movx @dptr ,a
anl dpl , # 0f8h
mov a , # 0ch
movx @dptr ,a ;送波特率常数9600
inc dpl
clr a
movx dptr ,a ;送波特率常数高位00
inc dpl
inc dpl
mov dptr , # 0fffbh
mov a , # 03h ;设置数据帧格式,数据位8 位,1个停止位
movx @dptr ,a
inc dpl ;modem 控制器bit3 控制中断
正确产生
mov a , # 02bh
movx @dptr ,a anl dpl , # 0f8h
orl dpl , # 02h
mov a , # 083h
movx @dptr ,a ;接收FIFO 有效, 8个字节一次中断
anl dpl , # 0f8h
orl dpl , # 01h ; IER 中断允许控制器
mov a , # 001h
movx @dptr ,a ;接收缓冲区有数中断
ret
4 结束语
实验表明,上述软硬件设计可以实现四路串行信号的可靠及时异步收发服务。而且利用TL16C554及AT89S8252构成的串口扩展系统,硬件接口简单,使用经济,并且数据传输距离可远可近。这种主从式多机串行通信系统已被应用到实际系统中,该电路稳定可靠,具有一定的应用价值。