刚学单片机的学长告诉我单片机的晶振电路中就是用22pf或30pf的电容就行,听人劝吃饱饭吧,照着焊电路一切ok,从没想过为什么,知其所以然而不知其为什么所以然,真是悲哀。后来,我才懂得反思,调整,我对自己持有怎么的学习态度和应该如何付诸于行动有了新的理解,这远比单纯的交给我一些知识要好很多。
说起这个小知识点本人还有这么个经历呢也顺便和大家一块儿分享一下吧。话说我曾经帮一女生做东西,其实超级简单就是个ATMEGAL16单片机的温度采集系统,我焊工虽然一般但给女生帮忙么,还是比较用心的应该没问题的,事实却不尽人意焊出来的最小系统竟然不好使,我用万能表把电路查了几遍也没找出错误,然后就怀疑是不是单片机就锁死了,换了几块单片机也不好使,自己还一直认为我在同一届的同学中算还学得可以的,真是有点可笑,最后发现,在我原件短缺的情况下我糊里糊涂把两个0.1uf的电容焊在了晶振电路中,导致晶振不起振所以整个电路就表现为不好使,换成22pf的电容马上就好使了,当时其实应该马上弄明白,但我却没有予以理睬实属不应该。老师说得对我们确实缺少打破沙锅问到底的精神......
让我们一起来看看到底晶振电路中为什么用22pf或30pf的电容而不用别的了。
其实单片机和其他一些IC的振荡电路的真名叫“三点式电容振荡电路”,如下图
Y1是晶体,相当于三点式里面的电感,C1和C2就是电容,5404非门和R1实现一个NPN的三极管,接下来分析一下这个电路。
5404必需要一个电阻,不然它处于饱和截止区,而不是放大区,R1相当于三极管的偏置作用,让5404处于放大区域,那么5404就是一个反相器,这个就实现了NPN三极管的作用,NPN三极管在共发射极接法时也是一个反相器。
大家知道一个正弦振荡电路要振荡的条件是,系统放大倍数大于1,这个容易实现,相位满足360度,与晶振振荡频率相同的很小的振荡就被放大了。接下来主要讲解这个相位问题:
5404因为是反相器,也就是说实现了180°移相,那么就需要C1,C2和Y1实现180°移相就可以,恰好,当C1,C2,Y1形成谐振时,能够实现180移相,这个大家可以解方程等,把Y1当作一个电感来做。也可以用电容电感的特性,比如电容电压落后电流90°,电感电压超前电流90°来分析,都是可以的。当C1增大时,C2端的振幅增强,当C2降低时,振幅也增强。有些时候C1,C2不焊也能起振,这个不是说没有C1,C2,而是因为芯片引脚的分布电容引起的,因为本来这个C1,C2就不需要很大,所以这一点很重要。接下来分析这两个电容对振荡稳定性的影响。
因为5404的电压反馈是靠C2的,假设C2过大,反馈电压过低,这个也是不稳定,假设C2过小,反馈电压过高,储存能量过少,容易受外界干扰,也会辐射影响外界。C1的作用对C2恰好相反。因为我们布板的时候,假设双面板,比较厚的,那么分布电容的影响不是很大,假设在高密度多层板时,就需要考虑分布电容。
有些用于工控的项目,建议不要用无源晶振的方法来起振,而是直接接有源晶振。也是主要由于无源晶振需要起振的原因,而工控项目要求稳定性要好,所以会直接用有源晶振。在有频率越高的频率的晶振,稳定度不高,所以在速度要求不高的情况下会使用频率较低的晶振。