关键词:串行通信控制器 85C30 异步通信
1 概述
85C30是AMD公司生产的双通道、全双工、支持多种通信协议的通信控制芯片,该芯片自身带有串并、并串转换功能,可广泛应用于微控制器组成的多串口串行通信应用系统中。其内部集成了波特率生成器、数字锁相环和晶体振荡器等可编程器件,因而可大大减少对外围电路的需要,提高了系统的可靠性,更适用于高速通信应用领域。
85C30的主要特性如下:
● 具有两个可全双工工作的通信通道;
● 可异步、同步串行通讯;
● 符合面向字符的同步协议,如IBM BISYNC(二进制同步通信协议);
● 符合面向比特的同步协议,如同步数据链路控制协议HDLC和高级数据链路控制协议SDLC;
● 最高数据传输率为4M bit/s(同步模式);
● 内含波特率生成器、锁相环和晶体振荡器;
● 具有奇偶校验、字符插入或删除、CRC(循环冗余码)生成和校验等多种自动纠错功能。
2 内部结构和引脚功能
2.1 内部结构
图1所示为85C30的内部结构框图。85C30可用于各种微控制器系统中,并具有查询、中断和DMA工作方式。
2.2 引脚功能
85C30具有40-PDIP和44-PLCC两种封装形式?图2为其44-PLCC封装的引脚排列图。85C30的主要引脚功能如下:
D0~D7:数据线引脚;
RD、WR:读、写控制端?低电平有效;另外,若两个引脚同时为低,可使芯片复位;
A/ B:通道A/通道B选择;
D/C :数据/命令选择;
CE:片选信号;
+5V,GND:电源接入端;
PCLK:系统时钟输入端;
INT:中断请求;
INTACK:中断响应;
IEI,IEO:分别为中断使能输入、输出端口;
RxDA,TxDA:分别为通道A的串行输入、输出;
RxDB,TxDB:分别为通道B的串行输入、输出;
TRxCA,RtxCA:分别为通道A的时钟控制端;
TRxCB,RtxCB:通道B的时钟控制端;
SYNCA、W/REQA、DRT/REQA、RTSA、CTSA、DC-DA:通道A的同步通讯控制端;
SYNCB、W/REQB、DRT/REQB、RTSB、CTSB、DCDB:通道B的同步通讯控制端。
3 85C30中的寄存器
在数据通信过程中,系统是否能准确地按照规定的协议完成通信任务,主要取决于初始化及系统运行期间程序对85C30的读写寄存器的合理运用。使用时,对片上每个通道的设置都应包括16个写寄存器和11个读寄存器。在这16个写寄存器中,有10个写寄存器用于通用控制,2个用于同步字符的生成控制,2个用于片上波特率设置。此外,还有两个双通道共享的写寄存器,一个用于中断向量控制,另一个用于芯片总中断开关控制。在11个读寄存器中,有9个读寄存器用于存储通信状态和数据。
4 应用电路
85C30的接口电路如图3所示,利用该电路可实现双通道的全双工异步通信,波特率为115.2kbps。电路中采用无响应中断模式,即在85C30有中断申请且没有进行中断服务时,将85C30 的INT引脚拉低有效,以向MCU申请中断,而MCU不用向85C30输出INTACK中断响应信号,从而简化了电路。判定接收发送不同中断源的中断优先级可由程序实现。该电路主要由电平转换电路、译码电路和MCU电路组成。
电平转换电路的主要作用是提高板间通信的可靠性,由于板间通信采用的是485电平标准,因此,可利用MAX490全双工通信转换芯片将TTL电平信号转换为485电平标准的差分信号。而对于译码电路,由于85C30中有两个通道,每个通道又有各自的命令口和数据口,而且每个口都需要有相应的硬件地址。因此,该译码电路由MCU的高8位地址线、低2位地址线及GAL和地址锁存器573组成。
MCU电路主要由80C196KC组成,与MCU的连线有数据线D0~D7、RD、WR控制线和INT线,其中INT连至MCU的外部中断EXINT引脚,这样,一旦85C30有中断申请,MCU可将其作为一个外部中断申请来自动生成相应的中断向量,从而执行相应的中断服务程序。中断服务程序入口地址为0X203E。另外,PCLK外接11.05926M的晶振可用于为系统提供时钟。
图4 接收、发送中断服务程序
5 应用程序
5.1 初始化
图4给出了85C30一个通道的初始化流程图,由于芯片的两个通道所采用的通信协议完全相同,因此初始化过程也相同。每个通道的初始化可分为三个步骤:第一是进行各协议设置(如异步、校验、波特率、字符长度等);第二是对各种功能的使能(包括波特率生成器,接收中断,发送中断);第三为开中断。
5.2 接收发送中断服务程序
MCU在收到85C30的INT有效信号后将进入外部中断服务程序。图4给出了该中断服务的流程图。用该程序的一定顺序查询芯片的RR2即可实现芯片间和芯片内的中断优先处理任务,对85C30各中断事件的优先级设定如表1所列。
表1 85C30各中断事件的优先级
通道A接收中断 通道A发送中断 |
RR2=6 RR2=4 |
HIGH ↓ LOW |
通道B接收中断 通道B发送中断 |
RR2=2 RR2=0 |
85C30中的读寄存器RR2能实时反映出芯片内申请中断的各个中断源优先级最高的中断源,当芯片没有中断申请时,RR2的默认值为3。程序执行时,系统将首先判断U4是否有中断申请,若有,则处理相应任务。另外,在MCU处理了一个85C30的中断源后,再次读取RR2,则可再次得知当前申请中断的优先级最高的中断源。这样,就可以通过一次硬件中断申请来完成多个中断源的任务,从而大大节省了频繁进出中断的现象,从而节约了中断处理时间,提高了系统的可靠性和灵活性。
6 结束语
85C30具有两个通道,可支持多种通信协议,并可方便地扩展系统串口,提高系统通信的灵活性和可靠性。当系统中各子通道通信速度不一样时,仅需修改各自通道中的波特率寄存器的设置即可。实验证明:在异步模式下,该系统可实现双通道115.2kbps的通信速度,且其错误率为0%。