STC单片机波特率自适应方法-基础电子_第1页
STC单片机波特率自适应方法-基础电子_第2页
STC单片机波特率自适应方法-基础电子_第3页
STC单片机波特率自适应方法-基础电子_第4页
STC单片机波特率自适应方法-基础电子_第5页
已阅读5页,还剩5页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑STC单片机波特率自适应方法-基础电子摘要:为了缩小电路体积、降低硬件成本,同时又保证串口稳定可靠通信,采用的一种波特率自适应方法,该方法充分利用STC单片机运行速度快、拥有片内振荡器、片内资源丰富的特点,在串行通信程序中,利用单片机I/O口和定时器,对主机发送的固定字符进行测量、计算,得到合适的波特率常数,从而实现波特率自适应。给出了设计原理、实现方法、误差分析、流程图和部分程序,并通过应用实例验证该方法切实可行。

0引言

串口RS232是工业控制、仪器仪表、计算机外设常用的一种通信协议。串口通信的波特率一般都是选取标准系列值,并要求通信双方严格遵循相同的波特率,实际应用中,一台设备往往要与多种其他设备联络,为适应各种不同设备的通信速度,就要求该设备能适应不同的波特率,实现这种要求的常见方法有两种,一是增加波特率选择开关,二是设计能自动适应各种常见通信速度的串口。种方法增加了硬件,同时针对不同对象需要重新设置开关,在不清楚对方波特率的情况下还无法使用。第二种方法采用软硬件结合,通过检测、计算,自动选择正确的波特率,实际使用极其方便。

自适应波特率串口的实现方法通常有以下几种:

(1)协议约定通信开始时主机固定发送1个字符,从机以不同的波特率试探接收,当接收到的数据与约定相同时,确定该波特率即是正确的通信波特率。

(2)协议约定通信开始时主机发送1串字符,从机以某固定波特率接收,然后通过软件分析接收到的数据,计算出接收数据与发送数据之间的倍数关系,从而确定正确的波特率。

(3)协议约定通信开始时主机固定发送1个字符,从机用单片机定时器检测RXD上的信号宽度,通过计算来确定主机的波特率。

以上3种方法,种由于需要多次试探,效率很低;第二种计算量过大,不适合单片机处理;第三种方式单片机有现成的定时器资源,计算也相对简单,所以优选这种。

要测量脉冲宽度,前提是单片机的时钟信号必须稳定。目前很多STC单片机可选外接晶振时钟或片内RC振荡时钟,片内RC振荡时钟省去了外部的晶振等元件,成本降低、电路板的体积也可以缩小,这对成本及体积敏感的应用很具优势。但选用片内RC振荡时,频率会有±15%左右的误差,频率的稳定性也比外接晶振要差,按理论计算值设置波特率参数,无法保证可靠的通信,但按以上自适应波特率串口的第三种方法,每次通信前实测、计算、确定波特率常数,就可以实现稳定可靠的通信,这样充分利用了STC单片机的优势。

1STC单片机的特点

标准51芯片由于定时器分辨率只有1μs,对于较高的通信波特率来说,测量精度不够,导致计算值不准,无法正常工作。STC系列单片机是在标准51单片机基础上发展起来的,它增加了很多实用的接口电路,扩大了时钟的频率范围,设计出了1T时钟的芯片,可以通过软件对系统时钟分频,并提供了片内RC振荡时钟,在目前51芯片的市场占有极大的份额。STC系列单片机采用片内RC振荡时钟、自适应波特率串口通信技术,可以广泛地应用于分布式控制、智能仪表、通信等行业。

2自适应工作原理

STC单片机采用异步通信,UART工作于模式1(8位UART,波特率可变),用定时计数器2做波特率发生器,工作于模式2(8位自动重装模式),主从机按图1方式连接,从机自适应主机的波特率。

自适应过程由主机发送联络字符开始。为了使从机获得的测量脉宽,提高测量精度,由主机发送二进制“0”.如图2所示,二进制“0”由1位起始位,8位数据位(低位在先)及1位停止位构成,其中1位起始位和8位数据位全为0,所以低电平的宽度为9b.

从机查询RXD引脚的电平,检测到低电平后就启动定时器0开始计时,再检测到高电平就停止定时器0计时,根据定时器0的定时值就可以计算出主机的波特率。

当时钟分频寄存器CLK_DIV=0(不分频),特殊功能寄存器AUXR=0xC0(T0用1T时钟),则:

而STC51系列单片机在UART模式1,时钟模式为1T时,其波特率公式为:

从机UART在模式1下,将式(4)或式(6)计算结果作为定时器1重装值,设定通信参数,通过串口回送应答信号给主机。主机如正确接收到从机回送的信号,就说明从机已完成波特率自适应,可以开始正常通信了。

3误差分析

为保证可靠通信,要求通信双方的波特率相对误差小于2.5%.

在自适应波特率校准系统中,误差主要来自两个方面,一是定时器T0启动和停止滞后造成的误差ΔT0;二是波特率发生器T1本身固有的一个机器周期误差ΔT1=±1.由于STC51单片机采用1T时钟定时,ΔT0误差只有标准51系列芯片的112,系统误差主要由ΔT1决定。

以STC12C5620为例,当采用片内RC振荡,时钟频率通常在5.2~6.9MHz之间。当时钟频率为5.2MHz,SMOD=1时,UART时钟分别按12T,1T计算,见表1,表2.

表1、表2中加粗部分表示可以选用的波特率值,由表1、表2可知,只要编程时选择合适的时钟,在5.2MHz时钟频率下,波特率可以在300~115200b/s之间实现自适应,由T1取整带来的误差在0.5%以内。当系统时钟为6.9MHz时,用同样的方法计算,也可以证明波特率可以在300~115200b/s之间实现自适应,由T1取整带来的误差也在0.5%以内。由此可见,STC12C5620采用片内RC振荡,可以在300~115200b/s之间完成波特率自适应,实现稳定可靠的通信。

4软件流程与程序

主机软件流程图如图3所示,从机软件流程图如图4所示。

以下为C51波特率自适应程序:

5应用实例

采用STC12C5620设计的重力检测开关,如图5所示。为降低成本、缩小体积,采用了片内RC振荡,不设按键及显示。重力检测开关首次工作前需设定一些参数,并校准。由于没有键盘及显示,采用和计算机联机设置、校准。本电路采用了上述的自适应波特率工作方式,由PC机作主机,通过串口来初始化重力检测开关的各参数。

设置时,将重力检测开关与计算机之间用RS232线连接好,然后点击PC机软件界面上的“连接串口”按钮进行波特率自适应,当界面上状态栏提示“连接串口成功!”时,表示波特率自适应工作正确完成,如图6所示,可以进行参数设置和校准操作。设置、校准后,重力检测开关就可脱机正常工作了。

经反

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论