2 串口扩展方案比较分析
数据转换器有两个输入端,分别与电罗经和GPS设备连接,且均为RS422接口[2]。GPS信号是标准NMEA-0183格式,并包括两种语句,其中HDT语句输出航向信号,ROT语句输出航向变化率信号。而电罗经信号只有一种格式,它包括了航向数据信号和航向变化率信号。
数据转换器对输入信号进行选择,当输入信号为电罗经时,转换器将电罗经的航向语句直接输出到接口为RS422的电罗经导航设备终端,同时将输入的数据转换为标准NMEA-0183格式的HDT与ROT语句数据输出到接口为RS232的GPS导航设备终端。而输入信号为GPS时,转换器将GPS的航向语句直接输出到接口为RS232的GPS导航设备终端,同时将输入的HDT与ROT数据转换为电罗经数据格式输出到接口为RS422的电罗经导航设备终端。数据转换器的功能框图如图1所示。
图1 数据转换器的功能框图
为实现数据的转换,就需要数据转换器至少具备三个标准的UART串口。有多种设计方案都能满足这一要求且不尽相同,成本、指标、可靠性等都存在差异。根据目前的串口器件设计,归纳起来主要有以下几种比较常用的多串口设计方案[3]。
(1) 多串口单片机。其中双串口的单片机的价格在30~70元左右,三串口的单片机价格更加昂贵,直接增加了系统设计的成本。同时,由于各单片机的指令不同,以及由于串口功能的扩展带来的陌生寄存器的使用都增加了设计人员的工作量和难度。
(2) 软件模拟串口。其主要优点是成本低,但是可靠性和串口指标都无法控制,存在缺点:一是采样次数低,一般只能做到2次/BIT,这样数据的正确性就难以保证;二是不能实现高波特率通讯,软件模拟串口一般不能实现高于4800 bps的波特率。
(3) 专用IC器件。使用专用串口扩展芯片,例如TI等公司开发的16C554系列串口扩展芯片,通过并行口扩展串行口,功能比较强大、通讯速度高;成都国腾微电子有限公司推出的GM8123/25系列串口扩展芯片,通过串行口扩展串行口,可简单方便地实现全硬件扩展。但总而言之,串口扩展芯片价格普遍较高。
根据数据转换器的设计要求,考虑降低成本,最后选取可通过RS232接口在线编程的飞利浦单片机P89C669作为数据转换的主处理器。并充分利用P89C669丰富的IO口,通过AT89C2051来扩展数据转换器所需要的第三个串口,以低成本实现了串口扩展[4]。
3 UART的低成本实现方案
3.1 单片机IO口的分配、连线
P89C669[5]是基于Philips半导体新51MX(存储器扩展)内核的Flash微控制器代表。它包含96k字节的Flash程序存储器、2k字节的片内数据RAM、1个可编程计数器阵列(PCA)、可配置成不同时间范围的看门狗定时器(通过SFR的位设置)、2个增强型UART以及字节型I2C总线串行接口等。
P89C669主要实现电罗经和GPS信号数据的接收、转换和发送,AT89C2051主要用来扩展串口[5],具体的IO分配如下。AT89C2051的P1口与P89C669的P0口相连,作为数据通信总线;单片机AT89C2051的P3.3引脚接P89C669的P3.2引脚,作为AT89C2051向P89C669的发送请求信号( );AT89C2051的P3.2引脚接P89C669的P2.7引脚,作为P89C669向AT89C2051请求中断的控制信号;AT89C2051的P3.4引脚接P89C669的P2.6引脚,作为P89C669对AT89C2051读写操作的控制信号( );AT89C2051的P3.5引脚接P89C669的P2.5引脚,作为P89C669向AT89C2051写入指令或数据的控制信号( )。AT89C2051与P89C669之间的连接图如图2所示。
图2 P89C669与AT89C2051的硬件连接图