历史上的今天
返回首页

历史上的今天

今天是:2025年04月11日(星期五)

正在发生

2018年04月11日 | 在节电设计中掉电状态MCU的复位唤醒速度

2018-04-11 来源:eefocus

    引言

    在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上电复位时的起振时序
      图一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引脚上的复位信号有可能正好发生在一次片内采样之后,所以为实现运行时的可靠复位RST引脚上的复位信号至少得维持2个机器周期。

    1.3  掉电复位

    掉电复位是指MCU处于节电的掉电状态下以复位方式将其唤醒重新执行指令的操作。掉电后MCU片内的所有电路均已停止工作,但其片内RAM内容和各端口引脚的状态保持不变,而且MCU的供电电压也大都保持不变(也有少数应用中将掉电状态下的MCU供电电压降为2V以求最大限度的节电)。这种情况下的复位操作与上电复位所实现的目标是相同的:振荡器起振并稳定、片内相关部件建立初态。但与上电复位不同的是:MCU的工作电压仍然存在。


    从上电复位的讨论中可以得知,其可靠复位所需时间主要取决于电源电压的上升时间;那么对于此处掉电复位来说,当已没有了电源电压上升的问题时(对于那种掉电后电源电压下降到2V者,则应先将电源电压上升到正常值后方可对RST引脚施加复位信号),复位所需时间又取决于什么?对于这一点,相关的数据手册并未给出确切说明,只说“复位信号激活了振荡器,复位信号必须保持有效到使振荡器起振并达稳定(一般少于10ms)” [1],这似乎是说该MCU的掉电复位唤醒时间约为数毫秒。然而,该数据手册提供的相关内部电路框图[1]以及笔者所作的实际测试均表明,情况并非完全如此。

 

    从文献[1]中与掉电方式有关的内部电路框图可见,片内振荡器的起振和向后传输均受控于掉电控制位PD,因此掉电复位时必定是先进行片内初始状态的设置(其中包含PD位清零),然后才能使片内振荡器起振并后传。同时,也正由于片内振荡器的起振是由片内初态进行控制的,所以片内初态一旦可靠建立,片外复位信号就没有必要一直保留到使片内振荡器振幅趋于稳定。以下测试证实了这一点。

    图二给出了AT89C51在掉电复位唤醒时的实际测试结果,此时其片内振荡器的片外定时元件为4MHz的陶瓷谐振器。

    AT89C51在掉电状态下复位时的起振时序
