历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2018年02月26日 | 单片机串行通信中波特率的自动整定

2018-02-26 来源:eefocus

  串行通信在波特率误差超过一定范围时,会产生错误。本节介绍的内容在51单片机上仅用软件就实现了波特率自动整定,最大程度地减小了波特率误差,因而可使串行通信的可靠性得到提高。
  
  51单片机具有一个全双工的串行接口,提供了多机通信功能,可方便地构成多机系统(多机容错系统、集散型多级系统),为完成大型的控制任务提供了有效的手段。用51单片机组成的多机控制系统,国内已出现多例。在这样的系统中,可靠地实现多处理器间的信息交换(串行通信)是十分重要的。本节的研究发现,波特率作为串行通信的速率,同时对通信的可靠性有重要影响。


一、正常串行通信的实现条件
  
  串行通信是按位传送数据的。每个数据有8或9个数据位,加上起始位和停止位构成一个串行帧。每一位占用时间T,1/T称为串行通信的波特率。理想情况下,发送机和接收机设置的波特率一致。接收机的接收控制器在串行帧每一数据位的中点进行采样,能接收到正确的数据,但要求波特率完全一致是不可能的。这就提出了一个问题:要可靠地实现串行通信,允许收发双方的波特率有多大误差?我们以一个10位的串行帧为例进行分析。

  图1 - 85 (b)是正常工作的情形,波特率一致。在图1 - 85(a)中,接收波特率不变,而发送波特率变小,每位的时间T延长5%,在第10位采样时,就产生了错位,不能进行正常通信。对于10位的串行帧,允许的最大波特率误差不超过5%;在多机通信方式下,串行帧是11位的,允许的最大波特率误差不超过4. 5%。
  
  上面得到的仅仅是理想情况下的波特率误差允许上限。实际应用中,由于硬件设备的频带有限,数据位的上下跳沿要占用一定时间,每个数据位的有效时间比理想情况要短,所以对波特率误差会有更严格的要求。

二、波特率误差来源及克服办法

  1.51单片机串行通信波特率的产生
  
  51单片机的串行口有4种操作模式,由串行口控制字SCON中的两位SMO和SM1设置。模式0作同步移位寄存器,与通信无关;模式2的波特率直接由机器主频fosc决定,不方便应用;常用的是模式1和模式3.分别是8位和9位异步通信口。其波特率是可变的,由机内的定时/计数器1(C/T1)来产生,波特率有以下公式:


  
  其中SMOD是电源控制字PCON中的一位,可编程为0或1。
  
  C/T1有3种工作模式:模式0为13位定时/计数器,模式1为16位定时/计数器,而模式2是可自动重装时间常数的8位定时/计数器。当需要的波特率不是太低时,一般用模式2作波特率发生器:一方面省去了用C/Ti中断服务重装时间常数的工作,更主要的是避免了因中断响应时间不同引起的波特率随机误差。对C/T,的模式2,波特率按如下公式计算:


  
  式中:fosc为晶振频率;TH1为时间常数。
  
  若采用6 MHz的晶振,用模式2可产生的最低波特率为61。对于实时控制系统,绝不会采用更低的信息传递速率(每秒6个数据)。所以,以下讨论只限于C/Ti的模式2作波特率发生器的情况。
  
  2.波特率误差的来源
  
  由式(1 -4)可知,fbit与fosc及TH1有关。首先考虑fosc对.fbit的影响。51的振荡器电路是  由晶体及电容C1、C2构成的。XTAL1及XTAL2为外接晶体管引脚。fosc主要由晶体的固有频率决定,同时也与电容C1、C2及外界温度有一定关系。另外,晶体频率的标称值与实际值也不可能完全一致。我们曾测定过一组标称4 MHz的晶体,发现离散度达2%。由式(1-4)得:

  这说明用有误差的fosc去计算fbit时,fbit,会产生同样大小的相对误差。
  
  下面考虑TH,的影响。时间常数只有8位字长,这样就必然存在量化误差。采用四舍五入后,THi的量化误差|△TH1| mAX=0.5。综合式(1-4)、(1-5)得:

  由式(1 -6)可以看出,由量化误差产生的波特率误差与波特率成正比,与fosc成反比;并且若置SMOD-l,则可使误差减小一半。
  
  3.减小波特率误差的措施
  
  人工设置波特率,不可避免要用到fosc的标称值,这样就引入了一个误差源。采用自动整定,可以消除由fosc标称值不准确引入的误差。
  
  波特率自动整定可按如下的方法进行:在一个多机系统中,由系统主机产生出一个预定波特率的方波信号,从串行口发送到各从机;各从机以各自的时钟为基准测定此方波的周期所包含的机器周期数N,从N可以方便地换算出产生同样波特率需要的时间常数TH1。计算公式推导如下:
  
  51单片机一个机器周期的时间为δT=12/fosc,一个方波周期包含两个串行数据位,这样,每位数据占用的时间为

  而fbit=1/T,代入式(1-4)得
  
  TH1的量化误差总是存在的,为减小其影响,应尽量选SMOD=1;在用式(1-7)进行计算时,要进行舍入,而不是截尾。
  
  采用自动整定时,波特率误差仅由TH,的量化误差引起:


  
  采用12 MHz晶体,fbit=4 800时可能的最大波特率误差为3.84% (SMOD=1).可以保证正常通信。一般系统1 200的波特率就足以满足要求了。

