SC26C94器件在测控、测试及数据处理系统中的应用

描述

1引言

在许多复杂的测控、测试及数据处理系统中,一般需要与大量的被控对象、被测试设备及自动化仪表进行通信,而这些对象、设备及仪表等所提供的接口大多是标准的异步串行接口形式,因此,在以CPU为核心,与多路外围设备进行串行通信的测控、测试系统中,需要对串行接口进行扩充,通过选择功能合适的接口器件完成系统的设计要求。

目前,市场上出现了多种型号的接口芯片, Philips半导体公司生产的四通道通用异步接收/发送器芯片SC26C94是其中之一。它以高集成度、低功耗、高性能、使用灵活等特点被广泛应用于航空、航海、工业控制等领域中。

2 SC26C94器件

SC26C94是采用COMS技术生产的四通道通用异步接收/发送器芯片,共有4个相互独立的通道,且每个通道各有4个数字I/O口和2个16位定时/计数器,它们均可以通过编程设置其工作方式。结构框图如图1所示。

处理系统

2.1 SC26C94特点

SC26C94为用户提供了+5V的供电方式,信号电平与TTL电平兼容,有DIP和PLCC两种封装形式,并具有以下特点:

·8字节发送FIFO;

·8字节接收FIFO;

·数据格式:5~8位数据位,包括奇校验、偶校验和无校验、1、1.5、2位停止位;

·发送和接收可设置不同波特率(23种固定波特率:50~230.4k或外部时钟的1倍或16倍);

·校验错误、帧错误和超限错误检测;

·起始位错误检测;

·通道工作模式可编程设置:即普通全双工、自动回绕、局部循环和远程循环四种模式;

·中断优先级可编程设置并自动识别;

·具有掉电保护模式;

·每个接收器配有“看门狗”电路;

2.2 SC26C94寄存器

SC26C94的工作方式是可编程的,工作方式通过对其一系列寄存器设置来定义,因此使用过程中,需要了解以下寄存器功能:

(1)MR0:工作方式寄存器0

定义发送和接收寄存器的FIFO工作状态及接收器“看门狗”是否启动。

(2)MR1:工作方式寄存器1

该寄存器和MR0组合定义接收FIFO工作状态及数据格式,包括:5~8位数据位、奇校验、偶校验和无校验、1、1.5、2位停止位。

(3)MR2:工作方式寄存器2

定义通道工作模式(包括普通全双工、自动回绕、局部循环和远程循环),停止位(1、1.5、2位)。

(4)CSR:时钟选择寄存器

该寄存器与BRG(波特率产生器)、ACR(辅助控制寄存器,选择波特率设置方式)一起设置接收和发送波特率。

(5)CR:命令寄存器

定义各发送接收端口工作状态及是否允许发送接收。

(6)SR:状态寄存器

反映发送接收缓冲器状态及帧错、奇偶校验错、超限错等状态。

(7)IMR:中断屏蔽寄存器

定义各端口是否允许中断。

(8)ISR:中断状态寄存器

反映当前中断类型。

(9)CIR:当前中断寄存器

反映当前中断的通道号和发送或接收中断类型。

3 SC26C94在测控系统中的应用

某航空测控系统是以80X86为核心,由A/D、 D/A及开关量控制、10种测试设备组成的,其中

测试设备中有8路为标准串行通信,分别为发动机转速、气压、高度、速度、遥测调制器、遥控解调器、地磁方向、GPS等量。系统选用两片 SC26C94,扩充8个串行口,实现80X86与8路测试设备的通信。

3.1 硬件设计

(1)振荡电路

SC26C94内部有一个用于构成振荡器的高增益反向放大器,引脚X1与X2分别是此放大器的输入端和输出端。此放大器与外部晶体构成一个振荡器,此例中采用了内部振荡电路。如图2所示,G1(G2)为3.6864MHz晶体;外部电容C2(C5)、 C3(C6)的典型值为24pF;另外,使用外部晶振时,可经过一非门,在非门输出端并联一个1k W的上拉电阻,从公共点引出与引脚X1连接。

