在嵌入式系統(tǒng)中,低功耗設(shè)計(jì)是在產(chǎn)品規(guī)劃以及設(shè)計(jì)過程中必須要面對(duì)的問題。半導(dǎo)體芯片每18個(gè)月性能翻倍。但同時(shí),電池的技術(shù)卻跟不上半導(dǎo)體的步伐,同體積的電池10年容量才能翻一倍。嵌入式系統(tǒng)對(duì)于使用時(shí)間以及待機(jī)時(shí)間的要求也越來越高,這就需要在設(shè)計(jì)產(chǎn)品的時(shí)候充分考慮到整個(gè)系統(tǒng)的低功耗設(shè)計(jì)。功耗控制是一個(gè)系統(tǒng)的工程,需要從低功耗的器件選型、硬件的低功耗設(shè)計(jì)與制造技術(shù)、軟件的低功耗優(yōu)化等多個(gè)方面來統(tǒng)籌考慮。作者就在潤欣科技工作期間服務(wù)過的項(xiàng)目,總結(jié)從以上多個(gè)角度來闡述嵌入式系統(tǒng)中低功耗設(shè)計(jì)要點(diǎn)。
低功耗器件選型
隨著半導(dǎo)體工藝的不斷發(fā)展,半導(dǎo)體的制造工藝也在不斷進(jìn)步,選用先進(jìn)工藝以及低功耗設(shè)計(jì)的元器件可以從源頭上降低整個(gè)系統(tǒng)的功耗。
1)主控芯片的選型要充分考慮到系統(tǒng)的使用場景,對(duì)于那些運(yùn)算任務(wù)比較多的應(yīng)用場景下,可以選用能耗比高的芯片來設(shè)計(jì),比如像ambiq的Apollo系列芯片,該芯片采用具有的SPOT技術(shù),芯片在亞閾值穩(wěn)定運(yùn)行,可減少能源消耗近13倍,實(shí)現(xiàn)的低功耗技術(shù)。
圖1 各廠家芯片ULPBench 1.0 Score
2)對(duì)于嵌入式系統(tǒng),電源芯片對(duì)于低功耗設(shè)計(jì)是一個(gè)很重要的器件。電源芯片自身的功耗以及轉(zhuǎn)換效率在很大程度影響電池的使用時(shí)間。進(jìn)行低功耗的穩(wěn)壓,需采用低功耗的LDO或者DCDC芯片,如TI的TPS797系列,自身功耗僅1.2uA。
3)在滿足功能需求的情況下,盡量選用帶觸發(fā)輸出功能外部器件而非需要輪詢的外部器件,這樣可以減少的運(yùn)行時(shí)間,平時(shí)MCU可以一直處于睡眠狀態(tài)下,在滿足觸發(fā)條件時(shí)有外部器件通過中斷喚醒MCU工作。
硬件的低功耗設(shè)計(jì)與制造技術(shù)
硬件設(shè)計(jì)對(duì)于嵌入式系統(tǒng)的功耗也有著至關(guān)重要的因素。
1)對(duì)外圍元器件的電源控制,采用帶關(guān)斷功能的器件,對(duì)于那些進(jìn)入低功耗模式下不需要工作的外設(shè),可以使用MOS管電路配合MCU控制對(duì)局部的電路進(jìn)行電源管理。在該設(shè)備不需要工作時(shí),盡量關(guān)斷該部分電源,以達(dá)到更低的功耗。
2)多級(jí)電壓設(shè)計(jì),電壓和功耗有著密切的聯(lián)系。因此功耗的降低可以考慮對(duì)于不同的電路模塊,使用不同的電壓等級(jí),可以采用DVFS動(dòng)態(tài)電壓頻率技術(shù),通過將不同電路模塊的工作電壓及工作頻率降低到恰好滿足系統(tǒng)要求,來實(shí)時(shí)降低系統(tǒng)中不同電路模塊功耗的方法。
3)硬件設(shè)計(jì)對(duì)于MCU的每個(gè)IO口都要避免IO口漏電流。當(dāng)外設(shè)掉電時(shí),IO口仍然會(huì)有潛在的電源輸出,所以IO口需要默認(rèn)配置成低電平或者高電平狀態(tài),避免漏電流。
軟件對(duì)于系統(tǒng)功耗的優(yōu)化
軟件對(duì)功耗的優(yōu)化涉及到多個(gè)層次和方面。
1)適當(dāng)?shù)慕档?a href="http://wenjunhu.com/v/tag/132/" target="_blank">CPU的運(yùn)行頻率,降低MCU的運(yùn)行速度,可以有效的降低運(yùn)行時(shí)需要消耗的電流,芯片的功耗和主頻是線性的關(guān)系,更高的時(shí)鐘頻率意味著更快的MCU運(yùn)行速度,那么MCU內(nèi)部CMOS電路就更快的開關(guān)頻率,導(dǎo)致更高的運(yùn)行電流和待機(jī)電流。
2)合理的使用MCU的待機(jī)模式,在當(dāng)前沒有任務(wù)需要處理時(shí),將MCU進(jìn)入到低功耗的睡眠模式。對(duì)于使用的嵌入式產(chǎn)品,一般都是在idle空閑任務(wù)中進(jìn)入睡眠模式,但是為了進(jìn)一步降低功耗,實(shí)現(xiàn)低功耗設(shè)計(jì),我們還不能直接把睡眠或者停機(jī)模式直接放在空閑任務(wù)就可以了,需要設(shè)計(jì)一種更先進(jìn)的休眠機(jī)制,比如在freertos操作系統(tǒng)中使用tickless 低功耗機(jī)制,進(jìn)入空閑任務(wù)后,首先要計(jì)算可以執(zhí)行低功耗的時(shí)間,也就是求出下一個(gè)要執(zhí)行的高優(yōu)先級(jí)任務(wù)還剩多少時(shí)間。然后就是把低功耗的喚醒時(shí)間設(shè)置為這個(gè)求出的時(shí)間,到時(shí)間后系統(tǒng)會(huì)從低功耗模式被喚醒,繼續(xù)執(zhí)行多任務(wù)。
3)關(guān)注每一個(gè)GPIO口電平狀態(tài),在進(jìn)入睡眠之前配置所有的GPIO口到高電平或者低電平以降低漏電流。對(duì)于外掛的傳感器以及外圍設(shè)備,也需要在進(jìn)入睡眠之前配置其功耗模式以降低消耗的電流。
4)合理關(guān)閉MCU內(nèi)部模塊,對(duì)于在Deep Sleep模式下不需要工作的內(nèi)部模塊都要關(guān)閉時(shí)鐘以及電源以節(jié)省功耗,同時(shí)要重點(diǎn)關(guān)注模擬IO口,模擬功能一般是耗電大戶,在AD/DA功能不使用的時(shí)候盡快關(guān)閉,減小使用模擬功能的時(shí)間。此外,芯片內(nèi)部SRAM由于需要不停的刷新,在睡眠模式下也需要消耗一定的電流,可以配置部分SRAM在睡眠模式下保持刷新降低功耗。
5)對(duì)于包含有無線功能的芯片,配置合理的待機(jī)參數(shù)以降低功耗。如比對(duì)于BLE芯片CSR1010,在進(jìn)行BLE的廣播模式下,60ms的廣播間隔的待機(jī)電流時(shí)394A,如果將廣播時(shí)間增大到1.28S,則待機(jī)電流降低到28A。對(duì)于wifi芯片,比如高通QCA4004芯片,在DTIM1情況下對(duì)應(yīng)功耗是1.5mA,在DTIM10情況下則降低到334A。
總結(jié)
嵌入式系統(tǒng)低功耗需要綜合考慮各種可能的因素、條件和狀態(tài),需要對(duì)各種細(xì)節(jié)進(jìn)行認(rèn)真的斟酌和分析,需要對(duì)各種可能的方案和方法進(jìn)行計(jì)算和分析,盡的努力優(yōu)化整個(gè)系統(tǒng)的功耗,達(dá)到節(jié)省電能的目的。
評(píng)論
查看更多