晶振坏了单片机还能运行程序吗
晶振是什么?
晶振主要是指晶体振荡器,而晶体振荡器则是指从一块石英晶体上按照一定的方位角切下来的薄片,我们简称为晶片,是时钟电路中最重要的部件。石英晶体谐振器,简称为石英晶体或晶体、晶振;而在封装内部添加IC组成振荡电路的晶体元件称为晶体振荡器。
在单片机系统中晶振扮演者着重要的角色,如果单片机没有晶振(内部晶振也没有)那单片机是没有办法运行程序的,至于为什么不能运行程序我们后面会讲到。
晶振在整个单片机系统里相当于单片机的心脏,一个完整的产品要想稳定可靠的工作,没有晶振的加入是很难达到应有的功能,晶振的作用是为电路的工作提供时序基准,使各个模块的工作能够有条不紊的进行下去,因此晶振的指标主要有频率准确度、频率稳定度、工作温度范围等,晶振还可以为锁相环提供频率基准,其频率的准确度决定了锁相环输出频率的精度。
在单片机系统中晶振可能不止一个,不同频率的晶振在整个系统里扮演的角色也是不一样的,例如32.768K晶振通常用于时间显示,16MHZ、26MHZ等用于传输信号的。
晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振一般又称作晶体,有源晶振又被称为振荡器。无源晶振需要借助于时钟电路才能产生振荡信号,有源晶振是一个完整的谐振振荡器,不需要外部提供震荡信号。
没有晶振可以运行程序吗?
我们通过前面的学习知道了单片机中的晶振主要是用来提供时钟信号的,那如果单片机上的晶振坏了单片机还能运行我们编写的程序吗?
关于这个问题的答案我想给出以下回答:
如果单片机存在内部晶振那么单片机是可以运行程序的,只不过运行的过程不太正常(可能是速度慢,也可能是某些功能不正常)
如果单片机内部没有晶振,那么外部晶振坏了单片机是必然不能运行程序的,关于这点后面会进行讲解。
在讨论这个问题之前我们先来看一下单片机是怎么运行程序的吧!单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,也是一个晶振周期。它的一个机器周期是12×(1/12)us,也就是1us。(来源于网络,仅供参考)
上面的说法是网络上的大佬写的一篇文章,从上面的讲解我们知道单片机的程序运行需要晶振提供时钟信号,虽然单片机程序的运行和晶振之间没有直接的关系,但是却有着密切的联系,当然在单片机中还存在一个PLL锁相环的东西,它可以保证外部晶振与单片机内部晶振频率保持一致。
现在来回答上面的问题为什么在单片机系统中没有接外部晶振单片机仍然能够成功运行。在单片机内部是存在内部晶振的,可以为单片机提供低频的时钟信号。对于STM32F103c8t6用外部晶振+PLL,时钟频率可以去到72M,用内部振荡,只能到48M。
所以在没有外部晶振的情况下有些单片机是可以维持正常工作的,只不过代码执行的速度会大打折扣,所以如果你要求单片机性能的话,还是建议使用外部晶振的。
PCB中晶振电路的要求
位置要选对:晶振内部是石英晶体,如果不慎掉落或受不明撞击,石英晶体易断裂破损,所以晶振的放置远离板边,靠近MCU的位置布局。
两靠近:耦合电容应尽量靠近晶振的电源管脚,如果多个耦合电容,按照电源流入方向,依次容值从大到小摆放;晶振则要尽量的靠近MCU。
走线短:所有连接晶振输入/输出端的导线尽量短,以减少噪声干扰及分布电容对晶振的影响。