用多路复用器扩展MCU串口
多微控制器(MCU)/微机组成的分布式、主从式系统是现代复杂通信、控制系统的典型解决方案。分布式环境下的多机协同,要求系统状态和控制信息在多机间进行快速传递,这通常借助简单有效的串行通信方式。现有的微控制器一般所带的串行接口非常适用于点对点通信的场合;但对于实时性要求高的多机通信场合,这类接口必须在串口数量和功能上进行扩展,才能满足对实时性要求较高的应用场合的需要。
本文引用地址://www.cazqn.com/article/3030.htm本文讨论了一种适用于多机实时环境下的、新的可重配置串口扩展方案。图1为本方案框图。多路复用器是本方案的硬件核心。方案的要点是利用Mux动态地将MCU的串口在串行通道间切换,以达到串口扩展的目的。本文中MCU以89C51为例,Mux 以MAX353为例。
MAX353 是Maxim公司推出的高性能多路复用器,实际可构成两对单刀单掷模拟开关,两对开关状态由一个引脚控制。MAX353基本参数为导通电阻小于35Ω;导通时间小于175ns,关断时间小于145ns。以上参数完全满足本方案的使用要求。
以下介绍本串口扩展方案的基本工作原理。
两串行通道和MAX353、89C51的连接 两串行通道CH1,CH2通过多路复用器MAX353接到89C51的串口,多路复用器MAX353由89C51的一个I/O引脚控制。其中串行通道CH2的输出TXD2同时接到89C51的外部中断输入请求INT0或INT1上。为了适应各种串口通信协议的需要,可在电路中加上电平转换器件,如图1所示。
中断源的使用和设置 CH1仍旧使用串口中断,而CH2使用外部中断INT0或INT1(下面以INT0为例)。当CH2有信息来时,TXD2上将出现起始标志:一个下跳沿。应将INT0设置成为边沿触发,该下跳沿将使89C51进入外部中断服务程序,将串口切换到CH2。
基本工作原理简介 假定外部中断的优先级比串口中断优先级高,又假定在默认情况下,89C51通过I/O口控制Max353,将CH1和89C51的串口相连。当CH1有信息来,将引起89C51的串口中断,实时地接收CH1的信息;反之,当CH2发来信息时,即由远端机发来“发送字符”(发送该字符的目的仅仅是要89C51产生外部中断,该字符姑且称之为“发送字符”)以引起外部中断。利用该中断,控制MAX353将CH2切到89C51的串口,为接受来自CH2的正规信息作准备;CH2再有信息来时,即可通过89C51串口接收,实现串口扩展。
通过以上步骤,系统已经在硬件上已经完成了串口扩展,尚需编制相应的支撑软件。
如果89C51是发送方,那么端机地址(这里地址指的是通道)显然已知,据此控制MAX353,将串口切换到正确的通道上即可;如果89C51是接收方,89C51不知道信息何时、从何通道来,为此需要建立特定的全局标志。
首先89C51的串口中断服务程序应区分是CH1还是CH2引起的串口中断,检查控制MAX353串口I/O引脚状态可作出判断;设置全局标志CH1_Abort作为CH1串口中断服务程序提前终止标志;设置全局标志Extern_on以表明外部中断曾发生。CH1串口中断服务程序检测该标志,决定是否需要快速退出并复位Extern_on;为了提供系统的容错能力,用一个定时器检查CH2占用串口的时间。定时器的时间定为通道切换的最长时间(包括软件和硬件所需时间)。图2给出了89C51的详细工作流程。在此采用了下面直观的类状态迁移图的形式,特别是对全局性的状态标志(如Extern_on、CH1_Abort等)的设立和复位进行说明。
从图1可以清楚地看出,本方案硬件开销极少;原则上,以此方法可对微控制器的串口作进一步的扩展。串口的扩展为系统提供了实时性强、可靠性高的串行通信能力;可通过改变通道和MAX353连接改变两通道的优先级,达到灵活配置通道优先级的目的。■
参考文献
1. 何立民:《MCS-51系列单片机应用系统设计系统配置与接口技术》,北京航空航天大学出版社,1996年12月;
2. AT89C51:8-Bit Microcontroller with 4K Bytes Flash;Atmel Corp.
3. 刘乐善等:《微型计算机接口技术原理及应用》,华中理工大学出版社,1998年1月。
评论