STC单片机自适应波特率串口的实现方法_第1页
STC单片机自适应波特率串口的实现方法_第2页
STC单片机自适应波特率串口的实现方法_第3页
STC单片机自适应波特率串口的实现方法_第4页
STC单片机自适应波特率串口的实现方法_第5页
全文预览已结束

下载本文档

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

文档简介

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

(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所示,可以进行参数设置和校准操作。设置、校准后,重力检测开关就可脱机正常工作了。

经反复验证,该电路在300~115200

温馨提示

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

评论

0/150

提交评论