图二 AT89C51在掉电状态下复位时的起振时序

    由图二可见,当复位信号前沿到来时,片内振荡器立即在1/2VCC(2.5V)左右处开始起振。在起始的3us时段内其振幅很小,4us~9us期间其振幅迅速增加,到10us~15us内则渐趋稳定。由此可得以下几点结论:首先,片内振荡器的起振速度大大快于数据手册[1]中所说的“一般少于10ms”。其次,当复位信号到来时,片内振荡器并未象上电复位那样等了一段时间以后再起振,而是立即起振。这是由于在掉电复位唤醒前,电源电压依然存在,使得片内振荡器的某些静态工作点仍然维持着,所以一旦复位操作清除了掉电控制位PD,振荡器便立即在工作点处(1/2VCC=2.5V)开始起振,显然比上电复位时省掉了一段逐步建立工作点所需的启动时间。

    为了确切了解AT89C51的可靠复位唤醒要求片外所加的复位信号至少应保持多少宽度,笔者以另一MCU发出的窄脉冲作为被测MCU的复位信号,并不断改变其宽度,再以观察被测MCU的一个I/O引脚电平的变化来判断是否可靠地完成了复位唤醒操作,即在MCU进入掉电状态之前先将该引脚用指令置为低电平,随后掉电复位唤醒发生时的片内初态设置操作又会把该引脚强制置为高电平,最后,由掉电复位唤醒结束后的第一条指令再将其立即拉为低电平。测试结果显示,当外加的复位信号宽度为1us~6us时,被测MCU有时不能可靠复位,具体表现为该I/O引脚被复位的初态设置操作强制拉高后又可能随着复位信号的撤除而立即下降。而当外加的复位信号宽度大于8us后,被测MCU就能可靠复位唤醒并在外加复位信号撤除后能顺利开始执行程序。这个结果表明:①复位时MCU的端口引脚跟随复位信号的高电平前沿立即变高,滞后小于1us;②复位唤醒时MCU的片内初态的设置领先于片内振荡器的起振。③复位唤醒时外加的复位信号宽度最小只需几个us即可,不必等到振荡器振幅达到最大就可使MCU开始执行指令(上述8us处的振荡幅度大约为160mVpp),这可能是因为在片内振荡器后面有一级分频器,将振荡器在1/2VCC处的小幅度振荡整形为满幅度时钟信号了。

    由此可知,掉电状态下MCU的复位唤醒虽与片内振荡器有关,但其唤醒时间并不等同于片内振荡器从起振到稳定的时间。若想获得最快的复位唤醒速度,还可考虑使用片外振荡器,以便MCU的掉电操作对振荡器不构成影响。

    对于非MCS51的其它MCU系列,其掉电唤醒的复位操作和时序大致与上述相同,只是具体时间参数上可能有所差异。以MICROChip的 PIC12F508为例[5],其片内主管复位延时的定时器DRT的延时值分为两类,一类是上电复位时的延时值为18ms,另一类是采用片内RC振荡器或片外时钟输入时用作复位唤醒的延时值为10us。稍显不足的是,该文档还声称当采用片外晶振时其DRT的延时值仍为18ms,这显然与本文所测数据相差甚远。 

    2.结束语

    能否以硬件复位对MCU实行快速唤醒是妨碍采用掉电方式进行MCU节电设计的一道门槛,其关键在于MCU掉电时的复位唤醒时间是否可知、是否够快。本文工作就这两点给出了答案。结论是明确的:采用片内振荡器时,掉电状态下的复位唤醒时间小于片内振荡器从起振到稳定的时间(且远小于上电复位时间),采用陶瓷谐振器时,该时间可快至10微秒左右,若想进一步加快则可采用片外时钟方案。

    参考文献
[1] MCS 51 MICROCONTROLLER FAMILY USER’S MANUAL。 www6.informatik.tu-muenchen.de/lehre/vorlesungen/script_ez_2000 /intel-mcs51.pdf。1994,2。P.3-26~P.3-29
[2] Oscillators for Microcontrollers。www.intel.com/design/mcs51/applnots/23065901.pdf。1983,6。P. 3~P.7
[3] 孙涵芳、徐爱卿。MCS-51/96系列单片机原理及应用[M]。北京:北京航空航天大学出版社。1988,2。P.77
[4] 何立民。单片机高级教程:应用与设计[M]。北京:北京航空航天大学出版社。2000,8。P.109


推荐阅读

史海拾趣

Denyo Europa Gmbh公司的发展小趣事

Denyo Europa Gmbh公司始终认为企业是社会的一部分,应该承担起相应的社会责任。公司积极参与各种公益活动,为当地社区的发展贡献力量;同时,公司还关注弱势群体的需求,为他们提供力所能及的帮助。这种对社会责任的担当精神,使公司在社会中树立了良好的企业形象。

EXXELIA Group公司的发展小趣事

Denyo Europa Gmbh公司一直将产品质量视为企业的生命线。公司建立了严格的质量管理体系,从原材料采购到生产流程,再到产品检测,每一个环节都严格把关。公司还定期对员工进行质量意识培训,确保每一个员工都能深刻理解质量对于企业发展的重要性。这种对质量的执着追求,使公司的产品在市场上赢得了良好的口碑。

Gespac Inc公司的发展小趣事

随着技术的成熟,Denyo Europa Gmbh公司开始将目光投向国际市场。公司利用自身的技术优势,结合对目标市场的深入调研,制定了一系列市场拓展策略。通过与当地合作伙伴的紧密合作,公司成功将产品打入多个国家和地区,实现了业务的全球化布局。这一过程中,公司不仅积累了宝贵的国际市场经验,也为公司的持续发展奠定了坚实基础。

