您的位置 首页 动态

晶振对波特率的影响到底有多大?让你才智才智

片机中的晶振在整个内部电路中发挥着重要的作用,电路配合晶振的运行能够产生单片机所需的时钟频率。可以说,一切指令都是建立在时钟频率的…

片机中的晶振在整个内部电路中发挥着重要的效果,电路合作晶振的运转能够发生单片机所需的时钟频率。能够说,全部指令都是建立在时钟频率的基础上,那么,晶振与波特率又有什么关系呢?两者之间影响到底有多大呢?
在串行通信中,MCS—51串口可约好四种作业方法。其间,方法0和方法2的波特率是固定的,而方法1和方法3的波特率是可变的,由守时器T1的溢出率决议。

波特率是指串行端口每秒内能够传输的波特位数。这儿所指的波特率,如规范9600不是每秒种能够传送9600个字节,而是指每秒能够传送9600个二进位,而一个字节要8个二进位,如用串口形式1来传输,那么加上开端位和中止位,每个数据字节就要占用10个二进位,9600波特率用形式1传输时,每秒传输的字节数是9600÷10=960字节。


图1
方法0和方法2的波特率

方法0的波特率是固定的,为fosc/12,以一个12M 的晶振来核算,那么它的波特率能够到达1M。

方法2的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。

方法1和方法3的波特率

形式1和形式3的波特率是可变的,取决于守时器1或2(关于52芯片)的溢出速率,就是说守时器1每溢出一次,串口发送一次数据。能够用以下的公式去核算:上式中如设置了PCON寄存器中的SMOD位为1时就能够把波特率提高2倍。通常会运用守时器1作业在守时器作业形式2下,这时守时值中的TL1做为计 数,TH1做为主动重装值,这个守时形式下,守时器溢出后,TH1的值会主动装载到TL1,再次开端计数,这样能够不必软件去干涉,使得守时更准确。在这个守时形式2下守时器1溢出速率的核算公式如下:

溢出速率=(计数速率)/(256-TH1初值)

溢出速率=fosc/[12*(256-TH1初值)

上式中的“计数速率”与所运用的晶体振动器频率有关,在51 芯片中守时器发动后会在每一个机器周期使守时寄存器TH的值加1,一个机器周期等于十二个振动周期,所以能够得知51芯片的计数速率为晶体振动器频率的1/12,一个12M 的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M 晶体是为了得到规范的无差错的波特率,那么为何呢?核算一下就知道了。如咱们要得到9600 的波特率,晶振为11.0592M 和12M,守时器1 为形式2,SMOD 设为1,别离看看那所要求的TH1 为何值。代入公式:

11.0592M:

9600=(2÷32)×((11.0592M/12)/(256-TH1))
TH1=250

12M:

9600=(2÷32)×((12M/12)/(256-TH1))
TH1≈249.49

上面的核算能够看出运用12M晶体的时分核算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有必定的差错存在不能发生准确的9600波特率。当然必定的差错是能够在运用中被承受的,就算运用11.0592M 的晶体振动器也会因晶体自身所存在的差错使波特率发生差错,但晶体自身的差错对波特率的影响是十分之小的,能够忽略不计。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/274592.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部