只会纯硬件,让我有点慌

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

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

268b234ad335aa1f1e3f2ce2da2437d1.jpeg文末留言点赞前七名,免费赠送。(截止时间7月30日晚上8:00)

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

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

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

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

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

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

c6189df5f043142e315dab1c7b77afcd.png

图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所示,首先打开晶体的金属外壳后发现了内部有一层网状隔片,目的是为了让晶体与外部金属壳绝缘和防震,拆除这层隔片后就看到核心石英晶体和电极了,用手轻轻一掰,“咔”的一声就碎了,真是“嘎嘣脆,鸡肉味儿”。通过这个破坏性实验我们学到了什么呢?那就是晶体元器件在保存和使用时要避免磕碰,以免损坏内部石英晶体,焊接的时候也不要持续高温,以免晶体引脚升温太快引起内部电极与石英晶体片之间的碎裂,所以说石英晶体这种器件是外表看着“皮实”,但“内心”脆弱的器件。

764edddcc5bc74f46cf1defcabbd45b3.png

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

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

fb40276c4c714779774ad8c82d38787f.png

图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所示。 

3b586ccc3516d78b98d85356fe0db5f4.png

图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等等,这些频率值看似“怪异”实则有特殊的适用。所以啊,选择合适的晶体或者晶振非常重要,选型的时候一定要考虑好封装尺寸、负载电容、标称频率、温度范围、频率偏移、频率老化时长等参数。

特别推荐:

ce5aa0f0147427b5703c09b92303d1d8.png

书名:《深入浅出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单片机入门、进阶与应用实例》书籍作者,思修电子工作室单片机理论教程及实战案例主讲人。

为了感谢大家对本公众号的支持,本次向清华大学出版社申请了7本《深入浅出STC8增强型51单片机进阶攻略》赠送给大家。赠书采用留言点赞的方式:
参与方法:关注【嵌入式Linux】公众号,文末留言点赞前七名,免费赠送!
截止时间:7月30日20:00
温馨提示:留言点赞前七名中奖者于8月1日20:00点前把收货地址留言给我或着把地址发到我的微信,否则视为放弃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSLog的常用格式说明小释

NSLog的格式如下所示: % 对象%d, %i整数%u 无符整形%f 浮点/双字 %.nf 带有n小数点的浮点/双字%x, %X二进制整数%o 八进制整数%zu size_t %p 指针%e 浮点/双字 (科学计算) %g 浮点/双字%s C字符串%.*s Pascal字符串%c 字符%C unichar %lld 64位长整数(long long) %llu 无符64位…

感觉自己好傻

前几天,一个微信微信朋友找我聊天。他在一家公司工作了4年多,但是这四年基本没有什么技术上的提升,做的事情也一些打杂的事情,核心技术在芯片原厂,软件SDK也是别人写好的,他能做的就是对接客户,…

图形处理单元(GPU)的演进

CPU 和 GPU好久没有更新了,最近在阅读 CUDA 相关的一些论文,因为都是碎片化阅读,容易导致读过后,可能过一段时间又忘记掉,所以决定抽时间翻译翻译阅读的论文,一方面增强自己记忆,一方面与大家共…

TCP通信过程大讨论

转载地址:http://www.cricode.com/3568.html 本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 图1 TCP 三次握手…

Android 自定义View以及ValueAnimator学习

2019独角兽企业重金招聘Python工程师标准>>> 看了ApiDemo里面的BoucingBall,觉得挺好的,所以特地学习了一下,将代码注释后贴到这里,以便以后学习。 class BallView extends View implements ValueAnimator.AnimatorUpd…

固件工程师到底是干什么?

大家好,我是写代码的篮球球痴可能大家还不知道,我是一个写固件的工程师,今天和一个微信朋友聊天,他问我工作几年了,我说我工作10年了,而且这10年我都一直在从事嵌入式固件相关的工作。他猛的觉得很不可思议…

如何实现按键的短按、长按检测?

在电子产品中经常用到按键,尤其是经常需要MCU判断短按和长按这两种动作,本篇我们来专门聊下这个话题。只谈理论太无聊,我们还是结合着实际应用来说明。之前写过一篇关于《CH573第一篇:实现自拍杆蓝牙遥控器1》的文章,例…