三、波特率自动整定的实现和结论
  
  1.自动整定的实现
  
  51单片机的P3口是复用的,其中的P3.0(串行口接收线)和P3.1(发送线)可以用作一般输入/输出口线,也可作为串行口使用。利用这个特点,可以在不对串行口接线作任何变动的情况下,仅利用软件实现波特率的自动整定。
  
  首先要完成的是方波周期的测量。为保证测量精度,共测8个方波周期的机器周期数,然后除以8(移位即可)得N。采用C/T1的模式1(16位定时器)计时,程序流程图如图1- 86所示。


  
  最后得到的16 位计数值存放在TH1、TL1中,其值为8N。取SMOD=1,式(1-7)成为

  

      至此,时间常数TH1计算完毕,接下来可进行常规的串行口初始化。若有必要,还可进行波特率误差校验。编程是很容易的,这里省略。
  
  2.结  论
  
  ①串行通信中的波特率误差超过一定范围会影响通信的可靠性,在高波特率下更加严重。
  
  ②本例给出的波特率自动整定方法对硬件不作任何变动,仅用软件即可方便实现。在12 MHz晶振下实现了4 800 b/s的高速通信,避免了人工试凑波特率的困难。
  
  ③当串行口作为通用仪表对系统机的数据接口时,此方法尤有意义。本节的成果已用于一个通用转速表对IBM - PC的串行接口中。


推荐阅读

史海拾趣

GHI Electronics公司的发展小趣事

为了满足不同客户的多样化需求,GHI Electronics不断拓展其产品线。除了传统的电子元件和模块外,公司还开始涉足智能家居、物联网等新兴领域。通过不断引入新技术、新产品,GHI Electronics成功实现了从单一产品向多元化产品线的转变。这种转变不仅丰富了公司的产品线结构,也提高了公司的综合竞争力。

Free2Move公司的发展小趣事

GHI Electronics深知技术创新是企业持续发展的关键。因此,公司不断加大研发投入,致力于开发具有自主知识产权的产品。其中,ARM微控制器、显示模块、空气质量传感器、模块化系统以及微处理器等主打产品系列,凭借其卓越的性能和稳定的品质,在消费电子、便携设备、通讯/网络等领域获得了广泛应用。这些技术创新不仅巩固了GHI Electronics在市场上的领先地位,也为其未来的发展奠定了坚实的基础。

Elpakco Inc公司的发展小趣事

Elpakco Inc公司深知,企业的成功离不开社会的支持和帮助。因此,公司始终将履行社会责任作为企业的重要使命。公司积极参与环保、公益等活动,努力减少生产过程中的环境污染和资源浪费。同时,公司还注重员工的成长和发展,为员工提供良好的工作环境和福利待遇,让员工在为企业创造价值的同时,也能实现个人的成长和发展。

