收藏 分享(赏)

节电设计中掉电状态MCU的复位唤醒速度.doc

上传人:11xg27ws 文档编号:5789980 上传时间:2019-03-17 格式:DOC 页数:4 大小:44.50KB
下载 相关 举报
节电设计中掉电状态MCU的复位唤醒速度.doc_第1页
第1页 / 共4页
节电设计中掉电状态MCU的复位唤醒速度.doc_第2页
第2页 / 共4页
节电设计中掉电状态MCU的复位唤醒速度.doc_第3页
第3页 / 共4页
节电设计中掉电状态MCU的复位唤醒速度.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、节电设计中掉电状态 MCU 的复位唤醒速度 单 片 机 发布时间:2009-08-13 08:46:06 来源 CEPARK 网站 http:/ 作者: hnrain 摘要:针对采用掉电方式进行 MCU 节电设计时能否用硬件复位实现快速唤醒,分析讨论了上电复位、运行复位和掉电复位等三类复位方式的一些区别和特点,得出了掉电复位唤醒所需时间远小于上电复位、复位信号应维持多宽方能快速唤醒 MCU、以及采用片外时钟可使复位唤醒速度最快等结论。关键词:快速唤醒;节电设计;掉电方式;单片机应用 0 前言在 MCU 的节电措施中,除了降低工作频率与工作电压以外,剩下的就是如何选择 MCU 的节电模式了。由于

2、节电的机理是设法停掉片内一部分电路的工作,因此节电效果最好的是片内电路全停的掉电方式。以 MCS51 系列的 AT89C2051 为例,其休闲方式( CPU 冻结,但振荡器、中断、定时器与串行口等仍继续运行)的耗电约为 850uA,而掉电方式(片内所有电路均停止工作,仅保持 I/O 端口引脚状态和片内 RAM 内容不变)的耗电仅为 1uA 不到。显然,对于那些正常运行中存在等待状态的 MCU 应用项目来说,应当尽可能地选择这种掉电方式来作节电设计。但由于掉电状态下 MCU 片内的时钟和中断系统均不工作,所以无法以片外中断方式唤醒片内的 CPU,而只能以复位方式予以唤醒。然而实际应用需求往往对

3、MCU 的唤醒速度有所要求,而在一般概念中 MCU 的复位速度是很慢的(如上电复位),且相关的数据手册和应用资料均未对此给出明确清晰的说明,因此 MCU 掉电时的复位唤醒速度便成了能否采用这种节电方式的关键所在。为此,有必要从理论和实践两方面进行探讨并寻求相关答案。1 MCU 的复位方式及其特点一般说来,MCU 的复位操作通常可分为上电复位、手动复位、看门狗复位、失电复位、以及节电方式下的掉电复位。根据这些复位操作发生时的系统状态又可将它们归为三类:上电复位、运行复位、掉电复位。下面分别对这三类复位操作及其特点进行具体分析。11 上电复位上电复位几乎是所有 MCU 应用系统都在使用的启动方式,

4、它是指系统加电开始运行时的自动复位,一般是在电源上升稳定后利用模拟或数字的延时环节给 MCU 提供一定时间进行片内复位操作。常见的复位电路有片外 RC 延时电路1和片内复位定时器等5。对于该上电复位操作所需的时间,一般的 MCU 数据手册都给出了相应的说明。以 Intel 公司的 MCS51 PDF 文档为例1 :振荡器起振到稳定的时间大约为 1ms10ms,(即 10MHz 的晶振为 1ms,1MHZ 的晶振为 10ms);为确保可靠复位, RST 引脚上的高电平必须保持到振荡器起振再加两个机器周期;上电时 VCC 必须在 10ms 左右的时间内完成其上升。以上三点说明给人的印象是上电复位所

5、需的时间是很长的,而且很容易造成这样的错觉:上电复位所需时间=电源上升时间+ 振荡器起振时间+ 片内初态建立时间。这也影响了某些文献关于上电复位时间的相关论述34。也正因为如此,在实际设计中为了确保可靠复位,设计者通常都把片外复位电路的 RC 数值取得较大(文献1的推荐值是 8.2K 与 10uF)。然而事实并非如此。图一给出了 AT89C51 的一个测试实例:当电源电压上升到 2V 左右时振荡器开始起振(此时距电源上升起点约 1ms),尔后其振荡幅度基本上跟随电源电压逐步攀升,直至 2.3ms 时两者均达最大(VCC=5V,Vx25Vpp);与此同时,复位时片内初态的设置操作将 I/O 引脚

