微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 双机热备单片机系统内部通信接口的简化设计

双机热备单片机系统内部通信接口的简化设计

时间:06-24 来源:互联网 点击:
单片机以其高可靠性和高性价比在工业控制、数据采集系统、智能化仪表、办公自动化等诸多领域得到极为广泛的应用。在测控系统中,有时对单片机系统的可靠性有非常严格的要求。除了在系统设计、生产中采用多种措施以提高其可靠性之外,双机热备份是一种非常有效且经常被采用的方法。在双机热备份系统中,两个单片机必须保持工作状态的完全一致,需要随时进行数据交换。通常可以使用多单片机信息共享技术来实现两个单片机的数据交换,如信箱存储系统、共享存储器等,但这些方法实现复杂,硬件成本高1。大多数单片机都提供通用串行收发器(UART),在单片机系统不与其他设备(如上位机)进行通信的情况下,使用UART是非常方便的,但不幸的是绝大多数情况下UART已被使用。当然也可以扩展串行和并行通信接口,但硬件成本又会增加。因此,在满足系统性能的条件下,充分利用单片机本身的资源,最大程度地简化内部通信的接口设计非常值得研究。在单片机家族的众多成员中,MCS-51单片机以其优越的性能、成熟的技术、高可靠性和高性价比,在工业测控领域中有着广泛应用,本文即以MCS-51单片机为例?给出两种双机通信的简化接口设计。

1 通过单片机的P0口进行内部通信

这种通信接口可以在只使用一片74LS245的情况下获得较高的传输速率。图1给出了这种接口的简单示意图。总线收发器74LS245接在两个单片机的P0口之间,作为内部数据传输的通道。P0口既是分时的地址/数据总线,又可作为I/O口使用。由于P0口为开路输出,作为I/O口应用时应加上拉电阻,为了简洁,图1中未画。总线收发器的使能端和方向控制端DIR均受逻辑控制单元控制。逻辑控制单元的输入是P1口的三根口线,和指示单片机运行情况的两个信号U1ERR和U2ERR。为方便起见,先将逻辑控制单元的逻辑方程写出。

U2P12=U1P11?U1ERR
U1P12=U2P11?U2ERR
E=(U1P13+U2P13)?U1ERR U2ERR
DIR=U1P13 U2P13

U1ERR和U2ERR指示单片机的运行状态,通常反映ALE信号的有无。这里约定U1ERR和U2ERR为0时表示单片机正常运行(即有ALE信号)。U1P12、U1P11、U2P12、U2P11用来进行单片机之间的联络,约定高电平有效。任一单片机发生故障,则其P1.1的信号无法传到另一单片机的P1.2端。DIR受两个单片机的P1.3控制,决定数据是由单片机1送往单片机2还是由单片机2送往单片机1。也受两个单片机的P1.3控制,但同时受U1ERR和U2ERR控制,任一单片机发生故障,则为1?74LS245被关闭。

1.1 工作原理

以单片机1请求传送数据给单片机2为例,其工作过程如下:

?1 单片机1将其P1.1置1,表示请求发送数据,同时将其P1.3置1?
?2 单片机2检测到其P1.2口的高电平后,将其P1.1置为高电平,表示响应数据发送请求,同时也将其P1.3置1。这时74LS245的为0?DIR为1,数据可以从单片机1的P0口送往单片机2的P0口?
?3 单片机1将要传送的数据送上P0口,并将其P1.1置为0,表示一字节数据发出?
?4 单片机2检测到其P1.2的低电平后,将数据从P0口读入,并将其P1.1置为0,表示数据已被接收?
?5 单片机1检测到其P1.2的低电平后?可以开始下一字节的传送或结束传送。

数据由单片机2送往单片机1的过程与上类似,只不过单片机1在接收到数据传送请求后是把其P1.3置为低电平?以使74LS245的DIR为低电平?数据传送方向与上相反。与图3给出的电路相比,这种设计方式有着更高的传输速率。

1.2 接口电路说明

图1所示电路是为叙述方便而简化的,应用中可以根据实际情况重新设计。因此,上述电路及方程都不是唯一的。


但此类电路需共同遵循的原则是:
(1)使用总线收发器以进行数据的并行双向传送;
(2)总线收发器的使能端和方向控制端受逻辑控制电路的控制,且能在不进行数据传送和单片机故障时,使总线收发器处于关闭状态;
(3)两个单片机应有联络信号,以决定什么时候进行内部数据通信。

按照以上原则,实际电路是多种多样的。控制信号除了可以使用P1口的口线外,P3口未用的口线以及P2口未用的高位地址线也可以使用。例如,可以使用P3口的一根口线输出联络信号,而联络信号的输入接到单片机的外部中断输入端,这样单片机以中断的方式响应内部数据传送请求,可以进一步提高传送速度。

逻辑控制单元可以由门电路构成,但许多情况下都使用可编程逻辑器件如GAL降低整个系统的成本,提高可靠性。


图2是笔者设计的接口电路在数据采集系统中的应用实例?为简洁?未画出P0口所需的上拉电阻 。在这个系统中?P1、P3口全部被占用,且扩展了2K字节的外部静态RAM,系统需要对16路数字输入量进行采集。因此,逻辑控制使用P2口的高位地址线A13A12A11 A12A11为00~10时选通存储器和输入通道。逻辑控制单元使用了一片GAL16V8。GAL16V8兼做地址译码器,实现对静态RAM和输入通道的选通(图中只画出了与内部通信相关的输出)。GAL16V8的逻辑方程中与内部通信相关的六个方程如下(按FAST-MAP格式)?2:

U1P27=U2P26
U1P27.OE=/U2ERR
U2P27=U1P26
U2P27.OE=/U1ERR
245E=U1A12 U1A11 U2A12 U2A11
245DIR=U1A13 U2A13

由上述逻辑方程可以看出,只有两个单片机成功地进行联络后才能打开总线收发器进行数据传送。当一个单片机出现故障后其联络信号被GAL置为高阻状态?另一单片机不能与之联络,总线收发器处于关闭状态?不会影响正常单片机的工作。

2 通过单片机的UART进行内部通信

当单片机的UART被用于与其他设备?如上位机 进行通信时?可以分时用于内部通信。这种设计方法硬件电路最为简单。为提高通信距离和防止干扰,单片机系统与其他设备的通信多使用RS-485通信。下面以此为例介绍内部通信接口的设计。图3直接示出了这种接口的一个电路实例。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top