Ametek公司的发展小趣事

Elpakco Inc公司的创立,源于创始人对电子行业未来趋势的敏锐洞察。在电子科技日新月异的时代,创始人凭借在半导体封装领域的丰富经验和深厚技术积累,决定创立一家专注于高精度电子元件封装的公司。初创时期,资金紧张、技术难度大、市场竞争激烈,但创始人带领团队夜以继日地研发,不断突破技术瓶颈,终于成功研制出第一款高精度、高可靠性的电子封装产品,为公司的发展奠定了坚实的基础。

Emhiser Research Inc公司的发展小趣事

品质控制一直是Emhiser Research非常重视的方面。公司建立了严格的质量管理体系和检测流程,确保每一件产品都符合高标准的质量要求。同时,公司还注重品牌建设,通过不断提升产品品质和服务水平来树立品牌形象。这些努力使得Emhiser Research在客户中赢得了良好的口碑和信任。

ACE [ACE Technology Co., Ltd.]公司的发展小趣事

随着全球对环保和可持续发展的关注度不断提高,Emhiser Research也积极承担起自己的环保责任。公司采用环保材料和生产工艺来降低产品对环境的影响;同时,公司还积极推广绿色电子产品的理念,帮助客户实现更加环保和可持续的生产方式。这些努力不仅提升了公司的社会责任感,也为公司的长期发展注入了新的动力。

问答坊 | AI 解惑

当前主流MCU的区别与特点讨论

本来想取个惹眼点的题目吸引大家眼球,没想到引来这么多转头。看来还是老老实实请教问题吧。这几天公司新产品单片机方案选型,找了好多单片机,感觉每个品牌的都差不多,外设都是那些外设,内核有各自的内核(也不知道它们之间有什么区别),编译仿 ...…

查看全部问答>

计算机主板维修的一些资料

计算机主板维修的一些资料…

查看全部问答>

摩托罗拉电子设计大赛优秀作品(四)

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑  …

查看全部问答>

电子设计师必读-可靠性设计100条

据说来自于航天部一位已去世的前辈呕心沥血之作…

查看全部问答>

这是例程,控制步进电机的

本信息来自合作QQ群:AVR单片机学习与交流群(17727270) 群管理员在坛子里的ID:铜河 #include #include #include #include #include #define hc138dis PORTB&=0XEF //g=0 #define hc138en PORTB|=0X10 //g=1 unsigned char stepcon; co ...…

查看全部问答>

Wavecom 语音拨号

我现在有个wavecom模块 我用ATD10086; 拨通后,10086会有提示,提示1是进行什么操作,2是什么操作,3..... 然后我要让模块自动去按1,如何操作 是不是AT+VTS=1  ????? 由于我的模块听不到声音,所以不知道是不是那样来操作的。…

查看全部问答>

tty驱动问题

请教高手, linux驱动中使用tty_insert_flip_string(返回值正确),并tty_flip_buffer_push(tty); 但是在read时无法读取到数据,这是为什么? 3x …

查看全部问答>

电子专业,如何学好wince?

我是电子专业的, 写了两,三个月的WINCE应用程序,感觉还是什么都不懂? 没学过WIN编程,没学过数据结构,数据库也不懂? 原来一直写51,或者ARM7的程序,画画电路,画画PCB板,现在搞ARM9的程序真的力不从心. 请问,应该从哪里下手,怎么下手,才能对症下药 ...…

查看全部问答>

声波充电器通过话音为手机充电

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑      喜欢煲“电话粥”的人未来有可能成为能源制造者。韩国科学家研究声波充电器,有望将声波转化成电能。这样一来,通话时间越长,手机电池电量越足。研究报告由《高级材 ...…

查看全部问答>

Altium+designer+元件库大全

一个很不错的电子设计,工程开发软件,附件为部分个人整理的元件库,需要的童鞋拿去啊…

查看全部问答>