全面解析超低功耗mcu的選型技巧與設(shè)計(jì)思路
掃描二維碼
隨時(shí)隨地手機(jī)看文章
循序漸進(jìn)式的功耗優(yōu)化已經(jīng)不再是超低功耗mcu的游戲規(guī)則,而是“突飛猛進(jìn)”模式,與功耗相關(guān)的很多指標(biāo)都不斷刷新記錄。我們?cè)谶x擇合適的超低功耗mcu時(shí)要掌握必要的技巧,在應(yīng)用時(shí)還需要一些設(shè)計(jì)方向與思路才能夠更好的應(yīng)用。
一:超低功耗mcu-低功耗mcu的選擇方法
嵌入式微控制器 (mcu)的功耗在當(dāng)今電池供電應(yīng)用中正變得越來(lái)越舉足輕重。大多mcu 芯片廠(chǎng)商都提供低功耗低功耗產(chǎn)品,但是選擇一款最適合您自己應(yīng)用的產(chǎn)品并非易事,并不像對(duì)比數(shù)據(jù)表前面的數(shù)據(jù)那么簡(jiǎn)單。我們必須詳細(xì)對(duì)比 mcu 功能,以便找到功耗最低的產(chǎn)品,這些功能包括:斷電模式 定時(shí)系統(tǒng) 事件驅(qū)動(dòng)功能 片上外設(shè) 掉電檢測(cè)與保護(hù) 漏電流 處理效率。
----在低功耗設(shè)計(jì)中,平均電流消耗往往決定電池壽命。例如,如果某個(gè)應(yīng)用采用額定電流為 400mAh 的 Eveready 高電量 9V 1222 型電池的話(huà),要提供一年的電池壽命其平均電流消耗必須低于 400mAh/8760h,即45.7uA。
----在使 mcu 能夠達(dá)到電流預(yù)算的所有功能中,斷電模式最重要。低功耗 mcu 具有可提供不同級(jí)別功能的斷電模式。例如,TI 超低功耗 mcu MSP430 系列產(chǎn)品可以提供 5 種斷電模式。低功耗模式 0 (LPM0) 會(huì)關(guān)閉 CPU,但是保持其他功能正常運(yùn)轉(zhuǎn)。LPM1 與 LPM2 模式在禁用功能列表中增加了各種時(shí)鐘功能。LPM3 是最常用的低功耗模式,只保持低頻率時(shí)鐘振蕩器以及采用該時(shí)鐘的外設(shè)運(yùn)行。LPM3 通常稱(chēng)為實(shí)時(shí)時(shí)鐘模式,因?yàn)樗试S定時(shí)器采用低功耗 32768Hz 時(shí)鐘源運(yùn)行,電流消耗低于 1uA,同時(shí)還可定期激活系統(tǒng)。最后,LPM4 完全關(guān)閉器件上的包括 RAM 存儲(chǔ)在內(nèi)的所有功能,電流消耗僅 100 毫微安。
----時(shí)鐘系統(tǒng)是mcu功耗的關(guān)鍵。應(yīng)用可以每秒多次或幾百次進(jìn)入與退出各種低功耗模式。進(jìn)入或退出低功耗模式以及快速處理數(shù)據(jù)的功能極為重要,因?yàn)? CPU會(huì)在等待時(shí)鐘穩(wěn)定下來(lái)期間浪費(fèi)電流。大多低功耗 mcu 都具有“即時(shí)啟動(dòng)”時(shí)鐘,其可以在不到 10~20us 時(shí)間內(nèi)為 CPU 準(zhǔn)備就緒。但是,重要的是要明白哪些時(shí)鐘是即時(shí)啟動(dòng)、哪些非即時(shí)啟動(dòng)的。某些 mcu 具有雙級(jí)時(shí)鐘激活功能,該功能在高頻時(shí)鐘穩(wěn)定化過(guò)程中提供一個(gè)低頻時(shí)鐘(通常為32768Hz),其可以達(dá)到 1 毫秒。CPU 在大約 15us 時(shí)間內(nèi)正常運(yùn)行,但是運(yùn)行頻率較低,效率也較低。如果 CPU 只需要執(zhí)行數(shù)量較少的指令的話(huà),如:25 條,其需要 763us。CPU 低頻比高頻時(shí)消耗更少的電流,但是并不足于彌補(bǔ)處理時(shí)間的差異。相比而言,某些 mcu 在 6 微秒時(shí)間內(nèi)就可以為 CPU 提供高速時(shí)鐘,處理相同的 25 條指令僅需要大約 9us(6us 激活+25 條指令′0.125us指令速率),而且可以實(shí)現(xiàn)即時(shí)啟動(dòng)的高速串行通信。
----另外,如果 mcu 時(shí)鐘系統(tǒng)為外設(shè)提供多個(gè)時(shí)鐘源的話(huà),當(dāng) CPU 處于睡眠狀態(tài)時(shí)外設(shè)仍然可以運(yùn)行。例如,一次 A/D 轉(zhuǎn)換可能需要一個(gè)高速時(shí)鐘。如果 mcu 時(shí)鐘系統(tǒng)提供獨(dú)立于 CPU 的高速時(shí)鐘,CPU 就可以在 A/D 轉(zhuǎn)換器運(yùn)行情況下進(jìn)入睡眠狀態(tài),從而節(jié)省 CPU 耗流量。
----事件驅(qū)動(dòng)功能與時(shí)鐘系統(tǒng)的靈活性并存。中斷會(huì)使 mcu 退出低功耗模式,因此,mcu 的中斷越多,其防止浪費(fèi)電流的 CPU 輪詢(xún)與降低功耗的靈活性就越大。輪詢(xún)意味著進(jìn)行與不進(jìn)行功耗預(yù)算之間存在差異,因?yàn)樗诘却霈F(xiàn)事件時(shí)會(huì)浪費(fèi)CPU 帶寬并需要額外電流。一個(gè)好的低功耗 mcu 應(yīng)具有充分的中斷功能,為其所有外設(shè)提供中斷,同時(shí)為外部事件提供眾多外部中斷。
----按鈕或鍵盤(pán)應(yīng)用可以證明外部中斷的優(yōu)勢(shì)。如果不具備中斷功能,mcu 必須頻繁輪詢(xún)鍵盤(pán)或按鈕,以確定其是否被按下。不僅輪詢(xún)自身會(huì)消耗功率,而且控制輪詢(xún)間隔也需要定時(shí)器,其會(huì)消耗附加電流。相比而言,在具備中斷情況下,CPU 可以在整個(gè)過(guò)程中保持睡眠狀態(tài),只有按下按鈕時(shí)才激活。
----在選擇低功率 mcu 時(shí),還需要考慮外設(shè)功耗與電源管理。某些低功率 mcu 僅僅是設(shè)計(jì)時(shí)不具備低利率功能的舊架構(gòu)的改進(jìn)版本。而有些 mcu 在設(shè)計(jì)時(shí)即具備低功耗特性,并在其外設(shè)中內(nèi)置了低功耗功能。一種特性是在需要時(shí)單獨(dú)啟動(dòng)或關(guān)閉外設(shè)的能力,換言之,更重要的是自動(dòng)啟動(dòng)或關(guān)閉外設(shè)的能力。 A/D 轉(zhuǎn)換器就是一個(gè)例子,其在完成一次轉(zhuǎn)換后可以自動(dòng)關(guān)閉。另外,某些 mcu 正在引入直接存儲(chǔ)器存取功能,其可以在無(wú)需 CPU 干預(yù)情況下自動(dòng)處理數(shù)據(jù)。
----大多 mcu 具有集成的掉電保護(hù)功能,當(dāng)電源低于正常操作范圍時(shí)其可以復(fù)位 mcu。通常會(huì)提供啟動(dòng)或關(guān)閉掉電保護(hù)以節(jié)省功耗的功能,但是必須在整個(gè)過(guò)程中都使掉電保護(hù)功能置于可用狀態(tài),因?yàn)榈綦娛遣豢深A(yù)測(cè)的。某些 mcu 需要70uA 的電流來(lái)實(shí)現(xiàn)掉電保護(hù)。在只需要 45uA 平均電流的應(yīng)用實(shí)例中很明顯可以不考慮這些 mcu。 ----在選擇低功耗 mcu 期間有時(shí)會(huì)忽視漏電流,但是,在最苛刻的低功耗應(yīng)用中則必須考慮到漏電流。大多改進(jìn)后的低功耗 mcu 都具有 1uA 的限定輸入漏電流。在 20 輸入器件中,它可能會(huì)消耗 20uA!針對(duì)低功耗設(shè)計(jì)的最新 mcu 具有最高50nA 的漏電流。
----最后,我們常常會(huì)誤解 mcu 處理效率。大家通常會(huì)認(rèn)為 16 位 mcu 需要兩倍于 8 位 mcu 的內(nèi)存,但是一個(gè) 16 位架構(gòu)實(shí)際上需要比 8 位架構(gòu)要少一些的代碼,而 16 位 mcu 一般會(huì)更快速地執(zhí)行任務(wù)。例如,8 位 mcu 需要 CPU 開(kāi)銷(xiāo)來(lái)管理具有 10 位 A/D 轉(zhuǎn)換數(shù)據(jù)或需要 16 位計(jì)算的應(yīng)用中的數(shù)據(jù)。而且當(dāng)今許多mcu 產(chǎn)品都具有單個(gè)工作文件或累加器,其數(shù)據(jù)必須進(jìn)行傳輸,以便處理,因此,與基于寄存器的架構(gòu)相比需要額外的 CPU 開(kāi)銷(xiāo)。表 1 說(shuō)明在 16 位現(xiàn)代架構(gòu)與8 位 8051 架構(gòu)上傳輸 10 位 A/D 數(shù)據(jù)的指令。在采用 1Mhz 時(shí)鐘情況下,16 位器件需要 6us 進(jìn)行傳輸,而 8 位器件則需要 24us。
16 位 mcu8 位 mcumov.w &ADC10MEM,&RAMmovf ADRESH,W movwf RAML bsf 0x20 movlf ADCHRESL,W bcf 0x20 movwf RAMH ----表 1:16 位與 8 位 mcu 代碼要求
----選擇低功率 mcu 是一項(xiàng)耗時(shí)、棘手的工作。如果花費(fèi)一些時(shí)間來(lái)了解可用產(chǎn)品選項(xiàng)的架構(gòu)特性,我們就能夠開(kāi)發(fā)出能滿(mǎn)足最苛刻功率預(yù)算的設(shè)計(jì)。
二:超低功耗mcu-如何降低mcu的功耗
低功耗是mcu的一項(xiàng)非常重要的指標(biāo),比如某些可穿戴的設(shè)備,其攜帶的電量有限,如果整個(gè)電路消耗的電量特別大的話(huà),就會(huì)經(jīng)常出現(xiàn)電量不足的情況,影響用戶(hù)體驗(yàn)。[!--empirenews.page--]
平時(shí)我們?cè)谧霎a(chǎn)品的時(shí)候,基本的功能實(shí)現(xiàn)很簡(jiǎn)單,但只要涉及低功耗的問(wèn)題就比較棘手了,比如某些可以低到微安級(jí)的mcu,而自己設(shè)計(jì)的低功耗怎么測(cè)都是毫安級(jí)的,電流竟然能夠高出標(biāo)準(zhǔn)幾百到上千倍,遇到這種情況千萬(wàn)不要怕,只要認(rèn)真你就贏了。下邊咱們仔細(xì)分析一下這其中的原因。
第一條:掐斷外設(shè)命脈——關(guān)閉外設(shè)時(shí)鐘
先說(shuō)最直觀的,也是工程師都比較注意的方面,就是關(guān)閉mcu的外設(shè)時(shí)鐘,對(duì)于現(xiàn)在市面上出現(xiàn)的大多數(shù)的mcu,其外設(shè)模塊都對(duì)應(yīng)著一個(gè)時(shí)鐘開(kāi)關(guān)。只需要打開(kāi)這個(gè)外設(shè)的時(shí)鐘,就可以正常的使用這個(gè)外設(shè)了,當(dāng)然,此外設(shè)也就會(huì)產(chǎn)生相應(yīng)的功耗;反之,如果想要讓這個(gè)外設(shè)不產(chǎn)生功耗,只需關(guān)閉它的時(shí)鐘即可。
第二條:讓工作節(jié)奏慢下來(lái)——時(shí)鐘不要倍頻
除了外設(shè)模塊功率消耗之外,還有一個(gè)功耗大戶(hù)需要注意一下,這就是PLL和FLL模塊。PLL和FLL主要是用來(lái)對(duì)原始的時(shí)鐘信號(hào)進(jìn)行倍頻操作,從而提高系統(tǒng)的整體時(shí)鐘,相應(yīng)的,其功耗也會(huì)被提上去。所以在進(jìn)入低功耗之前,需要切換是種模式,旁路掉PLL和FLL模塊,從而盡可能的降低mcu的功耗,等到mcu喚醒之后再把時(shí)鐘切換回去。
第三條:圍堵涓涓細(xì)流——注意I/O口的電平狀態(tài)
如果認(rèn)為只要關(guān)閉外設(shè)時(shí)鐘就能夠保證外設(shè)不再耗電,那么你就太天真了。如果IO口沒(méi)有做好處理的話(huà),它就會(huì)在暗地里偷走功耗,而你卻渾然不知。具體原因是這樣的,一般的IO的內(nèi)部或者外部都會(huì)有上下拉電阻,舉個(gè)例子,如下圖所示,假如某個(gè)IO口有個(gè)10KΩ的上拉電阻,把引腳拉到3.3V,然而當(dāng)mcu進(jìn)入低功耗模式的時(shí)候,此IO口被設(shè)置成輸出低電平,根據(jù)歐姆定律,此引腳就會(huì)消耗3.3V/10K=0.33mA的電流,假如有四、五個(gè)這樣的IO口,那么幾個(gè)mA就貼進(jìn)去了,太可惜了。所以在進(jìn)入低功耗之前,請(qǐng)逐個(gè)檢查IO口的狀態(tài):
如果此IO口帶上拉,請(qǐng)?jiān)O(shè)置為高電平輸出或者高阻態(tài)輸入;
如果此IO口帶下拉,請(qǐng)?jiān)O(shè)置為低電平輸出或者高阻態(tài)輸入;
總之一句話(huà),不要把上好的電流浪費(fèi)在產(chǎn)生熱量的功能上,咱可不靠這點(diǎn)溫度去暖手。
第四條:睦鄰友好合作——注意I/O與外設(shè)IC的統(tǒng)籌
IO口的上下拉電阻消耗電流這一因素相對(duì)比較明顯,下邊咱來(lái)說(shuō)一個(gè)不明顯的因素:IO口與外部IC相連時(shí)的電流消耗。假如某個(gè)IO口自帶上拉,而此與IO相連的IC引腳偏偏是自帶下拉的,那么無(wú)論這個(gè)引腳處于什么樣的電平輸出,都不可避免的產(chǎn)生一定的電流消耗。所以凡是遇見(jiàn)這一類(lèi)的情況,首先需要閱讀外設(shè)IC的手冊(cè),確定好此引腳的的狀態(tài),做到心中有數(shù);然后在控制mcu睡眠之前,設(shè)置好mcu的IO口的上下拉模式及輸入輸出狀態(tài),要保證一絲兒電流都不要被它消耗掉。
第五條:斷開(kāi)調(diào)試器連接,不要被假象所迷惑
還有一類(lèi)比較奇特,檢測(cè)出來(lái)的電流消耗很大,可實(shí)際結(jié)果是自己杞人憂(yōu)天,什么原因呢?是因?yàn)樵跍y(cè)試功耗的時(shí)候mcu還連接著調(diào)試器呢!這時(shí)候大部分電流就會(huì)被調(diào)試器給擄走,平白無(wú)故的讓工程師產(chǎn)生極度郁悶的心情。所以在測(cè)低功耗的時(shí)候,一定不要連接調(diào)試器,更不能邊調(diào)試邊測(cè)電流。
總結(jié)
mcu的低功耗設(shè)計(jì)是一個(gè)細(xì)致活,要養(yǎng)成良好的習(xí)慣,做到每添加一個(gè)功能都要重新驗(yàn)證一下低功耗是否符合要求,這樣就可以隨時(shí)隨地干掉消耗功率的因素。如果把所有功能都設(shè)計(jì)好了才去考慮低功耗的問(wèn)題,一個(gè)不小心,就可能要更改程序的架構(gòu)——即便如此也不一定能把功耗給徹底降下去。