6、(图一中 P1.4)电平抬高发生在 VCC 上升到 50时,此后若将 RST 引脚的高电平拉低,MCU 将立即开始执行程序,而不必等到振荡器振幅达到最大。(以上两个时间参数系指振荡器的片外定时元件为 4MHz 陶瓷谐振器)。图一 AT89C51 上电复位时的起振时序由此可以得出这样的结论:上电时的复位操作(初态设置+振荡器起振)在电源电压上升到其 50时便可完成,而不是在片内振荡器振幅稳定的两个机器周期之后(即片内初态的建立并不依赖于片内振荡器的状态)。此后 RST 引脚的电平是否变低决定了 MCU 何时开始取指执行。但为避免在电源电压不足时仓促执行程序可能对片外带来的意外结果,复位信号还是应

7、当持续到电源电压上升结束时方可撤除。从这一点出发可以认为,上电复位所需时间完全取决于电源电压的上升时间。由于此处电源电压上升的实测时间为 2.3ms,因而可以确定文献 1的推荐值选得过大(8.2k10uF=82ms),会使上电开机时间拖得太长。12 运行复位运行复位是指系统异常时的手动复位、程序跑飞时的看门狗复位、电源电压下降时的失电复位等。它们的共同点是片内振荡器及其它电路都在正常运行,CPU 正在执行程序。由文献1中相关的运行复位时序图可知,此时提供给 MCU 的 RST 引脚上的复位信号必须不小于两个机器周期。这是因为 MCU 每个机器周期只对片外的 RST 引脚采样一次。为了避免 RS

8、T 引脚上的干扰信号导致复位的误动作,必须连续采样到两次有效的片外 RST 复位信号,MCU 才会启动片内的复位流程,使片内的 RESET 信号有效(直到此时片外的 RST 信号方可撤去),并以此片内 RESET 信号去设置片内各部件的初始状态以及控制随后的取指执行。考虑到送达片外 RST 引脚上的复位信号有可能正好发生在一次片内采样之后,所以为实现运行时的可靠复位 RST 引脚上的复位信号至少得维持 2 个机器周期。13 掉电复位掉电复位是指 MCU 处于节电的掉电状态下以复位方式将其唤醒重新执行指令的操作。掉电后 MCU 片内的所有电路均已停止工作,但其片内 RAM 内容和各端口引脚的状态

9、保持不变,而且 MCU 的供电电压也大都保持不变(也有少数应用中将掉电状态下的 MCU 供电电压降为 2V 以求最大限度的节电)。这种情况下的复位操作与上电复位所实现的目标是相同的:振荡器起振并稳定、片内相关部件建立初态。但与上电复位不同的是:MCU 的工作电压仍然存在。从上电复位的讨论中可以得知,其可靠复位所需时间主要取决于电源电压的上升时间;那么对于此处掉电复位来说,当已没有了电源电压上升的问题时(对于那种掉电后电源电压下降到 2V 者,则应先将电源电压上升到正常值后方可对 RST 引脚施加复位信号),复位所需时间又取决于什么?对于这一点,相关的数据手册并未给出确切说明,只说“复位信号激活

10、了振荡器,复位信号必须保持有效到使振荡器起振并达稳定(一般少于 10ms)” 1,这似乎是说该 MCU 的掉电复位唤醒时间约为数毫秒。然而,该数据手册提供的相关内部电路框图1以及笔者所作的实际测试均表明,情况并非完全如此。从文献1中与掉电方式有关的内部电路框图可见,片内振荡器的起振和向后传输均受控于掉电控制位 PD,因此掉电复位时必定是先进行片内初始状态的设置(其中包含 PD 位清零),然后才能使片内振荡器起振并后传。同时,也正由于片内振荡器的起振是由片内初态进行控制的,所以片内初态一旦可靠建立,片外复位信号就没有必要一直保留到使片内振荡器振幅趋于稳定。以下测试证实了这一点。图二给出了 AT8

