在我的上一篇文章中,“你能走多低(功率)?”,我們研究了微控制器中可用的幾種不同低功耗模式,以及這些低功耗模式如何影響能耗和喚醒時間。低功耗模式是降低微控制器能耗的主要技術(shù)之一,但它并不是開發(fā)人員可用的唯一技術(shù)。在這篇文章中,我們將研究我最喜歡的五種降低微控制器能耗的技術(shù)。
在微控制器中,CPU 通常是使用最多電流的耗電設(shè)備。外圍設(shè)備肯定會導(dǎo)致能耗,尤其是在有 USB 或以太網(wǎng)控制器的情況下,但優(yōu)化設(shè)備能耗的第一步是盡可能長時間地將 CPU 保持在最低狀態(tài)。應(yīng)用程序?qū)⑿枰ㄆ趩拘岩砸苿訑?shù)據(jù),例如從 UART 接收字節(jié)并將它們存儲在緩沖區(qū)中。避免不斷喚醒 CPU 以處理移動數(shù)據(jù)的一種方法是使用直接內(nèi)存訪問 (DMA) 控制器。
DMA 允許開發(fā)人員讓他們的 CPU 保持睡眠狀態(tài),而是使用低功耗外設(shè)來完成 CPU 本來可以做的事情,在微控制器周圍移動數(shù)據(jù)。DMA 控制器可用于多種用途,例如:
將數(shù)據(jù)從外設(shè)移動到內(nèi)存
將數(shù)據(jù)從內(nèi)存移動到另一個內(nèi)存位置
將內(nèi)存中的數(shù)據(jù)移動到外設(shè)
關(guān)于如何設(shè)置 DMA 的細(xì)節(jié)因微控制器而異,但好處是 CPU 可以保持在低功耗狀態(tài),直到它需要實際喚醒并處理已由 DMA 傳輸?shù)臄?shù)據(jù).
技巧 #2 – 使用時鐘節(jié)流
您可能從微控制器課程或在線閱讀中回憶起微控制器的能耗取決于時鐘頻率。頻率越高,能量消耗越高。應(yīng)用程序不一定總是需要全速運行。事實上,根據(jù)需要做的事情來限制時鐘可能是一種有效的技術(shù),可以最大限度地減少消耗的能量。
以下面的圖 1 為例,它顯示了 NXP Kinetis-L 微控制器中運行模式電流與內(nèi)核頻率的關(guān)系。從這個圖中,讀者可以看到,降低時鐘頻率會降低能耗。還可以看出,禁用未使用的外圍設(shè)備如何影響微控制器消耗的能量。
?
?
圖 1 – 微控制器電流消耗作為內(nèi)核時鐘頻率的函數(shù)。(來源:NXP Kinetis-L 數(shù)據(jù)表)
確切何時以及如何限制時鐘頻率完全取決于應(yīng)用程序。某些應(yīng)用程序可能仍希望始終全速運行。在其他情況下,可以將頻率從最大值減半并以這種方式運行該部分。在其他情況下,根據(jù)應(yīng)用程序正在執(zhí)行的操作動態(tài)更改時鐘可能是有意義的。請注意,如果您決定動態(tài)使用時鐘節(jié)流,您可能還需要動態(tài)更改外設(shè)寄存器設(shè)置以補償更改。
技巧#3——利用編譯器優(yōu)化
現(xiàn)代編譯器提供嵌入式優(yōu)化設(shè)置,可以改善給定代碼的執(zhí)行時間。例如,大多數(shù)編譯器為開發(fā)人員提供優(yōu)化設(shè)置以執(zhí)行循環(huán)展開和內(nèi)聯(lián)函數(shù)。雖然這只是兩個示例,但開發(fā)人員可以使用這些技術(shù)來生成執(zhí)行速度更快的代碼。執(zhí)行速度更快的代碼,即使它確實使用更多代碼空間,也將有機會在低功耗模式下花費更多時間,這反過來將減少應(yīng)用程序消耗的能量。
我建議您盡快安排一些時間來查看您的編譯器手冊,看看它內(nèi)置了哪些功能來幫助您更快地執(zhí)行代碼。雖然看起來節(jié)省幾十個時鐘周期似乎沒什么大不了的。在數(shù)周甚至數(shù)月的過程中,這些時鐘周期可以很快加起來。
技巧 #4 – 利用低功耗 (LP) 外設(shè)
如果您仔細(xì)閱讀微控制器數(shù)據(jù)表,您會注意到專為低功耗操作而設(shè)計的微控制器通常包含與“標(biāo)準(zhǔn)”外設(shè)分開的低功耗外設(shè)。例如,STM32 微控制器包括一個 LP 定時器。這是一個定時器外設(shè),不包括所有額外的花里胡哨,但設(shè)計用于在低功耗環(huán)境中運行。在優(yōu)化甚至開始低功耗設(shè)計時,注意這些低功耗外圍設(shè)備并加以利用是無需大量額外工作即可降低產(chǎn)品能耗的好方法。
技巧#5——跳出框框思考
有時您可能會發(fā)現(xiàn)您需要真正跳出框框思考以優(yōu)化能源。幾年前,我正在研究一種由電池供電的醫(yī)療產(chǎn)品,每次充電之間必須使用電池供電 12 到 14 小時。我們選擇了我們需要的電池,然后繼續(xù)設(shè)計。好吧,工業(yè)設(shè)計師認(rèn)為電池太大了,在沒有告訴電子或軟件團隊的情況下,他們決定大幅縮小電池尺寸,以便制造出更小、更性感的設(shè)備。該設(shè)備的第一次測試顯示電池僅持續(xù)約 4 - 5 小時!
工業(yè)團隊當(dāng)然已經(jīng)轉(zhuǎn)向生產(chǎn)工具,并且沒有回到更大的電池。唯一的選擇就是瘋狂地優(yōu)化。盡管使用了書中所有可能的優(yōu)化技術(shù),但我只能讓設(shè)備持續(xù)使用大約 8 小時。那么,可以做些什么呢?事實證明,該產(chǎn)品有一個板載 USB 主機,它有一個作為 MSD/CDC 設(shè)備連接的自定義存儲設(shè)備。USB消耗大量能源,如果USB可以在不需要時關(guān)閉,可以節(jié)省相當(dāng)多的能源。
我們必須跳出框框思考,在啟動設(shè)備后,我們將禁用 USB 設(shè)備,關(guān)閉 USB 主機,當(dāng)需要 USB 設(shè)備時,我們通過 USB D+ 和 D- 端口發(fā)送一條消息,發(fā)出信號USB 主機將重新啟動。這是一種瘋狂、丑陋的變通方法,但它成功地將電池壽命延長到 14 小時以上。有時您只需跳出框框思考即可獲得所需的能源效率。
結(jié)論
在這篇文章中,我們研究了一些額外的技術(shù),開發(fā)人員可以利用這些技術(shù)來最大限度地降低微控制器的能耗。將這些技術(shù)與低功耗模式一起使用可以顯著降低設(shè)備能耗。當(dāng)您致力于優(yōu)化您的微控制器應(yīng)用的能源時,不要忘記選擇能夠為您的時間帶來最大收益的技術(shù)。能量優(yōu)化通常會成為一個黑洞,每次迭代的時間投資回報都會遞減。
?
審核編輯:湯梓紅
評論
查看更多