STC单片机波特率自适应方法
摘要:为了缩小电路体积、降低硬件成本,同时又保证串口稳定可靠通信,采用的一种波特率自适应方法,该方法充分利用STC单片机运行速度快、拥有片内振荡器、片内资源丰富的特点,在串行通信程序中,利用单片机I/O口和定时器,对主机发送的固定字符进行测量、计算,得到合适的波特率常数,从而实现波特率自适应。给出了设计原理、实现方法、误差分析、流程图和部分程序,并通过应用实例验证该方法切实可行。
关键词:STC单片机;串口通信;波特率选择;自适应方法
中图分类号:TN911?34;TP391文献标识码:A文章编号:1004?373X(2013)23?0041?03
BaudrateadaptivemethodforSTCsingle?chipmicrocomputer
ZHAOPei?yu
(SchoolofElectromechanicalandArchitecturalEngineering,JianghanUniversity,Wuhan430056,China)
Abstract:Toreducecircuitvolumeandhardwarecost,andatthesametime,guaranteethestableandreliableserialportcommunication,abaudrateadaptivemethodisproposed.ThismethodmakesfulluseofSTCmicrocontroller′scharacteristicsofhigh?speedrunning,on?chiposcillator,richon?chipresources.Intheserialcommunicationprogram,themicrocontroller′sI/Oportandtimerareutilizedtodetectandcalculatethefixedcharactertransmittedbyhostforgettingtherightbaudrateconstant,soastorealizethebaudrateself?adaption.Thedesignprincipleandrealizationmethod,erroranalysis,flowchartandpartoftheprogramarealsogiveninthispaper.Thefeasibilityofthemethodwasverifiedbyatrueexample.
Keywords:STCsingle?chipmicrocomputer;serialcommunication;baudrateselection;self?adaptivemethod
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方式连接,从机自适应主机的波特率。
图1系统连接图
自适应过程由主机发送联络字符开始。为了使从机获得最大的测量脉宽,提高测量精度,由主机发送二进制“0”。如图2所示,二进制“0”由1位起始位,8位数据位(低位在先)及1位停止位构成,其中1位起始位和8位数据位全为0,所以低电平的宽度为9b。
图2自适应波形图
从机查询RXD引脚的电平,检测到低电平后就启动定时器0开始计时,再检测到高电平就停止定时器0计时,根据定时器0的定时值就可以计算出主机的波特率。
当时钟分频寄存器CLK_DIV=0(不分频),特殊功能寄存器AUXR=0xC0([T0]用[1T]时钟),则:
[每位传送所需时间=1fosc?T0计数值÷9](1)
[波特率=1每位传送所需时间=fosc?1T0计数值×9](2)
式中[fosc]为从机的时钟频率。
而STC51系列单片机在UART模式1,时钟模式为[1T]时,其波特率公式为:
[波特率=2SMOD?fosc(256-TH1)×32](3)
由式(2),式(3)可导出UART时钟为[1T]时:
[TH1(1T)=256-2SMOD?T0计数值288](4)
STC51系列单片机在UART模式1,时钟模式为[12T]时,其波特率公式为:
[波特率=2SMOD?fosc(256-TH1)×12×32](5)
由式(2),式(5)可导出UART时钟为[12T]时:
[TH1(12T)=256-2SMOD?T0计数值3456](6)
从机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。
表1UART时钟12分频时计算的波特率误差
表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之间完成波特率自适应,实现稳定可靠的通信。
表2UART时钟1分频时计算的波特率误差
4软件流程与程序
主机软件流程图如图3所示,从机软件流程图如图4所示。
图3主机软件流程图图4从机软件流程图
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ:
蒋老师联系QQ:
刘老师联系QQ:
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com
期刊推荐
- 《校园英语》旬刊 省级 教育类学术期刊
- 《吉林教育》旬刊 省级 教育类学术期刊
- 《文教资料》 旬刊 省级
- 《科技风》半月刊 省级 科技类优秀期刊
- 《价值工程》旬刊 国家级 科技统计源期刊
- 《中国实验方剂学杂志》 半月刊 北大核心
- 《电影评介》半月刊 14版北大核心
- 《社科纵横》季刊 社科类优秀期刊
- 《求索》月刊 14版北大核心期刊
- 《中华建设》月刊 国家级 建设类优秀期刊
- 《继续教育研究》月刊 北大核心期刊
- 《网络空间安全》(信息安全与技术)月刊 国
- 《新闻传播》月刊 省级 新闻类优秀期刊
- 《财会月刊》旬刊 14版北大核心
- 《体育文化导刊》月刊 体育类双核心期刊
- 《机械研究与应用》双月刊 省级 机械应用类
- 《公路交通科技》 月刊 北大核心
- 《教学与管理》旬刊 北大核心
- 《新课程研究》旬刊 省级 教育类优秀学术期
- 《中国医药指南》 旬刊 国家级
- 《高教论坛》 月刊 省级
- 《课程教育研究》 旬刊 国家级
- 《语文建设》 旬刊 14版北大核心
- 《教育发展研究》 半月刊 双核心
- 《学术界》 月刊 双核心