晶振的作用,高速晶振优缺点

简介: 晶振的作用,高速晶振优缺点

前言

(1)我们都知道晶振是一款MCU的心脏,因为长期用这种抽象的概念进行解释,导致很多人不知道这个心脏的实际作用。因此,我在这里详细的介绍一下晶振对于MCU的实际作用。

(2)接下来我将会在MCU处理能力,功耗,通讯速度,定时器精度等角度来探讨。


晶振对MCU处理速度影响

机器周期和指令周期是啥

(1)在讲解晶振对于MCU的处理能力之前,不得不需要了解两个术语——机器周期,指令周期。

(2)那么机器周期和指令周期是什么呢?那么我们以stc89c52的软件延时为例,进行讲解。

(3)首先,我们需要知道机器周期是什么。机器周期就是晶振的倒数,比如,stc89c52的常用晶振为12MHZ,那么他此时的晶振周期为


1690511873813.png

1690511873813.png

(4)而stc89c52有的指令周期可以选择6机器周期或者12机器周期一般来说默认12机器周期。因此,我们就可以计算出stc89c52的指令周期为


1690511888796.png

如何根据指令周期计算每条汇编的执行时间

(1)指令周期是一个啥玩意呢?我们现在可以看汇编指令了,在汇编中,有些指令只需要执行一个指令周期,有些指令需要两个指令周期,有些需要三个。那么根据这个,我们就可以知道每条指令执行的时间了。

(2)我现在打开宏晶公司的工具,查看到STC89C52的汇编执行时间。注意:这里的单位是机器周期,而不是指令周期。


(3)我们通过宏晶公司的工具,软件生成延时1us的程序,发现就是一个NOP指令。这指令无作用,就是做一个指令周期的延时。所以延时1us就是一个NOP。


(4)如果此时我们需要延时10us,查看结果是怎么样的。

<1>NOP执行一个指令周期,RET两个指令周期。最终算出来的结果应该是8个指令周期,也就是8us。

<2>这个时候有人就会问了,为什么是8us呢?不应该是10us吗?想必学过51单片机延时部分的同学就知道,51单片机的软件延时并不准确,所以他每条指令可能执行完之后,会略微的大于1us,最终误差累积起来,所以只需要8个指令周期,就会近似延时10us。

DELAY10US:      ;@12.000MHz
  NOP     
  NOP   2
  NOP
  NOP   2
  NOP
  NOP   2
  RET   2

(5)现在我们再进行一个50us的延时函数,看看宏晶给我们生成的代码是什么?

<1>查阅STC-Y1指令集,可以知道他们所占用的指令周期是多少。(标注在后面的数字)

<2>通过计算发现,实际上其实只邹了47个指令周期,近似50us。

DELAY50US:      ;@12.000MHz  
  PUSH 30H                     2          
  MOV 30H,#20                  1
NEXT:                            
  DJNZ 30H,NEXT                2 * 20 =40
  POP 30H                      2
  RET                          2


(6)

<1>现在我们对于晶振和MCU执行速度有了一个简单了解之后。现在我们把12MHZ晶振换成更加常用的11.0592试试,此时生成一个10us的代码。

<2>我们会发现,执行的代码变少了!这说明什么,相同时间段内,越高频率的晶振,所能执行的指令越多。

DELAY10US:      ;@11.0592MHz
  NOP
  NOP
  NOP
  NOP
  NOP
  RET


(7)既然高频晶振能够提高MCU指令执行速度,那么我们可不可也无脑提高晶振频率呢?答案显然是不可以的,一款MCU是由指定最高频率的,如果超频,会导致MCU运行不稳定,

(8)既然高频晶振可以提高MCU的执行速度,那么我就每次将他提高的MCU最大接受的频率呗。很可惜,不对。MCU系统时钟越快,功耗越大,对于一些低功耗的产品,不需要过高的系统时钟。


结论

优点:高频晶振可以提高MCU对指令的处理速度,但是MCU有最高系统时钟限制,超频容易导致程序运行出现故障。

缺点:过高的系统时钟,会导致功耗过高。


晶振对串口通讯的影响

(1)从上面的例子我们可以看出,12MHZ不但可以提高代码执行速度,最终产生的时间相对准确。为什么还需要一个11.0592MHZ晶振呢?

(2)这个就串口波特率有关了。我们都知道,串口波特率常用的有115200,9600等。

(3)串口波特率计算公式如下,一般我们选用方式1进行波特率发生器。

(4)现在我们知道了串口波特率发生的公式,开始计算,会发现11.0592MHZ产生的波特率是没有任何误差的。而如果是12MHZ的晶振,就很容易产生误差,而且随着时间的累积,误差会越来越大。

(5)

<1>因为怕有人无法理解下面这张图,所以我直接以11.0592生成波特率9600为例,注意,我是采用的方式1,SMOD为0。