处理系统

(2)复位电路

SC26C94复位时间必须保证RESET引脚上出现 1ms以上稳定的高电平,才可实现可靠的复位。因此无论是简单还是复杂的复位电路,均要保证此条件。图2中使用了简单的复位电路,其中R1 (R2)=1.5kW、C1 (C4)=10mF。

(3)接口电路

如图2所示,通过ISA总线将80X86CPU与SC26C94及其它系统连接起来。其中D1完成总线驱动、隔离和地址译码,RXD1~RXD8与TXD1~ TXD8是SC26C94的接收/发送端,分别与外部的8路测试设备连接,实现CPU与外围设备的通信。

3.2 SC26C94软件设计

SC26C94的软件设计首先是对其进行初始化,然后再分别对各个中断源进行中断服务程序的设计;可选择C或汇编语言进行编程。

3.2.1 初始化编程

初始化编程主要选择芯片工作方式,包括数据格式、波特率、中断允许、接收或发送缓冲器所允许的字节数等。编程方法及顺序如下:

(1)复位接收FIFO(CR)复位发送FIFO (CR);

(2)禁止DACKN;

(3)选择波特率组别(BRGrate);

(4)定义中断向量类型(ICR);

(5)选择波特率组别(ACR);

(6)设置中断屏蔽寄存器(IMR);

(7)指针指向MR0(CR);

(8)设置数据格式及波特率(MR0、MR1、 MR2、CSR);

(9)接收发送允许(CR)。

以C语言为例对通道A初始化程序设计如下:

outportb(uaraddr,uarCRa);

outportb(uarcen1,0x20);

outportb(uarcen1,0x30);

outportb(uaraddr,uarDACKN);

outportb(uarcen1,0);

outportb(uaraddr,uarBRGrate)

outportb(uarcen1,0x00);

outportb(uaraddr,uarICR);

outportb(uarcen1,0x02);

outportb(uaraddr,uarACRab);

outportb(uarcen1,0x80);

outportb(uaraddr,uarIMRab);

outportb(uarcen1,uar1IMRabd);

//UAR1 a yx1(laser)

outportb(uaraddr,uarCRa)

outportb(uarcen1,0xb0);

outportb(uaraddr,uarMRa);

outportb(uarcen1,0x80);

outportb(uarcen1,0x53);

outportb(uarcen1,0x07);

outportb(uaraddr,uarCSRa);

outportb(uarcen1,0x88);

outportb(uaraddr,uarCRa);

outportb(uarcen1,0x05);

3.2.2 中断服务程序设计

由于SC26C94四通道中的任何一个都可引起中断,因此在中断服务程序中首先要识别中断源,即识别中断是由哪一个通道引起,是发送中断还是接收中断,是有错误还是无错误等。流程如图3所示。

处理系统

根据流程图可编程如下:

void interrupt (*oldvect2)();

void interrupt UAR1_interrupt(void)

{

//保护现场//

for(ii2=1;ii2《=5;ii2++)

{

outportb(uaraddr,uarupdateCIR);

outportb(uarcen1,0x00);

outportb(uaraddr,uarCIR);

uar1cir=inportb(uarcen1);

outportb(uaraddr,uarISRab);

uar1israb=inportb(uarcen1);

outportb(uaraddr,uarISRcd);

uar1isrcd=inportb(uarcen1);

outportb(uaraddr,uarGIBCR);

count1=inportb(uarcen1);

if (count1 》 8) count1 = 8;

stt1=uar1cir&0x1f;

if(stt1《=3)break;

switch(stt1)

{

case 0x1c:

//中断服务程序//

break;

default:;

}

}

//恢复现场//

}

4 结论

上述测控系统设计及运行过程表明,SC26C94 具有使用灵活、功能丰富、系统连接方便、编程简单、可靠性高等特点,另外,其合理的性能价格比及畅通的货源渠道,表现出较好的工程实用特性,是一种实用的接口芯片,可广泛应用于自动化仪表、测试、测控及数据处理等系统中。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分