嵌入式Linux

只会纯硬件,让我有点慌

0
阅读(518)

纯硬件产品在市面上现在很少了,大多都带有单片机,比如智能路灯,智能门禁,智能家居等等。为了提高竞争力,单片机相关知识的学习必不可少。


给大家推荐一本龙顺宇老师的新书《深入浅出STC8增强型51单片机进阶攻略》


时钟电路在单片机小系统中很常见,今天我们就探讨下单片机外部石英晶体振荡器电路的构成、特点和器件参数,本文内容选自龙顺宇老师的新书《深入浅出STC8增强型51单片机进阶攻略》。


我记得小学的时候最喜欢做眼保健操,跟着旋律“1234,2234”,这旋律控制着我的每一个动作,踩着节拍完成了整个过程。细细想来,单片机的工作也是一样,在一定的“节拍”下锁存和处理数据,产生不同的状态和时序,完成不同的功能。如果没有这个节拍,单片机就无法执行程序和体现功能,这里的“节拍”就是时钟信号,好比是单片机系统中的“心脏”。


在早期的51单片机产品中,时钟信号一般是由外部振荡电路产生,所以很多经典的单片机原理类书籍也将时钟电路当作最小系统的必要组成之一,随着单片机技术的不断发展,为了进一步降低产品的EMI电磁干扰(Electro Magnetic Interference),很多单片机在晶圆设计时内置了时钟源,片内RC时钟源的频率还支持多种选择,这样一来开发人员就可以省去外部时钟电路,单片机的时钟输入/输出的引脚也可以节省出来当普通I/O引脚使用。


但是话又说回来,片上时钟源和外部时钟源还是有区别的,一般来说片上时钟源的启动速度快,功耗适中,但是容易受到温度的影响产生频率偏差,若频率偏差严重就会影响程序运行(特别是通信类程序)。还有就是片上时钟的一致性难以保证,根据批次不一样或者制造上的差异性会导致芯片时钟频率不尽相同,但是对于要求不高的场合,使用内部时钟源倒也无妨。外部时钟源的启动需要一个稳定的时间,功耗也相对大一些,但是产生的时钟精度较高,不管是用无源石英晶体还是有源晶振,其信号的稳定度都较好,在持续性的通信应用上还是推荐外部时钟源作为单片机工作时钟。


有的朋友可能会有疑惑,为什么小宇老师刚刚说到“无源石英晶体”而不是“无源晶振”呢?我们平时将无源石英晶体说成“晶振”其实并不准确,无源晶体其实就是在石英晶片上电镀引出了电极,一般是两个脚,不用区分正反,在晶体结构外面装上了金属外壳,然后再在外壳上激光打字。无源晶体要想起振,一般还需要辅助外围电路才行。真正意义上的“晶振”是在晶体的基础之上额外添加了振荡、放大和整形电路后所形成的单元,常见的是4个脚,需要为其供电,然后从一个脚输出稳定可靠的时钟信号,这种就是我们说的有源晶振。


说了这么多,我们也不知道用于产生时钟信号的“心脏”长什么样子,接下来我们回到《电子工艺》课程,看看如图1所示的几个常用于产生时钟信号的器件实物。

图片

图1 常见时钟产生类元器件实物图


先来认识第一行的器件,从左至右首先是直插式圆柱状无源晶体,常见大小有2*6mm和3*8mm,常用于体积受限的场合,如U盘;接着是直插式HC-49S无源晶体,这种晶体外形最为常见;然后是直插式HC-49U无源晶体;最后是贴片式HC-49S无源晶体。第二行从左至右首先是贴片式晶振,单从样式上看是无法区分有源和无源的,用户需查阅产品手册后加以区分,这种贴片式晶振常见2脚和4脚的,常用的器件体积有3225、3215、5032等;接着是MC-306封装的晶振,常用的还有长条形的MC-146;然后是温补晶振TCXO,其体积稍大,内部设计有温度补偿电路和微调窗口,因其温度特性好、频率偏差小,价格也稍微贵一些,类似的还有恒温晶振OCXO,价格就比TCXO还要贵一些;最后是SiTime公司推出的可编程晶振,该器件有别于传统器件,用户可以通过编程修改振荡频率,支持1MHz到725MHz范围内的频率调整,在一些特殊的应用场合会非常适用。


