当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种基于C8051F310的UART扩展实现

 引言

  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捕捉停止位,完成接收。[!--empirenews.page--]

  多个UART的扩展实现

  由于软件UART主要利用中断来控制接收和发送的,因此,当进行多个UART扩展是不可避免的遇到了由于中断处理时间对于UART上发送数据和接收数据的位时间对准问题。根据UART传输原理为了保证接收的准确性一般采用在1/2个位时间处读取和发送数据。因此无论进行多少个UART扩展其总的时间开销应小于1/2个位时间,因此当配置多个UART扩展时传输的波特率是有限制的。同时为了尽可能的多扩展UART应当尽量采用较高的系统时钟频率。

  在本设计中利用C8051F310实现了4路UART扩展。分别利用定时器T0,定时器T2,定时器T3和PCA定时器作为波特率产生定时器。设定波特率为9600b/s。

  考虑中断处理时间,前文提到了总的中断处理时间应小于1/2个位时间,考虑了最差情况,即4路中断同时并发的情况,一般而言此种情况是不常发生的,因此,认为只要满足下式:

  即可满足n个UART扩展的要求,其中为平均中断处理时间。

  对于中断时间的测定,可采用在中断开始和中断结束处设置断点读取定时器计数值方式获得。

  由此可以看出能否尽量多的扩展一定波特率要求的UART,主要是控制中断处理的时间采用尽量少的中断处理完成读取和发送的I/O端口控制,以及相应的移位操作,一般接收状态机中中断时间较长,而中断发送机时间较短。

  多串口数据转发协议

  本设计中实现多串口软件扩展的目的是为了解决端口不足的问题,利用一个串口实现对于多个UART设备的通讯,同时克服硬件扩展中信道占用问题,因此需要编制数据中继转发协议。

  下行数据的读取

  UART设备的数据发送可以分为两类:分为主从式和直发式,主从式数据的获取需要先向设备发送指令,通过指令获取相应设备数据。直发式设备则无论处于何种状态,系统加电后按照预定数据协议向上发送数据。在本设计中同时存在这两类设备。

  对于直发式设备本设计采用直接利用一路软件UART获取数据,将数据保存在单片机预先开辟好的一组存储区域中,对于主从式设备本设计采用由单片机按照其最小工作周期连续采集数据进行存储的方式(即利用单片保持数据的最小采集周期更新)。

  采集的时序安排,由于下挂的各种设备数据采集周期不同,因此不可避免的存在各种数据采集的时序问题,由于采用中断方式进行采集,这种时序的安排体现在了中断的优先级安排上。为了最大限度的保持数据采集的实时性,应将数据周期较长的设备设定为高优先级中断,这样在其设备采集设备的同时可以更新其他低速设备。

  上行数据的转发

  上行数据转发采用指令方式,即利用指令判断从数据存储区中获取那些设备的数据。通过这种方式把原来两类设备数据传输方式统一到了主从式上。

上行器件命令的发送

  主要采用协议地址的方式判明指令针对的设备,需要在单片机中对于指令按照预先编制的指令协议进行指令的解析,形成针对各自设备的指令码向下转发。具体的数据协议控制图见图3,多串口硬件见图4。

[!--empirenews.page--]

  实验

  (1)为了验证单个软件UART可用首先利用串口调试助手随机发送数据,选择不同的自动发送周期,每个发送周期连续1000字节数据发送检验数据接收和发送错误率,实验结果见表1。

  通过以上数据我们可以看到软件UART在发送和接收时间上存在延迟,因为利用中断和单片机对于数据的转发造成了数据传输的延迟,这是不可避免的,只要保证较高的单片机时钟频率,这种延时可以尽量的减小。其次当发送周期较短时,扩展串口的错误较高,但是延迟到50ms发送周期后这种错误基本解决。因此当传输周期越长,数据错误率越低。
 (2)定波特率下,4UART同时工作的测试结果见表2。

  波特率上升到115200b/s时,UART传输出现大幅错误,基本无正常数据。

  (3)接入实际设备后输出结果,发送指令码:0xaa,取4设备数据。

  由于设备1采集周期最长达到300ms,因此其优先级最高。且设备1一直发送数据。

  实验中发现由于设备1,一直向上发送数据,其他端口数据无法接收,当设备一端口被关闭后其他端口才可接收已经发送数据。表明此前其他端口设备数据被暂时保存在了硬件的缓存当中。

  结语

  通过实验表明在特定波特率条件下利用单片机实现的UART端口可以具有较好的稳定性,且延迟时间可以被接收,同时利用协议方式可以有效地避免硬件扩展串口存在的信道堵塞问题。对于一般PC扩展而言是一种很好的选择。但同时可以看到这种方法在通用性上同硬件扩展有很大差距,必须根据特定设备编写特定协议,并且利用编程模拟的UART接口对于波特率和数据传输时间上具有很高的要求,因此对于实时性要求较高的场合并不使用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

港交所拟修改主板上市规则,以便利尚未有盈利或业绩支持的先进技术企业融资。港交所刊发有关特专科技公司上市制度的咨询文件,提议对《上市规则》进行修订,建议设立新渠道,以让特专科技公司于联交所主板上市,并就此征询市场意见。新规...

关键字: 信息技术 新能源 硬件

串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。

关键字: 单片机 串口 STM32

流水账式的推文比较乱,不够系统,也形成不了好的宣传效应,所以我整理了一个硬件基础知识框架,后面推文会围绕这个展开,中间也会穿插一些项目和实际应用例程。

关键字: 硬件 项目 例程

Linux内核是从V2.6开始引入设备树的概念,其起源于OF:OpenFirmware, 用于描述一个硬件平台的硬件资源信息,这些信息包括:CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情...

关键字: Linux内核 硬件 CPU

单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位,发展到现在的32位甚至64位。当前国内MCU厂商已有上百家,对标进口芯片的情况非常严重,导致国内MCU产品将陷入同质化...

关键字: 单片机 MCU 市场

(微控制单元 MCU(Microcontroller Unit),又称单片机,是把中央处理器(CentralProcess Unit; CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、US...

关键字: 单片机 芯片 CPU

在疫情的影响下,出门后、用餐前使用酒精消毒已成了人们的日常,而酒精喷雾机也因此变得十分热销。为了避免交叉感染的风险,自动酒精喷雾器也就应运而生。不同于传统手动喷雾器不美观、手部接触不卫生的bug,此款自动感应酒精喷雾器使...

关键字: 芯岭技术 方案开发 解决方案 单片机

在实际的单片机控制系统中,有时候会使用数字逻辑芯片对单片机和受控元件进行隔离,以保护单片机,或者令单片机更好地对后级进行控制。

关键字: 单片机 数字逻辑芯片 受控元件

MH32F103AVET6使用高性能的32位内核,内置了多达2个高级定时器、10个通用定时器、2个基本定时器、3个12位的ADC、2个12位的DAC,还包含标准和先进的通信接口包括:3个SPI接口、2个I2S接口、2个I...

关键字: 单片机 MCU

珀金埃尔默日前推出Cellaca PLX图像式细胞分析系统,这是业界第一款能让研究人员在单个自动化工作流中实现对细胞样本多个关键质量属性进行分析和评估的台式平台,包括对细胞性质、质量和数量的分析评估。拥有尖端技术的Cel...

关键字: AC EXCEL 硬件 自动化

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