波特率与晶振

为什么51系列单片机常用11.0592MHz的晶振设计?

现在有许多极好的编译程序能显示代码,在速度和尺寸两方面都是非凡有效的。现代的编绎器非常适应寄存器和变量的使用方面,比手动编译有较好的优越性,甚至在其它常规方面,所以C应是看代码方面最合适的。

    答1: 因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。

    答2: 当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD的值(PCON.7------双倍速波特率)决定:

    方式1、3波特率= (定时器1的溢出率)

    特殊时,定时器被设在自动重袋模式(模式2,TMOD的高四位为0100B),其为:

    方式1、 3波特率=11.0592MHZ晶振的一些典型波特率如下:

 

波特率

SMOD

TH1

19200

1

0FDH

9600

0

0FDH

4800

0

0FAH

2400

0

0F4H

1200

0

0E8H

300

0

0A0H

    更换一种计算方式,它将以修改公式达到我们需求的波特率来计算出晶振。
    最小晶振频率=波特率x 384 x 2 SMOD
    这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。
    例如:波特率为19.2KH2的最小晶振频率:
          3.6864=19200x384x2(波特率为19.2K的SMOD为1 )
          11.0592=3.6864x3
          其中TH1是由倍乘数(3)确定
          TH1=256-3=253=0FDH
     用来确定定时器的重装值,公式也可改为倍乘数的因子:
    晶振频率=波特率x(256-TH1)x384x2 SMOD
    这是波特率为19.24K的晶振频率。
    以上的例子可知,被乘数(3)是用来确定TH1:
    TH1=256-3=253=0FDH
    19.2K波特率的晶振为
    11.0592=19200x(256-0FDH)x384x2(19.2 k的SMOD为1)
    其它值也会得出好的结果,但是11.0592MHZ是较高的晶振频率,也允许高波特率。

 