说到这儿,我就忍不住要问:石英晶体内部长什么样子呢?要解决这个问题很简单,我们干脆动手拆解一个直插式HC-49U无源晶体吧!朋友们是不是感觉有点“残忍”啊?那我们就选一个实验室里放了N多年且引脚发生严重氧化的晶体来做实验,拆解的过程如图2所示,首先打开晶体的金属外壳后发现了内部有一层网状隔片,目的是为了让晶体与外部金属壳绝缘和防震,拆除这层隔片后就看到核心石英晶体和电极了,用手轻轻一掰,“咔”的一声就碎了,真是“嘎嘣脆,鸡肉味儿”。通过这个破坏性实验我们学到了什么呢?那就是晶体元器件在保存和使用时要避免磕碰,以免损坏内部石英晶体,焊接的时候也不要持续高温,以免晶体引脚升温太快引起内部电极与石英晶体片之间的碎裂,所以说石英晶体这种器件是外表看着“皮实”,但“内心”脆弱的器件。


图片

图2 HC-49U无源晶体拆解过程


拆解完了晶体,心里就非常痛快了,接下来我们再看看振荡电路的相关知识。单一的石英晶体无法产生稳定的振荡信号,必须辅助相关电路,常见的晶体振荡电路可以用皮尔斯振荡电路、考毕兹振荡电路和克拉普振荡电路。而用在单片机的电路几乎都是皮尔斯振荡器(Pierce Oscillator)结构。哦!这个人我知道,就是那个打NBA的保罗·皮尔斯对吧?错!这里的“皮尔斯”是乔治·皮尔斯。他发明了一种电子振荡电路,特别适用于配合石英晶体振荡以产生振荡信号。皮尔斯振荡器衍生自考毕兹振荡器,其电路构成十分简单,我们自己也可以动手搭建,其电路原理如图3(a)所示,用示波器测量“OUT”电气网络的输出波形如图3(b)所示。

图片

图3 皮尔斯振荡器电路原理及输出波形图


分析该电路,电路采用单极性5V供电,U1所选型号为CD4069,该芯片是一款CMOS电平输入/输出的高速反相器(内含6个反相器单元),反相器在电路中等效于一个较大增益的放大器单元,在整个电路中只用了CD4069中的2个反相器单元,也就是1A、1Y、2A、和2Y这4个功能引脚,其它的功能引脚都做了接地处理。


Y1就是无源的石英晶体,这里选择的是标称振荡频率为16MHz的HC-49S晶体。R1是反馈电阻,通常取值都在兆欧级别,有了这个电阻就可以使反相器在晶振振荡初始时处于线性工作区,可以帮助晶体起振。R2可以调整驱动电位,以防止晶振被过分驱动而加速老化和造成晶体损坏。这两个电阻的取值非常关键,一旦取值不当就会产生高次谐波(一般是3次谐波,即Y1为xMHz时输出信号为3xMHz),建议朋友们在搭建电路时合理考虑。

C1、C2为负载电容,它们可以帮助起振,一般选用20至30pF且频率特性较好的电容(如瓷片电容、独石电容或CBB电容),其取值大小对振荡频率有微调作用(所以晶体的实际起振频率一般都不是绝对准确的标称频率),负载电容的取值受两个方面影响,一是晶体器件实际的电容参数,二是受PCB布线、焊盘和板层厚度等参数间接引入的寄生电容或杂散电容影响。所以朋友们在进行实际电容选取时不一定要与晶体器件数据手册中的负载电容参数完全等值,可以按照实际参数去做调整(顺便一说,有的单片机芯片时钟引脚单元内部甚至自带了不同档位的负载电容,比如TI公司生产的MSP430x2xxx系列单片机,该系列产品内部就支持1pF、6pF、10pF和12.5pF的四档负载电容可选,这种单片机时钟引脚上只接个晶体就行,无需外围辅助电路也能正常工作)。


经过电路搭建,CD4069芯片的第4脚输出的“OUT”就是时钟信号,原则上一个石英晶体振荡出的波形可以同时供给很多芯片使用,不一定是一个单片机就需要一个晶振,当然了,也要考虑输出信号的负载驱动能力,还得考虑PCB上时钟走线带来的干扰。


学完皮尔斯振荡器的简单电路后,有的朋友又会产生更大的疑惑,大家会想STC单片机的时钟电路根本不用CD4069啊?哪儿来的什么R1和R2啊?我一般都是接个晶体和两个负载电容就行了啊?确实如此,一般来说XTAL1和XTAL2是STC系列单片机的振荡信号接入引脚(也可以仅由XTAL2单端接入时钟信号)。其模型仍然是皮尔斯振荡器,只不过将振荡所需的反相器和相关电阻内置到了单片机内部罢了,其电路结构如图4所示。 

图片

图4 单片机时钟单元内/外结构


皮尔斯振荡器因结构简单,非常适用于各种数字IC的设计制造。很多IC在设计的时候就内建了高速反相器与电阻,只要在外部加上石英晶体与负载电容就可以工作。由于石英晶体频率稳定,故而电路成本较低,因此广泛用于各种消费电子产品之中。