<2>最终算出来TH1为253,对于16进制的0xFD。

<3>根据下图,我们能够明显的发现,11.0592产生的波特率效果很好,所以我们一般使用11.0592作为51单片机的晶振。

1690511969385.png

晶振对定时器精度影响

(1)上面说了,11.0592MHZ 晶振能够产生非常准确的波特率。那么12MHZ除了能够让MCU执行速度提高,能够精确的产生什么吗?

(2)当然可以,如果51单片机的晶振给12MHZ,一般51单片机的定时器默认对晶振进行12分频,那么定时寄存器数值每次跳变都是1us。而如果晶振是11.0592,那么定时器寄存器每次跳变的时间就是12/11.0592us。很明显,12MHZ下的定时器产生的时间相对准确一点。

(3)

<1>因为怕各位基础太差,我现在举个例子。假设,我的51单片机晶振给的是12MHZ,要进行100us定时。

<2>我们会发现TH0是0xFB,TL0是0x50。换算成十进制,就是64336,而STC89C52的定时器是向上计数的。那么实际计数值为65536-65535=100。而前面说了,12MHZ的晶振下的定时器值每次跳变都是1us,刚刚好。

(4)

<1>同样是100us,我们试试11.0592MHZ下的值是多少。

<2>我们会发现TH0是0xFF,TL0是0xA4。换算成十进制,就是65444,实际计数是92。

<3>而11.0592MHZ下的定时器值每次跳变都是12/11.0592us,最终计算公式如下:

1690511998958.png


总结

因此,我们可以看出,晶振的选取不是一味的追求高频,每一种晶振都有其好处。在选择过程中,我们应当按需选择。

目录
相关文章
|
6月前
|
芯片
自带恒压恒流环路的降压型单片车充专用芯片
一、基本概述 XL2009是一款高效降压型DC-DC转换器,固定180KHz开关频率,可以提供最高2.5A输出电流能力,具有低纹波,出色的线性调整率与负载调整率特点。XL2009内置固定频率振荡器与频率补偿电路,简化了电路设计。 PWM 控 制 环 路 可 以 调 节 占 空 比 从0~100%之间线性变化。内置过电流保护功能,当 输 出 短 路 时 , 操 作 频 率 由 180KHz 降 至48KHz。内部补偿模块可以减少外围元器件数量。 二、产品特点 8V到36V宽输入电压范围 输出1.25V到32V可调 最大占空比100% 最小压降0.3V 固定180KHz开关频率
|
芯片
通讯电平转换电路中的经典设计
通讯电平转换电路中的经典设计
82 0
|
传感器 存储 内存技术
电容的作用及其应用
一、什么是电容 电容是指电路中的一种元件,用于储存电荷。它是由两个导体板之间隔开的绝缘介质(通常是空气或电介质)组成的。当电容器接通电源时,正负电荷会在导体板上积累,形成电场。电容的单位是法拉(F),1法拉等于1库仑/伏特。电容的大小取决于导体板的面积、导体板之间的距离以及介质的介电常数。较大的电容可以储存更多的电荷。电容器在电子电路中广泛应用,例如用于滤波、耦合、存储和调节电压等方面。 二、电容的作用 电容在电子电路中有多种作用: 1. 储存电荷:电容器可以储存电荷,当电容器充电时,正电荷会聚集在一侧的导体板上,负电荷则聚集在另一侧的导体板上。当电容器放电时,储存的电荷会释放出来。 2. 滤
114 0
|
11月前
LED驱动控制专用电路
一、基本概述 TM1628是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电 表等数码管或LED显示设备。 二、特性说明 采用CMOS工艺 多种显示模式(10 段×7 位 ~ 13段×4 位) 最大支持矩阵按键10×2 辉度调节电路(8 级占空比可调) 串行接口(CLK,STB,DIO) 振荡方式:内置RC振荡 内置上电复位电路 内置数据锁存电路
114 0
|
前端开发
电路设计中电阻的选择及其作用
电路设计中电阻的选择及其作用
125 0
|
传感器 芯片
低成本、低功耗、小体积433MHz数字量无线控制器
当项目需要近距离无线通信,控制传输数字量信号时,若使用蓝牙、WiFi模块,成本高昂,且需要AT指令配置比较繁琐,若使用红外传感器,通信距离短,且容易受到角度影响,无法穿墙。
|
存储 传感器
《探究无源器件:硬件十万个为什么》
作为现代电子设备中不可或缺的组成部分,无源器件扮演着重要的角色。无源器件通常指没有放大功能的器件,包括电阻、电容、电感、二极管、晶体管等等。这些器件虽然在电子领域中普遍存在,但很少有人真正了解它们的工作原理。本文将探究无源器件的工作原理和应用,解答硬件十万个为什么。
354 0
|
芯片
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
230 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
|
算法 芯片 计算机视觉
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
124 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
|
芯片
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
708 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)