節電設計中掉電狀態(tài)MCU的復位喚醒速度
從上電復位的討論中可以得知,其可靠復位所需時(shí)間主要取決于電源電壓的上升時(shí)間;那么對于此處掉電復位來(lái)說(shuō),當已沒(méi)有了電源電壓上升的問(wèn)題時(shí)(對于那種掉電后電源電壓下降到2V者,則應先將電源電壓上升到正常值后方可對RST引腳施加復位信號),復位所需時(shí)間又取決于什么?對于這一點(diǎn),相關(guān)的數據手冊并未給出確切說(shuō)明,只說(shuō)“復位信號激活了振蕩器,復位信號必須保持有效到使振蕩器起振并達穩定(一般少于10ms)” [1],這似乎是說(shuō)該MCU的掉電復位喚醒時(shí)間約為數毫秒。然而,該數據手冊提供的相關(guān)內部電路框圖[1]以及筆者所作的實(shí)際測試均表明,情況并非完全如此。
從文獻[1]中與掉電方式有關(guān)的內部電路框圖可見(jiàn),片內振蕩器的起振和向后傳輸均受控于掉電控制位PD,因此掉電復位時(shí)必定是先進(jìn)行片內初始狀態(tài)的設置(其中包含PD位清零),然后才能使片內振蕩器起振并后傳。同時(shí),也正由于片內振蕩器的起振是由片內初態(tài)進(jìn)行控制的,所以片內初態(tài)一旦可靠建立,片外復位信號就沒(méi)有必要一直保留到使片內振蕩器振幅趨于穩定。以下測試證實(shí)了這一點(diǎn)。
圖二給出了AT89C51在掉電復位喚醒時(shí)的實(shí)際測試結果,此時(shí)其片內振蕩器的片外定時(shí)元件為4MHz的陶瓷諧振器。
圖二 AT89C51在掉電狀態(tài)下復位時(shí)的起振時(shí)序
由圖二可見(jiàn),當復位信號前沿到來(lái)時(shí),片內振蕩器立即在1/2VCC(2.5V)左右處開(kāi)始起振。在起始的3us時(shí)段內其振幅很小,4us~9us期間其振幅迅速增加,到10us~15us內則漸趨穩定。由此可得以下幾點(diǎn)結論:首先,片內振蕩器的起振速度大大快于數據手冊[1]中所說(shuō)的“一般少于10ms”。其次,當復位信號到來(lái)時(shí),片內振蕩器并未象上電復位那樣等了一段時(shí)間以后再起振,而是立即起振。這是由于在掉電復位喚醒前,電源電壓依然存在,使得片內振蕩器的某些靜態(tài)工作點(diǎn)仍然維持著(zhù),所以一旦復位操作清除了掉電控制位PD,振蕩器便立即在工作點(diǎn)處(1/2VCC=2.5V)開(kāi)始起振,顯然比上電復位時(shí)省掉了一段逐步建立工作點(diǎn)所需的啟動(dòng)時(shí)間。
為了確切了解AT89C51的可靠復位喚醒要求片外所加的復位信號至少應保持多少寬度,筆者以另一MCU發(fā)出的窄脈沖作為被測MCU的復位信號,并不斷改變其寬度,再以觀(guān)察被測MCU的一個(gè)I/O引腳電平的變化來(lái)判斷是否可靠地完成了復位喚醒操作,即在MCU進(jìn)入掉電狀態(tài)之前先將該引腳用指令置為低電平,隨后掉電復位喚醒發(fā)生時(shí)的片內初態(tài)設置操作又會(huì )把該引腳強制置為高電平,最后,由掉電復位喚醒結束后的第一條指令再將其立即拉為低電平。測試結果顯示,當外加的復位信號寬度為1us~6us時(shí),被測MCU有時(shí)不能可靠復位,具體表現為該I/O引腳被復位的初態(tài)設置操作強制拉高后又可能隨著(zhù)復位信號的撤除而立即下降。而當外加的復位信號寬度大于8us后,被測MCU就能可靠復位喚醒并在外加復位信號撤除后能順利開(kāi)始執行程序。這個(gè)結果表明:①復位時(shí)MCU的端口引腳跟隨復位信號的高電平前沿立即變高,滯后小于1us;②復位喚醒時(shí)MCU的片內初態(tài)的設置領(lǐng)先于片內振蕩器的起振。③復位喚醒時(shí)外加的復位信號寬度最小只需幾個(gè)us即可,不必等到振蕩器振幅達到最大就可使MCU開(kāi)始執行指令(上述8us處的振蕩幅度大約為160mVpp),這可能是因為在片內振蕩器后面有一級分頻器,將振蕩器在1/2VCC處的小幅度振蕩整形為滿(mǎn)幅度時(shí)鐘信號了。
由此可知,掉電狀態(tài)下MCU的復位喚醒雖與片內振蕩器有關(guān),但其喚醒時(shí)間并不等同于片內振蕩器從起振到穩定的時(shí)間。若想獲得最快的復位喚醒速度,還可考慮使用片外振蕩器,以便MCU的掉電操作對振蕩器不構成影響。
對于非MCS51的其它MCU系列,其掉電喚醒的復位操作和時(shí)序大致與上述相同,只是具體時(shí)間參數上可能有所差異。以MICROCHIP的 PIC12F508為例[5],其片內主管復位延時(shí)的定時(shí)器DRT的延時(shí)值分為兩類(lèi),一類(lèi)是上電復位時(shí)的延時(shí)值為18ms,另一類(lèi)是采用片內RC振蕩器或片外時(shí)鐘輸入時(shí)用作復位喚醒的延時(shí)值為10us。稍顯不足的是,該文檔還聲稱(chēng)當采用片外晶振時(shí)其DRT的延時(shí)值仍為18ms,這顯然與本文所測數據相差甚遠。
2.結束語(yǔ)
能否以硬件復位對MCU實(shí)行快速喚醒是妨礙采用掉電方式進(jìn)行MCU節電設計的一道門(mén)檻,其關(guān)鍵在于MCU掉電時(shí)的復位喚醒時(shí)間是否可知、是否夠快。本文工作就這兩點(diǎn)給出了答案。結論是明確的:采用片內振蕩器時(shí),掉電狀態(tài)下的復位喚醒時(shí)間小于片內振蕩器從起振到穩定的時(shí)間(且遠小于上電復位時(shí)間),采用陶瓷諧振器時(shí),該時(shí)間可快至10微秒左右,若想進(jìn)一步加快則可采用片外時(shí)鐘方案。
參考文獻
[1] MCS 51 MICROCONTROLLER FAMILY USER’S MANUAL?!ww6.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] 孫涵芳、徐愛(ài)卿。MCS-51/96系列單片機原理及應用[M]。北京:北京航空航天大學(xué)出版社。1988,2。P.77
[4] 何立民。單片機高級教程:應用與設計[M]。北京:北京航空航天大學(xué)出版社。2000,8。P.109
評論