平常咱們?cè)谧霎a(chǎn)品的時(shí)分,根本的功用完成很簡(jiǎn)單,但只需涉及到關(guān)于低功耗的問(wèn)題就比較扎手了,比方某些可以低到微安級(jí)的MCU微操控器,而自己規(guī)劃的低功耗怎樣測(cè)都是毫安級(jí)的,電流居然可以高出規(guī)范幾百到上千倍,遇到這種狀況干萬(wàn)不要怕,只需仔細(xì)你就贏了。接著仔細(xì)分析一下這其間的原因。
(1)掐斷外設(shè)命脈,封閉外設(shè)時(shí)鐘。
先說(shuō)最直觀的,也是工程師都比較留意的方面,便是封閉超低功耗MCU微操控器的外設(shè)時(shí)鐘,關(guān)于現(xiàn)在市面上呈現(xiàn)的大多數(shù)的MCU微操控器,其外設(shè)模塊都對(duì)應(yīng)著一個(gè)時(shí)鐘開關(guān)。只需求翻開這個(gè)外設(shè)的時(shí)鐘,就可以正常的運(yùn)用這個(gè)外設(shè)了,當(dāng)然此外設(shè)也就會(huì)發(fā)生相應(yīng)的功耗;假設(shè)想要讓這個(gè)外設(shè)不發(fā)生功耗的話,只需求封閉它的時(shí)鐘就可以了。
( 2)讓作業(yè)節(jié)奏慢下來(lái),時(shí)鐘不要倍頻。除了外設(shè)模塊功率耗費(fèi)之外,還有一個(gè)功耗大戶需求留意一下,這便是PLL和 FLL模塊。PLL和FLL主要是用來(lái)對(duì)原始的時(shí)鐘信號(hào)進(jìn)行倍頻操作,然后進(jìn)步體系的全體時(shí)鐘,其功耗也會(huì)被提上去。所以在進(jìn)入低功耗之前,需求切換時(shí)種形式,旁路掉PLL和 FLL模塊,然后盡可能的下降MCU的功耗,比及MCU喚醒之后再把時(shí)鐘切換回去。
( 3)圍堵涓涓細(xì)流,留意IO口的電平狀況。假設(shè)以為只需封閉外設(shè)時(shí)鐘就可以確保外設(shè)不再耗電,那么你就太單純了。假設(shè) IO口沒(méi)有做好處理的話,它就會(huì)在暗地里偷走功耗,而你卻渾然不知。詳細(xì)原因是這樣的,一般的IO的內(nèi)部或許外部都會(huì)有上下拉電阻,假設(shè)某個(gè)IO口有個(gè)10K 的上拉電阻,把引腳拉到3.3 V,但是當(dāng)MCU進(jìn)入低功耗形式的時(shí)分,此IO口被設(shè)置成輸出低電平,依據(jù)歐姆定律,此引腳就會(huì)耗費(fèi)3.3 V/10 K = 0.33 mA的電流,假設(shè)有四、五個(gè)這樣的IO口,那么幾個(gè)mA就貼進(jìn)去了。所以在進(jìn)入低功耗之前,請(qǐng)逐一查看IO口的狀況。
假設(shè)此IO口帶下拉,請(qǐng)?jiān)O(shè)置為低電平輸出或許高阻態(tài)輸入。不要把上好的電流糟蹋在發(fā)生熱量的功用上。
(4)睦鄰友好的協(xié)作,要留意1O 與外設(shè)IC的統(tǒng)籌。
IO口的上下拉電阻耗費(fèi)電流這一要素相對(duì)比較顯著,下邊咱來(lái)說(shuō)一個(gè)不顯著的要素:IO口與外部IC相連時(shí)的電流耗費(fèi)。假設(shè)某個(gè)IO口自帶上拉,而此與IO相連的IC引腳偏偏是自帶下拉的,那么不管這個(gè)引腳處于什么樣的電平輸出,都不可避免的發(fā)生必定的電流耗費(fèi)。所以但凡遇見這-類的狀況,首要需求閱覽外設(shè)IC的手冊(cè),確定好此引腳的的狀況,做到心中有數(shù);然后在操控單片機(jī)MCU睡覺(jué)之前,設(shè)置好MCU的IO口的上下拉形式及輸入輸出狀況,要確保一絲兒電流都不要被它耗費(fèi)掉。
( 5)斷開調(diào)試器銜接,不要被假象所利誘。還有一類比較獨(dú)特,檢測(cè)出來(lái)的電流耗費(fèi)很大,可實(shí)踐結(jié)果是自己杞人憂天,原因是因?yàn)樵跍y(cè)驗(yàn)功耗的時(shí)分MCU還銜接著調(diào)試器。這時(shí)分大部分電流就會(huì)被調(diào)試器給擄走,無(wú)緣無(wú)故的讓工程師發(fā)生極度抑郁的心境。所以在測(cè)低功耗的時(shí)分,必定不要銜接調(diào)試器,更不能邊調(diào)試邊測(cè)電流。
MCU的低功耗規(guī)劃是一個(gè)詳盡活,要養(yǎng)成杰出的習(xí)氣,做到每增加一個(gè)功用都要從頭驗(yàn)證一下低功耗MCU是否符合要求,這樣就可以隨時(shí)隨地削減損耗功率的要素。假設(shè)把一切功用都規(guī)劃好了才去考慮低功耗的問(wèn)題,一個(gè)不小心就可能要更改程序的架構(gòu),即便如此也不必定能把功耗給完全降下去。