节电设计中掉电状态MCU的复位唤醒速度
0 前言
在MCU的节电措施中,除了降低工作频率与工作电压以外,剩下的就是如何选择MCU的节电模式了。由于节电的机理是设法停掉片内一部分电路的工作,因此节电效果最好的是片内电路全停的掉电方式。以MCS51系列的AT89C2051为例,其休闲方式(CPU冻结,但振荡器、中断、定时器与串行口等仍继续运行)的耗电约为850uA,而掉电方式(片内所有电路均停止工作,仅保持I/O端口引脚状态和片内RAM内容不变)的耗电仅为1uA不到。显然,对于那些正常运行中存在等待状态的MCU应用项目来说,应当尽可能地选择这种掉电方式来作节电设计。但由于掉电状态下MCU片内的时钟和中断系统均不工作,所以无法以片外中断方式唤醒片内的CPU,而只能以复位方式予以唤醒。然而实际应用需求往往对MCU的唤醒速度有所要求,而在一般概念中MCU的复位速度是很慢的(如上电复位),且相关的数据手册和应用资料均未对此给出明确清晰的说明,因此MCU掉电时的复位唤醒速度便成了能否采用这种节电方式的关键所在。为此,有必要从理论和实践两方面进行探讨并寻求相关答案。
1 MCU的复位方式及其特点
一般说来,MCU的复位操作通常可分为上电复位、手动复位、看门狗复位、失电复位、以及节电方式下的掉电复位。根据这些复位操作发生时的系统状态又可将它们归为三类:上电复位、运行复位、掉电复位。下面分别对这三类复位操作及其特点进行具体分析。
1.1 上电复位
上电复位几乎是所有MCU应用系统都在使用的启动方式,它是指系统加电开始运行时的自动复位,一般是在电源上升稳定后利用模拟或数字的延时环节给MCU提供一定时间进行片内复位操作。常见的复位电路有片外RC延时电路[1]和片内复位定时器等[5]。
对于该上电复位操作所需的时间,一般的MCU数据手册都给出了相应的说明。以Intel公司的MCS51 PDF文档为例[1] :①振荡器起振到稳定的时间大约为1ms~10ms,(即10MHz的晶振为1ms,1MHZ的晶振为10ms);②为确保可靠复位,RST引脚上的高电平必须保持到振荡器起振再加两个机器周期;③上电时VCC必须在10ms左右的时间内完成其上升。
以上三点说明给人的印象是上电复位所需的时间是很长的,而且很容易造成这样的错觉:上电复位所需时间=电源上升时间+振荡器起振时间+片内初态建立时间。这也影响了某些文献关于上电复位时间的相关论述[3][4]。也正因为如此,在实际设计中为了确保可靠复位,设计者通常都把片外复位电路的RC数值取得较大(文献[1]的推荐值是8.2K与10uF)。
然而事实并非如此。图一给出了AT89C51的一个测试实例:当电源电压上升到2V左右时振荡器开始起振(此时距电源上升起点约1ms),尔后其振荡幅度基本上跟随电源电压逐步攀升,直至2.3ms时两者均达最大(VCC=5V,Vx2≈5Vpp);与此同时,复位时片内初态的设置操作将I/O引脚(图一中P1.4)电平抬高发生在VCC上升到50%时,此后若将RST引脚的高电平拉低,MCU将立即开始执行程序,而不必等到振荡器振幅达到最大。(以上两个时间参数系指振荡器的片外定时元件为4MHz陶瓷谐振器)。
图一AT89C51上电复位时的起振时序
由此可以得出这样的结论:上电时的复位操作(初态设置+振荡器起振)在电源电压上升到其50%时便可完成,而不是在片内振荡器振幅稳定的两个机器周期之后(即片内初态的建立并不依赖于片内振荡器的状态)。此后RST引脚的电平是否变低决定了MCU何时开始取指执行。但为避免在电源电压不足时仓促执行程序可能对片外带来的意外结果,复位信号还是应当持续到电源电压上升结束时方可撤除。从这一点出发可以认为,上电复位所需时间完全取决于电源电压的上升时间。由于此处电源电压上升的实测时间为2.3ms,因而可以确定文献[1]的推荐值选得过大(8.2k×10uF=82ms),会使上电开机时间拖得太长。
1.2 运行复位
运行复位是指系统异常时的手动复位、程序跑飞时的看门狗复位、电源电压下降时的失电复位等。它们的共同点是片内振荡器及其它电路都在正常运行,CPU正在执行程序。
由文献[1]中相关的运行复位时序图可知,此时提供给MCU的RST引脚上的复位信号必须不小于两个机器周期。这是因为MCU每个机器周期只对片外的 RST引脚采样一次。为了避免RST引脚上的干扰信号导致复位的误动作,必须连续采样到两次有效的片外RST复位信号,MCU才会启动片内的复位流程,使片内的RESET信号有效(直到此时片外的RST信号方可撤去),并以此片内RESET信号去设置片内各部件的初始状态以及控制随后的取指执行。考虑到送达片外RST引脚上的复位信号有可能正好发生在一次片
- 基于WinCE5.0的嵌入式设备休眠唤醒技术研究(09-27)
- 嵌入式系统的低功耗软件设计(02-19)
- 嵌入式系统休眠唤醒自动运行程序的方法设计(08-22)
- DIY小设计:智能闹钟的简单软硬件实现(04-14)
- STM32之RTC闹钟唤醒停机模式(11-28)
- STM32 AWU RTC闹钟从停机模式唤醒CPU(11-23)