STC单片机自适应波特率串口的实现方法

时间:2023-03-18作者:佚名

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

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

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

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

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

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

  1 STC 单片机的特点

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

  2 自适应工作原理

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

  STC单片机自适应波特率串口的实现方法

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

  STC单片机自适应波特率串口的实现方法

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

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

  STC单片机自适应波特率串口的实现方法

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

  STC单片机自适应波特率串口的实现方法

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

  3 误差分析

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

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

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

  STC单片机自适应波特率串口的实现方法

  STC单片机自适应波特率串口的实现方法

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

  4 软件流程与程序

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

  STC单片机自适应波特率串口的实现方法

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

  STC单片机自适应波特率串口的实现方法

  STC单片机自适应波特率串口的实现方法

  5 应用实例

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

  STC单片机自适应波特率串口的实现方法

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

  STC单片机自适应波特率串口的实现方法

  经反复验证,该电路在300~115 200 b/s 波特率范围内可稳定通信工作。

  6 结语

  该波特率自适应方法,可扩展应用于其他单片机系统,解决对方的波特率未知、或对方的波特率有偏差而无法正常通信的问题,即使对方的波特率不是标准值也可正常工作,具有较大的实用价值。

相关阅读

三相电和两相电的区别是什么?

三相电和两相电的区别是什么? 三相电就是三根相线,三根线之间电压都是380v,用于三相电源供电设备比如三相电动机;两相电是两根相线,线与线之间电压也是380v,一般交流焊机用的...
2023-06-27
三相电和两相电的区别是什么?

电工口诀-快速掌握测量仪表方法和技巧

电工测量的对象主要是指电流、电压、电功率、电能、相位、频率、功率因数、电阻等。测量各种电量(包括磁量)的仪器仪表,统称为电工测量仪表。 所谓电工测量,就是将被测的电...
2023-06-11
电工口诀-快速掌握测量仪表方法和技巧

基于LM317的15A可调电源电路图

该可调电源电路提供可在 1.5 至 15 伏之间调节的输出电压源,并提供 15 安培的电流。 如接线图所示,15 A 可调电源通过四个功率晶体管的并行工作提供相似的电流量,这些功率晶体管必...
2023-08-16
基于LM317的15A可调电源电路图

电厂发生蓄电池着火事故,切勿慌张,我厂事故预想来帮您

1. 值长职责: 2. 现场值班员职责: 3. 处理事故的依次侧重点: 4. 汇报原则: (2)值长接到报告但未发现异常信号,不能明确判断是否着火的,应立即安排值班员到现场进行确认,并...
2023-06-13
电厂发生蓄电池着火事故,切勿慌张,我厂事故预想来帮您

PLC应用:典型S7-300 PLC硬件控制系统安装(四)

PLC技术是一门强调实践的课程,如果不动手,只是看书,是不能学好PLC的。看十遍书,不如动一次手。所以学习PLC的过程就是实践、实践、再实践。学习者边学边做本书全部项目,完成...
2023-06-25
PLC应用:典型S7-300 PLC硬件控制系统安装(四)

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

公牛开关插座面板全屋定制全屋配齐家装报价单官方正品付款链接Q9

公牛开关插座面板,为您的全屋定制家装提供一站式解决方案。我们提供全屋配齐的家装报价单,确保您的家装项目完美无缺。所有产品均为官方正品,品质保证,让您用得放心。...
¥ 1

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目