设定80C51串行异步通讯的波特率
本文的目的在于补充及阐明一些有关的内容。这些内容涉及到将标准8051或80C51串行口(UART)应用于通常的RS-232串行通讯时,如何确定波特率及晶振频率。这里简化了标准的波特率计算公式,并重申此公式可用于解决其他参数,如晶振频率和定时器重载值。
下面的讨论需要读者已经具备8051/80C51串行口和定时器的一些知识。这里讨论的内容可以考虑作为《Philips 80C51 Family Microcontroller Data Book》中“定时器/计数器和标准串行口”章节的补充说明。
因为我们假设使用标准串行口进行RS-232 串行通讯,因此,串行口应工作于方式1或方式3(波特率可变的模式),定时器T1 应工作于方式2(8位定时器,自动重载模式,用作波特率发生器)。在这里,对于CMOS工艺的微处理器,根据SMOD位是否被设置,所有的公式均可提供2个时间除数的选择。对于NMOS工艺的器件,总是使用默认值(SMOD≠1)。
定时器重载值的基本公式规定如下:
波特率 ) 则除数为(若 晶振频率192 1 384 256 1 = − = SMOD TH例如:当晶振为11.0592MHz时,如果需要获得9600波特率的通讯速率,则定时器重载值为:
)  (十六进制的xFD 0 253 3 256 9600 384 11059200 256 = − = − 也可以根据公式,从其他已知条件求出波特率或晶振频率,如下所示:
1 256 192 1 384 TH SMOD − = = ) 则除数为(若晶振频率波特率) 则乘数为(若设定的波特率所需的最小晶振频率192 1 384 = × = SMOD 按上述公式,对于SMOD=1的CMOS器件,若使用19.2K的通讯波特率,则应使用的最小晶振频率为19200*192,即3.6864MHz。当使用这个公式时,作为最大波特率的定时器重载值总是为255(十六进制数0xFF),即TH1=256-1。
因此,按此方法计算,使用相差偶倍数的晶振频率,采用不同的定时器重载值,可以产生相同的波特率。举例来说,3.6864MHz的4倍是14.7456MHz。在14.7456MHz的晶振频率下,只要使用1/4的定时器溢出率:252(十六进制数0xFC),即TH1=256-4,作为定时器重载值,就可以同样产生19.2k的通讯波特率。
一、用于产生标准波特率的晶振频率
下表列出了当80C51串行口工作在标准波特率下时可以使用的晶振频率。此表假设串行口工作于方式1或方式3(波特率可变的模式),定时器T1 应工作于方式2(8位定时器,自动重载模式)。此表同时假设所需产生的最小波特率为9600(包括可使用置位SMOD位使波特率倍增)。
如果仅需产生一个较低数值的波特率,那可以选用许多晶振频率。
最小定时数值(timer count)栏指出:在当前晶振频率下,用以产生表中所给出的最大波特率时,所需的最小定时数值。最后一栏为定时器重载值,用以产生最小定时数值。定时器重载值显然是等于256减去最小定时数值。
在相同的晶振频率下,如需产生另外的通讯波特率,则可以将最小定时数值按照前面的方法连续乘以2倍,并计算得出新的定时器重载值。例如,在晶振频率为1.8432MHz时,需产生为4800的通讯波特率,定时数值将为2(因为9600的波特率是4800的两倍),定时器重载值为254(256-2,或十六进制0xFE)。

- 2 -
二、偏差频率的晶振所带来的影响
有时,人们希望在设计中使用一偏差频率的晶振,但仍想使用串行口进行调试。因为大多数终端(或其他RS-232 器件)与其他装置通讯过程中,使用的波特率会有几个
百分点的误差,但经常是能够成功完成。注意:在应用场合的正常操作中,如果需要对另外的RS-232 器件进行通讯,那么,不推荐使用偏差频率进行串行通讯。
关于频率偏差的允许值应该是多少,则没有这方面的精确限制。因为这取决于器件通讯、波特率、所有器件的精确频率,等等。但,可以这么说,如果频率偏差少于5%,可能通讯会可靠工作。这个稍微用点肯定的数字是从以下几点得来的:对于一个10位的串行代码(1个起动位、8个数据位、1个停止位),只要有10%的数据错误概率(在一个数据帧的末尾加上或减去一个位时间),就会使接收器发生偏差。如果人们想要十分可靠的通讯效果,那么一个位时间的错误看起来是十分过分的。因此考虑其10%的一半(5%)就不错了。
这就是为什么常常可以在应用中看到人们使用一个许多标准的“非定制”晶振,在调试、出厂测试等工作中完成串行通讯。举个例,比如著名的“彩色脉冲串(color burst)”,当使用3.579545MHz晶振时,速度要比3.6864MHz晶振慢3%。3.6864MHz可以作为理想的波特率发生器。
同样的,在某些情况时,可以用低成本的晶振代替低标准的晶振。另外一个明显的替换则出现在表中,以标准的14.31818MHz晶振代替非标的14.7456MHz晶振,这个替换所产生的误差小于3%, 由于它有快速的指令执行速度,因此更方便。反之,3.58MHz晶振在许多的应用中就太慢了。
也应该记住,如果字符的传输的方式不是“返回-返回”式,那么RS-232 的通讯能力是非常健壮(抗干扰能力很强)。如果需要在特别应用中,不按规定使用串行口时,这一点会非常重要。当数据全速发送时,一旦接收器没能同步上,接收器就没有机会再次同步传输数据帧。
但是,当字符与字符间有一短暂的间隔(大约2-3个位时间或更长),接收器就能够完全正确地锁定起始位,不会产生数据帧错误。最坏的情况下,在通讯中只要有一个字节时间或更长时间的短暂间隔,接收器不论如何地不同步,也总会做到再同步。
三、分析一个小小的已知现象
在大多数应用程序的串行口设置代码中,定时器寄存器TL1并没有被预先设定。在许多应- 3 - 用中,这会对串行口发送第一个字符带来影响,尽管出现这种影响的机会很少。通过逻辑分析仪观察自串行口发出的第一个字节,可以看到:微处理器复位结束后这个效应就被激发。第一个字节开始发送,但在逻辑分析仪上看不到任何本来应该有的单个单个的位。
这个情况出现的原因是:在第一个字节传输完成之前,TL1必须有一次定时溢出。如果TL1没有被预先设置,那么其值将会被设置为复位值“0”。根据TH1中的重载值(此值同时取决于波特率和晶振频率),这可能会在传送开始时产生一个最大为255个标准位时间的非工作延迟。
还有,在大多数应用中,这并不很重要。实际上,当电源上电后,在第一个串行字符发送之前,此延时期间是有利的。但是,如果要求第一个串行字符应该要立即起动,那么,TL1可以预先设置为一不是“0”的数值。如果不需要延迟,TL1所设定的数值应该等于TH1中的数值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值