ARM Cortex-M低功耗模式基本介紹
無論是嵌入式系統(tǒng)在電池上運(yùn)行還是連接到電網(wǎng),設(shè)計(jì)綠色并最小化能源消耗的系統(tǒng)都是大多數(shù)系統(tǒng)的常見要求?,F(xiàn)代嵌入式系統(tǒng)中最大的能源消費(fèi)者之一是微控制器,并且了解如何最大程度地減少其能源消耗至關(guān)重要。即使您查看一個(gè)微控制器家族,每個(gè)處理器架構(gòu)都將具有略有不同的低功率功能。在這篇文章中,我們將研究ARM Cortex-M處理器核心中的基本低功率模式以及如何使用它們。
基本低能模式
每個(gè)基于ARM Cortex-M處理器的微控制器都至少具有三種功率模式;跑步,睡眠和深度睡眠。顯然,運(yùn)行模式是處理器完全供電的地方,并執(zhí)行嵌入式系統(tǒng)設(shè)計(jì)的所有操作。睡眠模式將停止CPU時(shí)鐘,但會(huì)使系統(tǒng)時(shí)鐘,閃光燈和外圍時(shí)鐘運(yùn)行。深度睡眠模式不僅會(huì)停止CPU時(shí)鐘,還可以關(guān)閉系統(tǒng)時(shí)鐘,閃光燈和PLL。
微控制器供應(yīng)商能夠完全自定義其低功率模塊以提供不同程度的低功率。例如,NXP KINETIS-L處理器不僅具有標(biāo)準(zhǔn)的Cortex-M低功率模式,還具有諸如低滲透睡眠模式和非常低的泄漏睡眠模式之類的模式,它們僅繪制電流的微或納米壓縮。
重要的是要注意,微控制器的睡眠越深,完全關(guān)閉的距離就越近。這一點(diǎn)很重要,因?yàn)殡S著您使用越來越深的睡眠模式,備份微控制器并開始執(zhí)行指令所需的時(shí)間可能會(huì)大大增加。一些提供非常深的功率模式的處理器需要與處理器啟動(dòng)序列相同的時(shí)間才能再次運(yùn)行。根據(jù)您的應(yīng)用程序,這可能會(huì)對(duì)系統(tǒng)的實(shí)時(shí)性能產(chǎn)生重大影響。
進(jìn)入低功率模式
開發(fā)人員可以使用兩種不同的說明將其系統(tǒng)置于低功率狀態(tài)。等待事件(WFE)和互換等待(WFI)。執(zhí)行WFE指令后,它將檢查系統(tǒng)控制塊(SCB)中事件位的值。如果未設(shè)置鉆頭,則將系統(tǒng)放置在睡眠模式中。事件可以由外部來源或使用發(fā)送事件(SEV)指令生成。在大多數(shù)情況下,我看到或編寫的應(yīng)用程序中有99%都使用了WFI指令。
當(dāng)遇到WFI指令時(shí),除非有待處理中斷,否則處理器將立即進(jìn)入SCB中配置的低功率睡眠模式。一旦處理器入睡,當(dāng)中斷時(shí),它將醒來。某些處理器甚至可能具有可選的喚醒間斷控制器,該處理器允許開發(fā)人員配置允許哪些源喚醒處理器。這為開發(fā)人員提供了對(duì)系統(tǒng)可以在最低功率睡眠模式下保留多長(zhǎng)時(shí)間的精細(xì)控制。
進(jìn)入所需睡眠模式的C代碼非常直截了當(dāng)。在大多數(shù)開發(fā)環(huán)境中,所有人都需要做的就是編寫以下代碼行:
__wfi;
如果您使用的是CMSI,也可以通過寫作來呼叫WFI函數(shù):
__wfi();
現(xiàn)在,您可能想知道如何配置輸入哪種低功率模式。在SCB寄存器中,有一個(gè)SleepDeep位,如果設(shè)置為1,則將處理器置于深度睡眠模式。如果將鉆頭清除為0,則處理器將進(jìn)入睡眠模式。正如我前面提到的,硅供應(yīng)商通常會(huì)增強(qiáng)睡眠模式,因此還需要根據(jù)設(shè)計(jì)您的微控制器來配置其他寄存器。
額外的低功率功能
除了能夠進(jìn)入低功率模式外,還有另一個(gè)有趣的低功率模式功能,稱為“睡眠”。一旦執(zhí)行完成的中斷,就可以讓處理器立即重新入睡。這使開發(fā)人員可以節(jié)省時(shí)間,在這種情況下,時(shí)間是能量,通過避免不必要的上下文在主應(yīng)用程序和中斷之間進(jìn)行切換。允許處理器在中斷中醒來,進(jìn)行必要的工作,然后重新入睡。
結(jié)論
Cortex-M處理器上的低功率模式是減少嵌入式系統(tǒng)用途的能源消耗量的主要密鑰之一。如我們所見,開發(fā)人員可以使用WFI指令將其系統(tǒng)置于低功率模式中,然后一旦觸發(fā)了先前配置的喚醒事件或中斷,系統(tǒng)就會(huì)喚醒。每個(gè)微控制器供應(yīng)商都能自定義其功率模式,我們將看到具有三種默認(rèn)電源模式的微控制器,其始終以十幾個(gè)功率模式和復(fù)雜的狀態(tài)計(jì)算機(jī),這些機(jī)器可以促進(jìn)處理器如何從一種模式移動(dòng)到另一種模式。