单片机程序配置成开漏输出_单片机最小系统之时钟/复位

  • Post author:
  • Post category:其他


前一篇介绍了单片机最小系统的电源部分,这期将介绍构成单片机最小系统的另外两部分,就是时钟以及复位。


1.


时钟电路

单片机最小系统的第二个内容就是时钟。单片机的工作是面向任务的,即根据存储在单片机FLASH内部的二进制代码,逐步执行,那么这个执行的参考时间,就是时钟。有了时钟,单片机就知道何时做什么事情了。另外,有了时钟,单片机的内核才能与外设进行同步。举个通俗的例子,就好比两个人,约定每天上午10点打电话,这个就是时钟的同步了。作为用户而言,就是单片机需要工作,必须要有时钟,时钟就类似人的心跳一样,必须不停的跳动。

所有单片机的数据手册,都会有时钟相关的章节介绍,如图3.1所示的就是STC8A8K64S4A12芯片手册里的系统时钟结构图示。

39b5bddab83e1c5fc783e94c562af0f5.png

图3.1STC8A8K64S4A12系统时钟图示

图示解析:

① 时钟源选择:从图中可以看出,可以有4种方式产生主时钟MCLK,分别是内部24MHz、外部晶振、外部时钟信号、内部32kHz;

② 时钟分频:MCLK经过分频,提供给MCU内核使用;

③ 时钟输出分频:MCLK经过分频对外输出时钟;

④ 时钟输出引脚选择:可以选择从P1.5或P1.6输出时钟,供外内部设备使用;

⑤ 系统时钟SYSclk:单片机内核所需要的时钟,它决定了单片机处理指令的速度,频率越高,处理速度越快,但是功耗就越高,这应该比较容易理解。以做俯卧撑为例子,A君1秒做10个俯卧撑,B君1秒做1个,那么相同的时间内,假设1分钟,A君可以做600个俯卧撑,而B均只能做60个,A君的频率比B君高,但是A君会消耗更大的热量。因此在选择时钟时,需要综合考虑运行速度和功耗,而不能只单方面追求速度。当然,如果功耗不再考虑范围,当然是频率越高越好,这样单片机处理能力会大幅提升,但频率是否可以无限制提升呢?目前并不是这样的,单片机的手册,都会对时钟的最高频率进行定义,例如STC8系列单片机的芯片手册,就有以下这一段的说明。

4ab0c8c728264648058fa6fdc9f92c94.png

从说明可以看出,STC8A8K64S4A12的时钟,最高可以达33MHz。这里说一下分频的概念,就是输入时钟,除以一个分频系数,得到输出频率。例如输入频率是24MHz,分频系数为2,则输出频率为24/2=12MHz。在ARM系统里面还有倍频的概念,即输入时钟乘以一个分频系统,得到输出频率,这里有个概念即可。

既然有4种输入时钟,那么该如何进行选择呢?表3.1可供参考。

图3.1各输入时钟对比

内部RC

晶体

外部时钟输入

优点

① 成本低,不需要任何外部电路;

② 节约PCB布局空间;

③ 增加I/O口数量

① 精度更好;

② 时钟输出稳定;

③ 抗干扰能力好;

① 精度视外部时钟;

② 单片机不需要单独的晶振电路;

缺点

① 精度不高

② 容易受干扰(温度漂移/零点漂移)

① 需单独的晶振电路,成本较高;

② 占用PCB布局空间

③ 占用2个I/O口

① 同样需额外产生时钟;

② 占用1个I/O口;

场合

① PCB空间受限时;

② 应用环境无干扰源;

③ 成本有要求时;

④ I/O口不足时;

① 需要稳定的时钟输出时;

② 与其它芯片通信的时序要求较高时;

③ 成本要求不高时;

① 多芯片共用时钟,节省成本时;

② 作为从设备应用时;

接下来介绍,选择不同时钟时,电路如何设计。


① 内部RC电路:

如果选择内部的RC振荡电路,那么引脚可以直接悬空不接,或者作为普通I/O口使用。一般的单片机,上电复位后,默认都是使用内部IRC,一般可以通过下载软件切换,或通过程序控制切换。如图3.2所示就是STC单片机的一个寄存器的说明,从IRC24MCR寄存器中的说明看出,Bit7位”ENIRC24M”就是内部24MHz的使能位,而看IRC24MCR寄存器的复位后初始值,Bit7位为1,如图3.3所示,这样就验证了前面的说法,单片机上电后,默认使用内部IRC。所以如果使用内部RC时钟的话,引脚直接悬空或者做普通I/O口使用即可。关于寄存器的概念,现在暂时不细化,随着内容慢慢扩展,再详细介绍如何查看芯片的寄存器。

edf68d32d98e37365ada68fac6d7e0d4.png