电路讲完了我们就来看看“时钟信号”到底有什么作用?之前我们说了单片机是工作在一定“节拍”下的,最快最直接的“节拍”就是由外部晶体振荡电路或者内部RC振荡器提供的时钟源频率,这个时钟我们称之为“振荡周期”,在此基础之上还有状态周期、机器周期(CPU周期)和指令周期,所以“振荡周期”越小,则完成一条指令所需的时间就越短,简单来说就是给的“节拍”越快,单片机工作的处理速度就越高。但是时钟频率也要有个“度”,受限于单片机内部电路的电气指标和门电路的动态特性,单片机时钟频率一般都有个范围,例如STC8H系列单片机可以支持4MHz至45MHz工作频率。


必须说明的是晶体的标称频率不能随意选择,有些应用中对振荡频率是有要求的。举个例子吧!有个朋友做51单片机串口通信程序的时候用的是外部石英晶体振荡电路,石英晶体选择的是12MHz,波特率是9600bps,上电后单片机可以正常工作,串口助手也能连续收到单片机的字符数据,但是奇怪的是接收数据开始的时候是正常的,慢慢的就开始乱码,到后面居然不能正常接收了,他赶紧问小宇老师,这是为啥呢?我让他微调了程序并把晶振换成11.0592MHz后通信正常了!咦~这是为啥?按理说12MHz晶体产生的振荡周期是1us,而11.0592MHz晶体产生的振荡周期是1.085us,这两个周期相差根本就不大,并不会过多影响单片机的执行速度,他们的主要差异是用在串口通信时,12MHz作为数值带入波特率计算后得到的偏差较大,在持续性通信过程中容易造成时钟的“累积误差”,每次都“慢半拍”持续下去的话就不止“半拍”了。


所以在特殊的应用中产生了看似奇怪的石英晶体标称频率,相似的还有用在DTMF(双音多频)编/解码上的3.579545MHz,又有用在RTC(实时时钟)上的32.768kHz,还有用在HF频段RFID(射频识别)上的13.56MHz等等,这些频率值看似“怪异”实则有特殊的适用。所以啊,选择合适的晶体或者晶振非常重要,选型的时候一定要考虑好封装尺寸、负载电容、标称频率、温度范围、频率偏移、频率老化时长等参数。


特别推荐:

 

图片


书名:《深入浅出STC8增强型51单片机进阶攻略》

作者:龙顺宇

定价:178.00元


内 容 简 介


本书以宏晶科技公司STC8系列增强型51单片机作为讲述核心,深入浅出地介绍该系列单片机片内资源及应用,其内容可在STC8A、STC8F、STC8C、STC8G及STC8H等系列单片机中应用。


本书以各种巧例解释相关原理,以资源组成构造学习脉络,选取主流开发工具构建开发环境,利用实战项目深化寄存器理解,注重“学”与“用”的结合,帮助读者朋友们快乐入门、进阶,筑牢基础,将相关理论知识应用到实际产品研发之中。


本书根据STC8系列单片机的资源脉络及初学者的学习需求,按照梯度设定22章,从内容组成上分为“无痛入门基础篇”和“片内资源进阶篇”。


无痛入门基础篇从第1章到第8章,主要讲解单片机的发展、学习方法、STC8系列单片机家族成员、软/硬件开发环境搭建及调试、I/O资源使用和配置、LED器件控制、A51和C51语言开发差异及特点、常见字符/点阵型液晶模块的驱动、独立按键/矩阵键盘交互编程的相关知识和应用。


片内资源进阶篇从第9章到第22章,主要讲解单片机的内部存储器资源、时钟源配置、中断源配置、基础型定时/计数器、高级型定时/计数器、UART异步通信接口、SPI同步串行外设接口、I2C串行通信、模数转换器A/D资源、电压比较器资源、片内看门狗资源、电源管理及功耗控制、ISP/IAP应用、EEPROM编程和RTX51实时操作系统的相关知识及应用。


作者介绍


龙顺宇(书童哥),硕士,高校教师,主要研究方向为嵌入式/单片机系统应用、物联网技术应用。中国电子学会电子工程师、中国工业和信息化部物联网工程师,台湾凌阳爱普物联网培训教师,电子芯客吧、电源网、电子发烧友论坛、与非网论坛、摩尔吧教育平台、原子哥教育平台、凡亿教育平台金牌讲师。《深入浅出STM8单片机入门、进阶与应用实例》书籍作者,思修电子工作室单片机理论教程及实战案例主讲人。


原文链接:https://mp.weixin.qq.com/s/xrlpncc82v1U3RLbXfJMlg

微信图片_20220706154608.jpg

电子技术应用专栏作家  嵌入式Linux