Chiefdom Electronic Co Ltd公司的发展小趣事

在电子行业的激烈竞争中,Chiefdom Electronic Co Ltd凭借一项革命性的芯片技术,成功打破了市场的僵局。公司投入巨资研发,历经数年努力,终于推出了具有高效能、低功耗特点的芯片产品。这一技术的推出,不仅为公司在智能手机、平板电脑等市场赢得了大量客户,还使得公司在全球芯片市场占据了重要地位。随着技术的不断优化和升级,Chiefdom Electronic Co Ltd逐渐成为了行业内的技术领军者。

Coil-Q Corporation公司的发展小趣事

随着全球环保意识的提高,Coil-Q积极响应绿色发展的号召,将环保理念融入公司的生产和经营中。公司投入大量资金研发环保材料和技术,优化生产工艺,降低能耗和排放。同时,Coil-Q还积极参与环保公益活动,推动行业的绿色转型。

BK Precision公司的发展小趣事

为了满足全球市场的需求,BK Precision开始实施全球化战略。公司不仅在美国本土设立了多个办事处和研发中心,还在欧洲和亚洲等地建立了分支机构。通过与国际授权分销商的合作,BK Precision成功地将产品推向全球市场,并赢得了众多国际客户的信赖。同时,公司还积极参与国际电子行业的展会和交流活动,提升品牌知名度和影响力。

问答坊 | AI 解惑

2009国赛比赛实施过程及比赛守则(官网上下的)

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑  …

查看全部问答>

大家使用lpc2132注意的一点

关于__irq 的使用 __irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如: ADS编译器中 : void __irq IRQ_Eint0(void); Keil编译器中 : void IRQ_Eint0(void) __irq; 但是其意义一 ...…

查看全部问答>

再次迷茫了

前些时间一直在搞linux,但是linux这玩意儿真的很烦人啊,所以又去搞win ce,在学api,感觉win ce 入门确实比linux简单很多,但是最近又发现在win ce上做应用的基本上都是 .net,偶尔有mfc的,c语言无用武之地啊。这样就觉得现在学的一点用都没有, ...…

查看全部问答>

请教这个IC是个什么东西

请教一下我手头有个电路板上有个IC,5脚封装,上面两脚下面三脚,特小的封装,上面的字符貌似是CO-60Y又或者是CO-GOY,字太小看不清楚,搜索这两个都找不到相关资料。通过测量得知它的功能大概是这样:电源从3脚输入1脚输出,1脚跟5脚是通路,4脚输 ...…

查看全部问答>

寻大虾合作开发机顶盒

http://topic.eeworld.net/u/20071201/18/a2aaf09f-7fa2-419c-93c1-77b51f9713d8.html?seed=1107526537…

查看全部问答>

iar环境下,uCosII在stm32下的运行机理是怎样的?

编译器的iar EWARM,uCosII 通过初始化下面的向量表,在程序复位时将程序定位到__program_start(void)函数,但该函数是个空函数呀,程序到底是怎么进行到正常状态的呢?请大虾们指点。另外,向量表__vector_table[] 的第一行{ ...…

查看全部问答>

STM32之TFT遇到麻烦了,求高手指教

经由Image2lcd处理后的图片最大只能到119288,显示出来的图片还不到1/3屏,正常是153600。如何处理才能使之显示满屏?…

查看全部问答>

在公司看个书怎么就违法了!!!(吐槽完了,封贴吧)

活不多的时候闲着看个书怎么就不对了? 而且我看的还是《编程匠艺》《uCos 操作系统》…… 怎么这就惹领导不高兴了?虽然工作上分配给我的是硬件,但看个代码就不对了? 就叫软件不软硬件不硬了??? 什么制度,做事就是给领导看,什么领导看到你 ...…

查看全部问答>

EEWORLD大学堂----WEBENCH FPGA Architect功能导览

WEBENCH FPGA Architect功能导览:https://training.eeworld.com.cn/course/165…

查看全部问答>