我們的設備功耗能到多低?
我們探索了可以在每個Arm Cortex-M處理器上找到的低功率模式的基本原理,以及我們如何利用WFI和WFE說明來使處理器放置。真正存在的問題是,這些低功率模式如何在真實的微控制器上實現,這些模式如何影響我們的嵌入式系統(tǒng)?在這篇文章中,我們將更詳細地探討如何使微控制器入睡,并查看購買我們多少能量。
低功率模式實驗
探索低功率模式的最佳方法是選擇一個微控制器,并實際以各種低功率模式運行處理器。在這篇文章中,我決定除去我久經考驗的NXP Kinetis-L自由委員會,我不僅嘗試過,而且在許多產品,應用程序和課程中都使用過。我還決定,對與錯,不僅要衡量微控制器所繪制的能量,而且要衡量整個開發(fā)委員會的能量。 MCU通常是董事會上最渴望的設備之一,但是我經常發(fā)現測量整個系統(tǒng)電流提醒我,這并不是板上唯一的能源消費者。優(yōu)化微控制器可以帶您很長的路要走,但這并不總是可能需要優(yōu)化能量的唯一設備。
從基線測量開始
每當我努力優(yōu)化產品的能源消耗時,我首先要進行基線能量測量。通常,這是通過在幾秒鐘或幾分鐘內分析設備的當前抽簽來理解我們在哪里開始的方法來完成的。在我的開發(fā)板實驗中,我將Kinetis-L保持在運行模式下,沒有實現睡眠,所有外圍設備都會放在板上,并設置板定期切換LED。使用I-JET調試器和I-Scope的IAR嵌入式工作臺,當LED關閉時,我能夠為董事會介紹一個簡單的基線?16.9 mA,而當LED在下面可以看到的LED時約為18.0 mA。如您所見,您可以從或者從其他地方進行測量值,您可以在分析中進行分析。
通過等待和深度睡眠模式優(yōu)化能量
看到節(jié)省能源的最快方法是實施等待或深度睡眠模式。對Kinetis-L處理器的數據表的檢查表明,等待模式在3伏特的3.7和5.0 mA之間繪制。在此模式下,CPU和外圍時鐘被禁用,但閃存處于打ze式模式,該模式使處理器仍然可以在中斷的時間范圍內醒來(12 - 15個時鐘周期)。等待模式易于實現,可以在下面看到要輸入等待模式的代碼:
void sleep_wait(void)
{
scb_scr&= ?scb_scr_sleepdeep_mask;
ASM(“ WFI”);
}
只有這兩條代碼,開發(fā)委員會的當前消耗量從18.0 MA下降到15.9 MA。當前消費量下降了11.6%!如果板由680 mA電池供電,則該設備的電池壽命將從37.8小時到42.8小時!僅與兩行代碼相比增加了五個小時!
這些高級功率模式的偉大是,我們可以輕松地進一步邁出一步。我們可以使用以下代碼將處理器納入等待模式,而是將其移至深度睡眠等待模式:
void sleep_deep(void)
{
scb_scr | = scb_scr_sleepdeep_mask;
ASM(“ WFI”);
}
我們所做的只是在SCB_SCR寄存器中調整一個位,現在我們已經從原始的18 mA電流平局變?yōu)?4.8 mA。當前消費量下降了17.8%!同樣,假設板由680 mA電池供電,現在電池壽命將從37.8小時到46小時!這些僅用于幾行代碼,只是冰山一角!
利用stop and vlls模式用于UA當前抽獎
使用停止模式有可能通過禁用核心和系統(tǒng)時鐘進一步將MCU電流繪制到另外兩毫安中。您會發(fā)現的是,功率模式越低,實現它所需的代碼越多,并且代碼喚醒系統(tǒng)備份的代碼就越復雜。在Kinetis-L上輸入停止模式的代碼可以在下面看到:
void sleep_stop(void)
{
揮發(fā)性unsigned int dummyRead = 0;
smc_pmctrl&= ?smc_pmctrl_stopm_mask;
smc_pmctrl | = smc_pmctrl_stopm(0);
dummyRead = smc_pmctrl;
sleep_deep();
}
請注意,通過電源管理控制寄存器控制停止模式,一旦設置了狀態(tài),就會調用Sleep_Deep功能以完成設置電源模式并執(zhí)行WFI。
到目前為止,我們一直在談論MCU圖1-2 mA?,F代的微控制器將具有可以吸引微型甚至納米壓縮的功率模式! Kinetis-L處理器在2013年左右首次亮相,其非常低的泄漏停止(VLLS)模式僅吸引135至496個微型。可以在下面看到初始化此功率模式的代碼:
void sleep_vlls1(void)
{
揮發(fā)性unsigned int dummyRead = 0;
smc_pmctrl&= ?smc_pmctrl_stopm_mask;
smc_pmctrl | = smc_pmctrl_stopm(0x4);
smc_vllstrl = smc_vllsctrl_llsm(1);
dummyRead = vlls_ctrl;
sleep_deep();
}
在這一點上,微控制器幾乎根本沒有能量!
低功率模式對喚醒潛伏期的影響
正如我們到目前為止所看到的那樣,將處理器轉移到較低和較低的功率模式中是節(jié)省能源的好方法,但是節(jié)省的確是有代價的。處理器的能量狀態(tài)越低,處理器醒來并進行有用的工作所需的時間就越多。例如,如果我要使用標準停止模式,則需要2 US加上中斷延遲才能使處理器醒來并再次開始執(zhí)行代碼。還不錯。但是,如果我要在kinetis-l上使用一種VLLS模式,那么我將有一個喚醒延遲,可以啟動處理器以及另外53至115微秒!根據申請,這可能是不可接受的。
結論
ARM MicroController都將具有標準的低功率模式,但是每個硅供應商都會自定義開發(fā)人員可用的低功率模式。如我們所見,硅供應商經常提供多種模式,這些模式是低懸掛的水果,對喚醒潛伏期的影響最小。他們還提供了幾種非常低的功率模式,幾乎將處理器關閉,并僅繪制幾百個或更少的微型!開發(fā)人員通常需要平衡他們想要汲取的能量的數量與他們需要的速度醒來并響應事件的速度。權衡絕對是專門應用程序的,因此不要期望能夠在每個產品和應用程序上運行最低的功率模式。





