聯系人:周經理
電話:025-85951615
手機:18551776358
郵編:210000
郵箱:2964320295@qq.com
地址:南京市江寧區誠信大道998號5棟
微控制器的使用越來越多,在現實諸多方面均有微控制器的身影。但在實踐過程中,暴露出一些微智能控制器問題,譬如如何對微智能控制器進行省電管理。如果你對這個微控制器問題存在興趣,不妨繼續往下閱讀哦。
一、微控制器省電管理方法
新唐科技的NUC1xx包含NUC101、NUC100、NUC120、NUC130和NUC140,是以ARM Cortex-M0為核心的32位微控制器(MCU),經由不同時鐘的設定,**高可以達到50MHz的運作頻率。然而在一般簡單控制或系統負載較低時,STM32單片機開發CPU并不需要執行在**高的運行時鐘下即可應付所需要的計算量。這時候,STM32單片機開發便可以利用系統時鐘的控制來降低時鐘,以達到省電的目的。
另一種情況是CPU因為等待下一個工作或只需要久久工作一次時,就可以先將CPU進入Idle或Power Down模式,等到一定的時間之后或是有特定的事件發生時,才被喚醒過來進行相關事件的處理。同時,如果系統內沒有用到的系統模塊,也可以將其關閉以節省不必要的耗電。下面介紹各種不同的省電方法的原理,并提供相關的范例說明。
二、開關系統模塊
在新唐科技NUC1xx中,為了省電的需求,當某個系統模塊不使用時,可以將其輸入時鐘關閉,使其進入關閉的模式,依此來達到省電的效果。在NUC1xx中,幾乎所有的系統模塊都可以各別被關閉,這些模塊包括:Watch Dog TImer、RTC、TImer0~3、I2C0~1、SPI0~3、UART0~2、PWM0~7、CAN、USB、ADC、ACMP、PS2、PDMA、 Flash ISP。不過,并非每顆芯片都包含了所有模塊功能,例如CAN模塊只在NUC130和NUC140才有此功能,詳細說明請參考各芯片的相關文件。
新唐科技NUC1xx藉由關閉各模塊時鐘的方式來達到關閉各模塊的目的,所以要關閉模塊就必須設定相關的時鐘控制緩存器。NUX1xx提供AHBCLK Register與APBCLK Register,來控制上文所列出各模塊的開關。
三、系統時鐘設定
新唐科技NUC1xx本身的耗電量和它的運行時鐘有很大關系。如果運行的時鐘高,則耗電高,反之則比較省電,但同時CPU就可能無法負荷大量的運算。因此,如果要同時兼顧大量運算跟省電,就必須能夠根據實際上的需求來調整CPU的工作時鐘,以求達到**佳的運作效率。
NUC1xx內建了PLL,能使用外部12MHz的晶振或是內部22M振蕩器產生系統所需的時鐘,由PLL所產生的時鐘再經過適當除頻,即可作為CPU的工作頻率。另外NUC1xx也提供經由外部32KHz的晶振或是內部10KHz 振蕩器直接供給作為CPU工作頻率的方式。因此,NUC1xx對于工作時鐘的設定,提供了很大的靈活性。
四、IDLE省電模式
新唐科技NUC1xx除了可利用設定**適合的工作時鐘來達到省電的目的外,如果在系統完全不需要工作時,還可以將CPU及大部分的硬件關閉,以達到**大的省電效果。這種搭配關閉CPU及大部分硬件的模式,我們稱之為省電模式,其中包括了Idle省電模式及Power Down省電模式。下面就Idle省電模式進行說明。
藉由關閉大部分硬件時鐘以達到**大省電效率的模式主要有兩種,一種是Idle省電模式,另一種是Power Down省電模式。這兩種模式**大的不同點是,當系統進入Idle省電模式下時,任何的中斷事件都可以重新喚醒CPU,以便讓系統可以處理新進的事件。但如果系統處于Power Down省電模式,就只有少數特定的中斷事件能夠喚醒系統。
由于所謂的Idle模式,實際上就是把CPU的時鐘關閉,這樣讓CPU在沒有工作時處在**省電的模式。因為在這個模式下,只是將CPU的時鐘關閉,一旦有任何中斷事件發生,馬上可以打開CPU的時鐘來處理相關的事件,所以不會造成處理事件的延遲,同時又可以達到省電效果,是兼顧速度與省電的一種模式。
NUC1xx可以利用ARM Cortex-M0本身提供的WFI/WFE指令進入Idle模式。PCB方案開發一旦進入Idle模式,CPU將立刻進入Sleep模式而停止運作,因此在WFI/WFE指令之后的程序都必須等到CPU被喚醒后才會被執行。此時NUC1xx的耗電量將降到約16mA@3.3V-48MHz。
進入Idle省電模式之后,如果要喚醒CPU,回到一般的工作模式,就必須先產生中斷信號。該中斷信號可以是NUC1xx中的任何模塊所產生的中斷,也可以通過外部中斷的方式來喚醒CPU。需要注意的是,當決定CPU要由某個中斷來喚醒時,就必須在進入Idle省電模式前,將該中斷設定完成,才能使其產生中斷事件來喚醒CPU。
五、Power Down省電模式
Power Down是新唐科技NUC1xx**省電的一種模式,因為一旦進入Power Down省電模式,晶振時鐘會被關閉,整顆NUC1xx呈現靜止的狀態,這時的耗電量將減到**小的程度。而在此模式下,也只有少數的特定中斷事件能夠喚醒NUC1xx,使其恢復工作狀態。在Power Down模式下,NUC1xx提供了GPIO、USB、UART、RTC、ACMP和CAN的中斷喚醒方式。
要進入Power Down省電模式,除了必須呼叫WFI/WFE指令外,在調用WFI/WFE指令之前,必須另將PD_WAIT_CPU和PWR_DOWN_EN兩個功能依序打開。已確保CPU先進入Sleep模式后,系統再進入Power Down模式,此時NUc1xx是屬于**省電的狀態,耗電量將降到約15uA。
一旦NUC1xx進入Power Down省電模式,單片機開發由于大部分的邏輯電路都進入停止狀態,因此要想喚醒CPU,必須經由特殊定義的中斷源來喚醒。在Idle省電模式下,只要有任何中斷即可喚醒CPU不同,不過相同的是,兩者都必須要在進入省電模式前,先設定好將來要用來喚醒CPU的模塊,這包括其中斷或喚醒功能,這些為了喚醒CPU的準備都完成之后,才能進入省電模式,否則就沒有任何方式能夠再喚醒CPU了。
由于所謂的Power Down省電模式,實際上是把晶振的時鐘關閉,讓整個NUC1xx呈現靜止的狀態。而因為晶振也被關閉了,一旦有喚醒中斷事件發生,需要等到晶振穩定下來后,CPU才能繼續運作,所以由Power Down進入一般的工作模式,會需要延遲一點時間來等待,而NUC1xx系列所提供的延遲時間預設為4096個clock cycle。以12MHz來計算,延遲時間為(1/12MHz)*4096=341.12us(圖2中的T2),而晶振起振所需時間(圖2中的T1)則會隨著晶振頻率、品牌、PCB 布線等都會造成少許差異。一般而言, 12MHz晶振起振所需時間約1~2ms。
本文介紹了新唐科技NUC1xx所提供的各種省電方式,包括了關閉沒用到的模塊、調整CPU運作的時鐘、Idle省電模式與Power Down省電模式。汽車整車控制器在實際應用時,使用者可以根據自身所需,選擇適合的方式,甚至組合不同的省電方法以達到**佳的省電效率。