11、9C51 在掉电复位唤醒时的实际测试结果,此时其片内振荡器的片外定时元件为 4MHz的陶瓷谐振器。图二 AT89C51 在掉电状态下复位时的起振时序由图二可见,当复位信号前沿到来时,片内振荡器立即在 1/2VCC(2.5V)左右处开始起振。在起始的 3us 时段内其振幅很小,4us9us 期间其振幅迅速增加,到 10us15us 内则渐趋稳定。由此可得以下几点结论:首先,片内振荡器的起振速度大大快于数据手册1中所说的 “一般少于 10ms”。其次,当复位信号到来时,片内振荡器并未象上电复位那样等了一段时间以后再起振,而是立即起振。这是由于在掉电复位唤醒前,电源电压依然存在,使得片内振荡器的某些

12、静态工作点仍然维持着,所以一旦复位操作清除了掉电控制位 PD,振荡器便立即在工作点处(1/2VCC=2.5V)开始起振,显然比上电复位时省掉了一段逐步建立工作点所需的启动时间。为了确切了解 AT89C51 的可靠复位唤醒要求片外所加的复位信号至少应保持多少宽度,笔者以另一 MCU 发出的窄脉冲作为被测 MCU 的复位信号,并不断改变其宽度,再以观察被测 MCU 的一个 I/O 引脚电平的变化来判断是否可靠地完成了复位唤醒操作,即在 MCU 进入掉电状态之前先将该引脚用指令置为低电平,随后掉电复位唤醒发生时的片内初态设置操作又会把该引脚强制置为高电平,最后,由掉电复位唤醒结束后的第一条指令再将其

13、立即拉为低电平。测试结果显示,当外加的复位信号宽度为 1us6us 时,被测 MCU 有时不能可靠复位,具体表现为该 I/O 引脚被复位的初态设置操作强制拉高后又可能随着复位信号的撤除而立即下降。而当外加的复位信号宽度大于 8us 后,被测 MCU 就能可靠复位唤醒并在外加复位信号撤除后能顺利开始执行程序。这个结果表明:复位时 MCU 的端口引脚跟随复位信号的高电平前沿立即变高,滞后小于 1us;复位唤醒时 MCU 的片内初态的设置领先于片内振荡器的起振。 复位唤醒时外加的复位信号宽度最小只需几个 us 即可,不必等到振荡器振幅达到最大就可使 MCU 开始执行指令(上述 8us 处的振荡幅度大

14、约为 160mVpp),这可能是因为在片内振荡器后面有一级分频器,将振荡器在 1/2VCC 处的小幅度振荡整形为满幅度时钟信号了。由此可知,掉电状态下 MCU 的复位唤醒虽与片内振荡器有关,但其唤醒时间并不等同于片内振荡器从起振到稳定的时间。若想获得最快的复位唤醒速度,还可考虑使用片外振荡器,以便 MCU 的掉电操作对振荡器不构成影响。对于非 MCS51 的其它 MCU 系列,其掉电唤醒的复位操作和时序大致与上述相同,只是具体时间参数上可能有所差异。以 MICROCHIP 的 PIC12F508 为例5 ,其片内主管复位延时的定时器 DRT 的延时值分为两类,一类是上电复位时的延时值为 18m

15、s,另一类是采用片内 RC 振荡器或片外时钟输入时用作复位唤醒的延时值为 10us。稍显不足的是,该文档还声称当采用片外晶振时其 DRT 的延时值仍为 18ms,这显然与本文所测数据相差甚远。 2结束语能否以硬件复位对 MCU 实行快速唤醒是妨碍采用掉电方式进行 MCU 节电设计的一道门槛,其关键在于 MCU 掉电时的复位唤醒时间是否可知、是否够快。本文工作就这两点给出了答案。结论是明确的:采用片内振荡器时,掉电状态下的复位唤醒时间小于片内振荡器从起振到稳定的时间(且远小于上电复位时间),采用陶瓷谐振器时,该时间可快至 10 微秒左右,若想进一步加快则可采用片外时钟方案。参考文献1 MCS 51 MICROCONTROLLER FAMILY USERS MANUAL。 www6.informatik.tu-muenchen.de/lehre/vorlesungen/script_ez_2000/intel-mcs51.pdf。1994,2。P.3-26P.3-292 Oscillators for Microcontrollers

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 解决方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报