微控制器省電管理方法
IDLE省電模式
新唐科技NUC1xx除了可利用設定最適合的工作時(shí)鐘來(lái)達到省電的目的外,如果在系統完全不需要工作時(shí),還可以將CPU及大部分的硬件關(guān)閉,以達到最大的省電效果。這種搭配關(guān)閉CPU及大部分硬件的模式,我們稱(chēng)之為省電模式,其中包括了Idle省電模式及Power Down省電模式。下面就Idle省電模式進(jìn)行說(shuō)明。
藉由關(guān)閉大部分硬件時(shí)鐘以達到最大省電效率的模式主要有兩種,一種是Idle省電模式,另一種是Power Down省電模式。這兩種模式最大的不同點(diǎn)是,當系統進(jìn)入Idle省電模式下時(shí),任何的中斷事件都可以重新喚醒CPU,以便讓系統可以處理新進(jìn)的事件。但如果系統處于Power Down省電模式,就只有少數特定的中斷事件能夠喚醒系統。
由于所謂的Idle模式,實(shí)際上就是把CPU的時(shí)鐘關(guān)閉,這樣讓CPU在沒(méi)有工作時(shí)處在最省電的模式。因為在這個(gè)模式下,只是將CPU的時(shí)鐘關(guān)閉,一旦有任何中斷事件發(fā)生,馬上可以打開(kāi)CPU的時(shí)鐘來(lái)處理相關(guān)的事件,所以不會(huì )造成處理事件的延遲,同時(shí)又可以達到省電效果,是兼顧速度與省電的一種模式。
NUC1xx可以利用ARM Cortex-M0本身提供的WFI/WFE指令進(jìn)入Idle模式。一旦進(jìn)入Idle模式,CPU將立刻進(jìn)入Sleep模式而停止運作,因此在WFI/WFE指令之后的程序都必須等到CPU被喚醒后才會(huì )被執行。此時(shí)NUC1xx的耗電量將降到約16mA@3.3V-48MHz。
進(jìn)入Idle省電模式之后,如果要喚醒CPU,回到一般的工作模式,就必須先產(chǎn)生中斷信號。該中斷信號可以是NUC1xx中的任何模塊所產(chǎn)生的中斷,也可以通過(guò)外部中斷的方式來(lái)喚醒CPU。需要注意的是,當決定CPU要由某個(gè)中斷來(lái)喚醒時(shí),就必須在進(jìn)入Idle省電模式前,將該中斷設定完成,才能使其產(chǎn)生中斷事件來(lái)喚醒CPU。
Power Down省電模式
Power Down是新唐科技NUC1xx最省電的一種模式,因為一旦進(jìn)入Power Down省電模式,晶振時(shí)鐘會(huì )被關(guān)閉,整顆NUC1xx呈現靜止的狀態(tài),這時(shí)的耗電量將減到最小的程度。而在此模式下,也只有少數的特定中斷事件能夠喚醒NUC1xx,使其恢復工作狀態(tài)。在Power Down模式下,NUC1xx提供了GPIO、USB、UART、RTC、ACMP和CAN的中斷喚醒方式。
要進(jìn)入Power Down省電模式,除了必須呼叫WFI/WFE指令外,在調用WFI/WFE指令之前,必須另將PD_WAIT_CPU和PWR_DOWN_EN兩個(gè)功能依序打開(kāi)。已確保CPU先進(jìn)入Sleep模式后,系統再進(jìn)入Power Down模式,此時(shí)NUc1xx是屬于最省電的狀態(tài),耗電量將降到約15uA。
一旦NUC1xx進(jìn)入Power Down省電模式,由于大部分的邏輯電路都進(jìn)入停止狀態(tài),因此要想喚醒CPU,必須經(jīng)由特殊定義的中斷源來(lái)喚醒。在Idle省電模式下,只要有任何中斷即可喚醒CPU不同,不過(guò)相同的是,兩者都必須要在進(jìn)入省電模式前,先設定好將來(lái)要用來(lái)喚醒CPU的模塊,這包括其中斷或喚醒功能,這些為了喚醒CPU的準備都完成之后,才能進(jìn)入省電模式,否則就沒(méi)有任何方式能夠再喚醒CPU了。
由于所謂的Power Down省電模式,實(shí)際上是把晶振的時(shí)鐘關(guān)閉,讓整個(gè)NUC1xx呈現靜止的狀態(tài)。而因為晶振也被關(guān)閉了,一旦有喚醒中斷事件發(fā)生,需要等到晶振穩定下來(lái)后,CPU才能繼續運作,所以由Power Down進(jìn)入一般的工作模式,會(huì )需要延遲一點(diǎn)時(shí)間來(lái)等待,而NUC1xx系列所提供的延遲時(shí)間預設為4096個(gè)clock cycle。以12MHz來(lái)計算,延遲時(shí)間為(1/12MHz)*4096=341.12us(圖2中的T2),而晶振起振所需時(shí)間(圖2中的T1)則會(huì )隨著(zhù)晶振頻率、品牌、PCB 布線(xiàn)等都會(huì )造成少許差異。一般而言, 12MHz晶振起振所需時(shí)間約1~2ms。實(shí)際量測范例數據如圖2所示。
本文小結
本文介紹了新唐科技NUC1xx所提供的各種省電方式,包括了關(guān)閉沒(méi)用到的模塊、調整CPU運作的時(shí)鐘、Idle省電模式與Power Down省電模式。在實(shí)際應用時(shí),使用者可以根據自身所需,選擇適合的方式,甚至組合不同的省電方法以達到最佳的省電效率。
評論