图3.2IRC24MCR寄存器图示

71e87810874814b62d0f5600b892a809.png

图3.3IRC24MCR寄存器复位初始值


② 外部晶振电路:

图3.4就是典型的外部晶振时钟输入电路。

73ccdb192ffb6f2484290f7af621c91e.png

图3.4典型外部晶振输入电路

图示中的Y是晶振,按材料分,可分为陶瓷晶振和石英晶振,按是否有电源,又分为有源晶振和无源晶振,一般常用无源的石英晶振即可,有源的成本一般会贵一些。C1,C2是负载电容,电容值,一般根据晶振的手册推荐选择,取值一般在15PF~30pF之间。


③ 外部时钟输入:

图3.5就是典型的外部时钟输入电路,只需要从XTALI引脚输入时钟即可,这个时钟既可以是正弦信号,也可以是脉冲信号。

ad997e5074cc65ff23769e582e08b9ec.png

图3.5典型外部时钟输入电路

以上就是单片机所需时钟的三种产生的方法,在实际应用过程中,应结合具体的需求、应用环境、成本等因素综合考虑采用哪一种方式。而具体怎么样配置时钟,不同的单片机,配置方法不同,暂时不细说,在后面单片机的编程里面会进行介绍。


2.


复位电路

单片机最小系统的第三个内容就是复位,什么是复位,也好理解,就是单片机结束当前的任务,重新重头开始执行程序。就好像我们平常生活中使用PC电脑一样,有时电脑死机了,我们都会知道按一下重启键,就可以重启电脑,其实这就是一个复位的过程。不同的单片机厂家,复位的方法有些许的区别,以下这四种复位时最基本的。


① 上电复位

单片机从没有电源供电,到有电源供电,单片机就会把内部的寄存器复位成初始值,读取所有的硬件选项,并根据写入到flash里面的代码开始执行程序。


② 低压复位

当输入的电源电压掉到一定的程度,也会引起复位,在STC8A系列的51单片机芯片手册里就有以下一段寄存器描述的内容,如图3.6所示。

46ebeade601d138876a59437706b740c.png

图3.6RSTCFG复位配置寄存器

从芯片手册中的复位配置寄存器可以看到,需要在低压引起复位的条件,需要配置寄存器的bit6 ENLVR是能低压复位,同时电压值的门槛电压可以通过LVDS[1:0]进行配置,例如配置为2.2V,那么当VCC的电压值低于2.2V时,则会自动产生复位。而当电压继续降低,则直接进入掉电方式,单片机不再工作。这种模式,应用的场合并不多。


③ 复位脚复位

复位脚(RST脚)复位常用有两中方式,一种是图3.7左图所示的上电复位电路。上电时,VCC会先对电容C充电,所以RST引脚的电压接近VCC,即高电平,随时时间的增加,电容C逐渐充满电,由于电容隔直通交的特性,处于截止状态,而由于RST对GND下拉了电阻R,那么RST会强制拉到低电平。这里就存在一个上电复位的延时效果,延时的时间与电容值的大小即充电时间有关。这样设计的好处是,让输入电源即VCC处于稳定的状态后,才让单片机开始工作,否则可能在上电过程中,由于电源的不稳定,导致某些数据读取异常。这是通过硬件的方式实现延时开机。

d0d7b6d3a3bbb030de58331d0399b057.png

图3.7典型上电复位电路

而图3.7右图所示,通过SW外部按键复位,SW空闲时断开,RST的电平变化与前述的上电复位相同。而在单片机工作时,希望能手动复位,可以按下SW,SW闭合会时RST强制拉到VCC(高电平),从而实现的复位,值得注意的是,芯片手册里面都有RST要保持多久的高电平才能复位,即SW保持按下的时长。


④ 看门狗复位

看门狗复位也是经常使用的功能,目的是为了在程序运行异常时让系统复位,重头开始执行程序。这就是常说的程序跑飞了,即单片机没有按既定的程序执行代码。看门狗的原理其实也很简单,通俗的讲,它就是一个单片机内部独立运行的定时器,一旦允许看门狗后,这个内部的定时器会不停的计时,如果在规定的时间内,没有清0该定时器,俗称“喂狗”,则会认为程序已经跑飞,系统会自动复位。

以上就是关于单片机最小系统中的时钟及复位的相关说明,下一期将以单片机最小系统为开端,进入原理图的设计阶段,敬请继续关注。

往期回顾:第六期:单片机最小系统之电源篇

往期回顾:第五期:数字电路基础

往期回顾:第四期:创建PCB封装—AD篇

往期回顾:第三期:创建PCB封装—PADS篇

往期回顾:第二期:新建元件—AD篇

往期回顾:第一期:新建元件—PADS篇



版权声明:本文为weixin_35435986原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。