博士也会毕业吗?

怪我读书少,一直以来我都认为博士是一种很神奇的物种,他们能学会很多我们学不会的东西,那些奇奇怪怪的数学题,还有那种要背上几天的思想政治课文,以及要听懂那种像鸟儿一样呼唤的讲课,所以,我一…

国外出差见闻之印度

前段时间到印度的马德拉斯市出差了3个月(4月到6月),今天终于有时间将自己的出差心得和见闻记录下来,可能以后就会忘记。下午16:00时在深圳坐车到香港机场,上车没多久会让填一个入境香港的单子,然后是过海关,过海关时会…

雷军的演讲以及产品发布

8月11号是小米的发布会,还有雷军的年度演讲。因为工作冲突我没看直播,晚上回来看了公众号文章和知乎上的内容讨论,也看了发布的新产品。雷军那个年代能够做上程序员一定是非常牛逼的人,而雷军是这些牛逼人的公司总经理&#xff0c…

轻松理解UML用例图时序图类图的教程

摘自https://zhuanlan.zhihu.com/p/29874146 写在前面 当你老大扔给你这样的图,或者你需要完成某些功能而去看文档的时候发现以下类似这样的图会不会不(一)知(脸)所(懵)措(逼&#x…

[Winodows Phone 7控件详解]控件拾遗

1.Panorama控件和Pivot控件前面讲过,没有必要再重复一遍了。参见我的博文:http://www.cnblogs.com/DebugLZQ/archive/2012/03/19/2406284.html 2.DeepZoom DeepZoom 是silverlight的特色功能之一,也同样被加到了windows phone 7中来。这个功能…

这个工具替代Notepad++,我很满意

用过notepad的人并且还一直坚持使用它的人一定觉得它是一个非常优秀的软件,这个软件用来看日志,看代码和文档非常方便,而且里面还集成了一个HEX分析的工具,当然还有列模式等等。不吹牛啊,很多软件只做到了功能&#xf…

Kubectl 部署有状态应用(下)

接上文 《Kubectl 部署有状态应用(上)》创建完StatefulSet后,本文继续介绍StatefulSet 扩展、更新、删除等内容。 StatefulSet 中的 Pod 验证序数索引和稳定的网络身份 StatefulSet 中的 Pod 具有唯一的序数索引和稳定的网络身份。 查看 …

收集的50家国产MCU信息

全球MCU市场多为欧美、日本和台湾地区企业占据,仅欧企恩智浦、美企Microchip、美企ST、欧企英飞凌就占据超80%的份额,TI、Nuvoton、罗姆、三星、东芝五家企业占据11.4%,而中国大陆企业所占份额6.5%不到。这意味着,留给中国本土供应…

Silverlight实用窍门系列:63.Silverlight中的Command,自定义简单Command

在Silverlight中的MVVM模式下将前台页面和ViewModel界面交互分离开是通过本节所要讲述的Command实现的。我们自定义一个Command需要继承于ICommand接口并且实现这个接口。它有CanExecute()、Execute()方法和CanExecuteChanged事件组成。 CanExecute():判断是否继续执…

赋值运算符和拷贝构造函数的区别与联系

转载:http://blog.csdn.net/hebbely/article/details/65437510 简述: C中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。拷贝构造函数使用已有的对象创建一个新的对象,赋值运…

硬件有没有35岁危机?

大家好,我篇文章是我的朋友记得诚写的,分享给大家!35岁危机指的是,很多企业停止招聘35岁及以上的员工,甚至会裁掉年纪大的人。我们经常说程序员,说互联网从业者有35岁危机。这个危机一方面是自己的焦虑&…

强大的独立日期选择器(date picker)插件 - Kalendae

日期:2012-4-16 来源:GBin1.com 在线演示 本地下载 今天分享一个独立的日期选择插件Kalendae,Kalendae是 一个强大健壮的独立日期选择器。如果你不想使用重量的jQuery UI类库的话,这个插件肯定是一个不错的备选。Kalendae包含了…