節(jié)電設(shè)計(jì)中掉電狀態(tài)MCU的復(fù)位喚醒速度
0 前言
本文引用地址:http://cafeforensic.com/article/171825.htm在MCU的節(jié)電措施中,除了降低工作頻率與工作電壓以外,剩下的就是如何選擇MCU的節(jié)電模式了。由于節(jié)電的機(jī)理是設(shè)法停掉片內(nèi)一部分電路的工作,因此節(jié)電效果最好的是片內(nèi)電路全停的掉電方式。以MCS51系列的AT89C2051為例,其休閑方式(CPU凍結(jié),但振蕩器、中斷、定時(shí)器與串行口等仍繼續(xù)運(yùn)行)的耗電約為850uA,而掉電方式(片內(nèi)所有電路均停止工作,僅保持I/O端口引腳狀態(tài)和片內(nèi)RAM內(nèi)容不變)的耗電僅為1uA不到。顯然,對(duì)于那些正常運(yùn)行中存在等待狀態(tài)的MCU應(yīng)用項(xiàng)目來(lái)說(shuō),應(yīng)當(dāng)盡可能地選擇這種掉電方式來(lái)作節(jié)電設(shè)計(jì)。但由于掉電狀態(tài)下MCU片內(nèi)的時(shí)鐘和中斷系統(tǒng)均不工作,所以無(wú)法以片外中斷方式喚醒片內(nèi)的CPU,而只能以復(fù)位方式予以喚醒。然而實(shí)際應(yīng)用需求往往對(duì)MCU的喚醒速度有所要求,而在一般概念中MCU的復(fù)位速度是很慢的(如上電復(fù)位),且相關(guān)的數(shù)據(jù)手冊(cè)和應(yīng)用資料均未對(duì)此給出明確清晰的說(shuō)明,因此MCU掉電時(shí)的復(fù)位喚醒速度便成了能否采用這種節(jié)電方式的關(guān)鍵所在。為此,有必要從理論和實(shí)踐兩方面進(jìn)行探討并尋求相關(guān)答案。
1 MCU的復(fù)位方式及其特點(diǎn)
一般說(shuō)來(lái),MCU的復(fù)位操作通常可分為上電復(fù)位、手動(dòng)復(fù)位、看門(mén)狗復(fù)位、失電復(fù)位、以及節(jié)電方式下的掉電復(fù)位。根據(jù)這些復(fù)位操作發(fā)生時(shí)的系統(tǒng)狀態(tài)又可將它們歸為三類:上電復(fù)位、運(yùn)行復(fù)位、掉電復(fù)位。下面分別對(duì)這三類復(fù)位操作及其特點(diǎn)進(jìn)行具體分析。
1.1 上電復(fù)位
上電復(fù)位幾乎是所有MCU應(yīng)用系統(tǒng)都在使用的啟動(dòng)方式,它是指系統(tǒng)加電開(kāi)始運(yùn)行時(shí)的自動(dòng)復(fù)位,一般是在電源上升穩(wěn)定后利用模擬或數(shù)字的延時(shí)環(huán)節(jié)給MCU提供一定時(shí)間進(jìn)行片內(nèi)復(fù)位操作。常見(jiàn)的復(fù)位電路有片外RC延時(shí)電路[1]和片內(nèi)復(fù)位定時(shí)器等[5]。
對(duì)于該上電復(fù)位操作所需的時(shí)間,一般的MCU數(shù)據(jù)手冊(cè)都給出了相應(yīng)的說(shuō)明。以Intel公司的MCS51 PDF文檔為例[1] :①振蕩器起振到穩(wěn)定的時(shí)間大約為1ms~10ms,(即10MHz的晶振為1ms,1MHZ的晶振為10ms);②為確保可靠復(fù)位,RST引腳上的高電平必須保持到振蕩器起振再加兩個(gè)機(jī)器周期;③上電時(shí)VCC必須在10ms左右的時(shí)間內(nèi)完成其上升。
以上三點(diǎn)說(shuō)明給人的印象是上電復(fù)位所需的時(shí)間是很長(zhǎng)的,而且很容易造成這樣的錯(cuò)覺(jué):上電復(fù)位所需時(shí)間=電源上升時(shí)間+振蕩器起振時(shí)間+片內(nèi)初態(tài)建立時(shí)間。這也影響了某些文獻(xiàn)關(guān)于上電復(fù)位時(shí)間的相關(guān)論述[3][4]。也正因?yàn)槿绱耍趯?shí)際設(shè)計(jì)中為了確??煽繌?fù)位,設(shè)計(jì)者通常都把片外復(fù)位電路的RC數(shù)值取得較大(文獻(xiàn)[1]的推薦值是8.2K與10uF)。
然而事實(shí)并非如此。圖一給出了AT89C51的一個(gè)測(cè)試實(shí)例:當(dāng)電源電壓上升到2V左右時(shí)振蕩器開(kāi)始起振(此時(shí)距電源上升起點(diǎn)約1ms),爾后其振蕩幅度基本上跟隨電源電壓逐步攀升,直至2.3ms時(shí)兩者均達(dá)最大(VCC=5V,Vx2≈5Vpp);與此同時(shí),復(fù)位時(shí)片內(nèi)初態(tài)的設(shè)置操作將I/O引腳(圖一中P1.4)電平抬高發(fā)生在VCC上升到50%時(shí),此后若將RST引腳的高電平拉低,MCU將立即開(kāi)始執(zhí)行程序,而不必等到振蕩器振幅達(dá)到最大。(以上兩個(gè)時(shí)間參數(shù)系指振蕩器的片外定時(shí)元件為4MHz陶瓷諧振器)。
圖一AT89C51上電復(fù)位時(shí)的起振時(shí)序
由此可以得出這樣的結(jié)論:上電時(shí)的復(fù)位操作(初態(tài)設(shè)置+振蕩器起振)在電源電壓上升到其50%時(shí)便可完成,而不是在片內(nèi)振蕩器振幅穩(wěn)定的兩個(gè)機(jī)器周期之后(即片內(nèi)初態(tài)的建立并不依賴于片內(nèi)振蕩器的狀態(tài))。此后RST引腳的電平是否變低決定了MCU何時(shí)開(kāi)始取指執(zhí)行。但為避免在電源電壓不足時(shí)倉(cāng)促執(zhí)行程序可能對(duì)片外帶來(lái)的意外結(jié)果,復(fù)位信號(hào)還是應(yīng)當(dāng)持續(xù)到電源電壓上升結(jié)束時(shí)方可撤除。從這一點(diǎn)出發(fā)可以認(rèn)為,上電復(fù)位所需時(shí)間完全取決于電源電壓的上升時(shí)間。由于此處電源電壓上升的實(shí)測(cè)時(shí)間為2.3ms,因而可以確定文獻(xiàn)[1]的推薦值選得過(guò)大(8.2k×10uF=82ms),會(huì)使上電開(kāi)機(jī)時(shí)間拖得太長(zhǎng)。
1.2 運(yùn)行復(fù)位
運(yùn)行復(fù)位是指系統(tǒng)異常時(shí)的手動(dòng)復(fù)位、程序跑飛時(shí)的看門(mén)狗復(fù)位、電源電壓下降時(shí)的失電復(fù)位等。它們的共同點(diǎn)是片內(nèi)振蕩器及其它電路都在正常運(yùn)行,CPU正在執(zhí)行程序。
由文獻(xiàn)[1]中相關(guān)的運(yùn)行復(fù)位時(shí)序圖可知,此時(shí)提供給MCU的RST引腳上的復(fù)位信號(hào)必須不小于兩個(gè)機(jī)器周期。這是因?yàn)镸CU每個(gè)機(jī)器周期只對(duì)片外的 RST引腳采樣一次。為了避免RST引腳上的干擾信號(hào)導(dǎo)致復(fù)位的誤動(dòng)作,必須連續(xù)采樣到兩次有效的片外RST復(fù)位信號(hào),MCU才會(huì)啟動(dòng)片內(nèi)的復(fù)位流程,使片內(nèi)的RESET信號(hào)有效(直到此時(shí)片外的RST信號(hào)方可撤去),并以此片內(nèi)RESET信號(hào)去設(shè)置片內(nèi)各部件的初始狀態(tài)以及控制隨后的取指執(zhí)行。考慮到送達(dá)片外RST引腳上的復(fù)位信號(hào)有可能正好發(fā)生在一次片內(nèi)采樣之后,所以為實(shí)現(xiàn)運(yùn)行時(shí)的可靠復(fù)位RST引腳上的復(fù)位信號(hào)至少得維持2個(gè)機(jī)器周期。
1.3 掉電復(fù)位
掉電復(fù)位是指MCU處于節(jié)電的掉電狀態(tài)下以復(fù)位方式將其喚醒重新執(zhí)行指令的操作。掉電后MCU片內(nèi)的所有電路均已停止工作,但其片內(nèi)RAM內(nèi)容和各端口引腳的狀態(tài)保持不變,而且MCU的供電電壓也大都保持不變(也有少數(shù)應(yīng)用中將掉電狀態(tài)下的MCU供電電壓降為2V以求最大限度的節(jié)電)。這種情況下的復(fù)位操作與上電復(fù)位所實(shí)現(xiàn)的目標(biāo)是相同的:振蕩器起振并穩(wěn)定、片內(nèi)相關(guān)部件建立初態(tài)。但與上電復(fù)位不同的是:MCU的工作電壓仍然存在。
分頻器相關(guān)文章:分頻器原理
評(píng)論