51单片机的多串口扩展设计

元器件信息   2022-11-28 14:53   344   0  

目录

1.16C554原理

1.1内部结构

1.2内部寄存器

1.3应用特点

2.应用设计

2.1硬件设计

2.2初始化流程

2.3中断接收流程

小结

  串行通信在智能仪器系统数据通信中一直扮演极重要的角色,具有线路简单、应用灵活、可靠性高等优点,目前已成为许多高端CPU和低端单片机的标准配置。由于51单片机多数只提供了一个串口资源,最多二个串口,几乎没有超过这个数目的,所以软件模拟串口的收发工作往往是此类系统的扩展多串口的首选方案,但该方案不仅占用资源,且应用效果并不理想。因此本文采用了16C554扩展串口资源,并提供了实际电路原理图和软件的模块化设计方案及部份软件代码等。

  1.16C554原理

  16C554是一种通用异步串行收发器,采用并行一串行转换机制提供了4组RS --232接口,每通道可配置最大16字节FIFO (First In First Out)缓存,其总线接口方式,便于和MCS-51单片机连接,实现串口扩展;其可以提供两种接口:16模式和68模式,16模式专门针对51系列单片机;68模式针对Motorola系列和其它系列单片机,提供FIFO和 DMA两种工作模式。

  1.1内部结构

  图1是其内部一组通道(其它三组一样)的原理框图。它提供了数据总线(D0-D7)、读写控制信号(IOW/R)及片选信号(A0-A2,CS),还提供符合RS -232协议的接口信号,如TxD,RxD及Modem控制信号等,并具有内部通道自检功能;其工作流程是:在控制信号(Iow,IOR,CS,A0-A2)的作用下,对指定的某一路通道进行操作;数据或从8位数据线写入到发送寄存器(Transmit FIFO Registers),启动发送工作,或者从接收寄存器(Receive FIFO Registers)进行读取操作;当发送寄存器或接收寄存器发送完成或接收到一个字节的内容时,对应通道的INT A-D会从高电平变化为低电平,这个信号变化可以作为单片机的中断源。

16C554内部原理图

  图1 16C554内部原理图

  1.2内部寄存器

  在应用时,必须首先对16C554 内部的几个重要功能寄存器如中断使能寄存器等进行设置,当设置正确后,16C554 才可以正常工作。部分寄存器是独立地址,有一些寄存器是共用地址,根据读写操作的不同,代表的功能是不同的,具有不同的物理意义(见表1、表2)。

表1.16C554内部功能寄存器说明

表2.16C554设置波特率说明

  1.3应用特点

  器件的主要特点如下:支持3.3V和5V,内部包含4片16C550,最高可达1M的波特率,可软件设定波特率;16字节带错误指示功能的接收FIFO缓冲器;可编程设定的数据格式:数据长度为5、6、7、8等位,停止位长度为1、1.5、2等位,提供偶校验、奇校验或无校验模式;标准的调制解调器接口;68引脚PLCC和80引脚TQFP两种封装形式。

  2.应用设计

  2.1硬件设计

  在采用89C58实现的一个移动目标无线遥测遥控系统中,需要完成的工作主要有:GSM通讯、GPS处理、PC通讯以及手柄通讯等,这些外设都是通过RS—232接口和51单片机通讯的。采用16C554扩展51单片机串口的连接如图2所示。

采用16C554扩展的51单片机串口连接

  图2 采用16C554扩展的51单片机串口连接

  图2中,D[0-7]连接51单片机的P0口,A0/A1/A2连接到P0的三位地址线;GSMCS、GPSCS、HSETCS及PCCS分别代表着A通道(连接到GSM)、B通道(GPS通讯)、C通道(手柄显示)及D通道(计算机通讯通道)的片选信号,连接到P2口的三位地址线;INTA/INTB/INTC/INTD是四通道的接收/发送后的指示信号,作为51单片机外部中断源INT0,当四通道中的任一通道接收到内容,都会触发51单片机中断申请,使51单片机进入中断程序,读取内容与PC、手柄的串行通讯经过了RS- 232电平变换,以满足较长距离通讯的需要。

  图2中,4个二极管和一个与非门组成5U1中断信号电路,芯片复位端和51单片机复位信号相连。

  特别需要说明的是16C554的供电电路。实践中,发现它极易受到电源波动的影响,导致通讯失败。因此,电路中采用电阻5R4和5C1、5C2组成了一个RC滤波电路,且在布板时,根据就近连接的原则,把5C3和PIN13、5C4和PIN47、5C5和 PIN64就近连接,提高了它的抗干扰能力,如果5R4用电感代替,效果更好。

  2.2初始化流程

初始化流程

  图3 初始化流程

  通常情况下,对于16C554的各个通道而言,差别仅在通讯的波特率、校验位等不同,因此在设计软件时,尽量模块化,即设置模块、读操作模块及发送模块等尽量共用。图3是初始化操作的流程图,相应的代码如下所示:

代码

  通常51单片机软件的主循环是一个死循环结构,但如果其他功能模块也存在一个死循环的结构,那么在条件判断的条件无法满足时,51单片机系统往往就进入到类似“死机”的特征,导致系统崩溃无法完成预定任务,且这种条件错误并不是系统的主要任务。因此,在初始化流程中,引入了任务限时服务机制,在初始化条件失败后,仍然可以正常退出初始化模块,以便后续任务继续得到进行,如LCD或LED提示初始化16C554失败等。

  Setup模块的入口参数为:DPH,R5,R6,R7。DPH代表的是四通道对应的地址,R7、R6代表着对应通道的波特率设置值,R5代表了设置对应通道的中断源。在实际应用中,只需对上述4个字节赋予不同的值,连续调用4次,就完成了对16C554 四通道的初始化工作。

  2.3中断接收流程

  与通过16C554发送流程相比,接收流程要复杂一些;为了提高51单片机程序的运行效率,采用中断方式读取,从而完成接收任务,流程图如图4所示。

外部中断0处理流程图

  图4 外部中断0处理流程图

  进人外部中断服务后,首先进行现场保护,把终端中使用到的公共变量保存,如保存DPTR和A等,然后依次完成各通道的读取保存任务。图4中最重要的是:完成四通道任务后,在退出中断服务前,还需要再次检查这四个通道是否仍然存在有接收中断。如果有则继续在中断服务程序中读取,否则退出中断服务程序。实践应用表明:如果没有这种处理机制,在串口通讯发生时,51单片机会一直处于被申请外部中断状态,导致其他任务无法得到正常运行,即死机。

  小结

  以上就是51单片机的多串口扩展设计了,经实践表明,采用FIFO设计的16C554,减少了中断服务时间,不仅提高了51单片机程序的效率和处理速度,而且可应用在高速调制解调器和需要快速数据处理时的网络环境;在仪表系统中,51单片机因其应用特点,将来仍然会占有很大的市场份额,因此,扩展它的串口资源具有一定的使用和参考价值。

登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。