一种基于C8051F310的UART扩展实现

来源:慧聪网 作者:—— 时间:2010-05-27 09:12

 引言

  UART数据发送协议作为一种简单的数据发送协议,被大量的使用在当前各种数字外设的数据传输上。但是现在的PC机存在无UART接口或接口较少的问题,当需要利用PC机对于多个数字设备同时处理问题时,就需要在PC机上进行UART扩展,这类问题在笔记本PC上尤为突出。通常这种问题的解决方法有以下几种方法:(1)利用USB接口通过相应的转换设备进行转换。(2)利用PCI总线转换卡获得多个UART接口的扩展。前者优点在于实现简单设备,成本低。后者优点在于可以实现多个接口扩展且功能完善。但在实际使用中发现两者都存在一个共同的问题,即利用扩展获得UART接口其工作性能不够稳定,且存在不能完全实现多个UART接口的实时通讯。

  为解决上述硬件方法在工程实现存在的不足,本文针对项目实际需要提出了一种利用C8051F310单片机实现多UART接口扩展方法。通过单片机作为数据收发的中继器,实现对于多个UART采集的需要。

  UART数据发送

  8位UART数据传输主要利用RX,TX信号线实现数据的双向传输(如图1)。

  当数据接收时,数据线RX首先处于接收准备状态即RX呈高电平,根据UART数据发送协议,如果RX线有数据接收时,RX线被置为低电平,接收起始位,在起始位后是为数据位,当最后一帧数据接收完毕后,产生终止,终止位的作用为将RX线电平置高,是RX线处于等待状态。

  发送通过对于TX线上信号电平的操作实现对于数据的发送,发送初始状态下TX线处于高电平,当启动发送后将TX线电平置低产生起始位,在一个波特率时钟周期后将开始发送数据,数据发送完毕后重新将TX电平置高使发送机处于等待状态。

  单个UART实现方法

  本文利用C8051F310单片机作为软件UART实现的平台,主要方法是通过单片机的定时器产生波特率,根据波特率确定的位时间定时读取(或发送)位数据信号,从而模拟了硬件UART的工作过程。具体的实现方法如下所述。

  (1)硬件连接

  在UART的软件实现中主要是利用单片机模拟硬件UART的发送过程,因此我们利用C8051F310单片机中定时器T0工作的双八位定时模式用于产生波特率,PC机A0工作在边沿捕捉状态以捕捉SW_RX端口的电平变化产生,判断数据接收的初始和终止。具体的硬件连接如图2。


(2)软件实现

  发送状态机软件实现:将数据进入到发送缓冲寄存器,然后置SW_TX端口为低电平,启动发送,装载波特率源,此后每经过1/2个位时间后通过移位操作将发送缓冲寄存器中的数据按位改变SW_TX数据线电平从而实现数据的发送。

  接收状态机软件实现:当PCA0模块捕捉到SW_RX下边沿后为产生中断,捕捉接收起始位,然后转载波特率,此后每1/2个位时间读取SW_RX线数据位,通过移位操作进入接收缓存。在第九位是由PCA0捕捉停止位,完成接收。

相关文章

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子