11.1.PMU 簡介
PMU即電源管理單元,它有三個電源域,包括VDD/VDDA域、1.1V/1.2V域和備份域。電源管理單元在常規(guī)芯片提供了三種省電模式,包括睡眠模式、深度睡眠模式和待機模式;在低功耗芯片中,電源管理單元提供了十種省電模式,包括運行模式,運行模式 1,運行模式 2,睡眠模式,睡眠模式 1,睡眠模式 2,深度睡眠模式,深度睡眠模式 1,深度睡眠模式 2 和待機模式。這些模式能減少電源能耗,且使得應(yīng)用程序可以在CPU運行時間要求、速度和功耗的相互沖突中獲得最佳折衷。
11.2.PMU 功能
三個電源域:備份域、 VDD/VDDA域和1.1V/1.2V電源域;
三種省電模式(常規(guī)芯片):睡眠模式、深度睡眠模式和待機模式;
十種省電模式(低功耗芯片):運行模式、運行模式1、運行模式2、睡眠模式、睡眠模式1、睡眠模式2、深度睡眠模式、深度睡眠模式1、深度睡眠模式2和待機模式。
內(nèi)部電壓調(diào)節(jié)器( LDO)提供1.1V/1.2V電源;
提供低電壓檢測器,當電壓低于所設(shè)定的閾值時能發(fā)出中斷或事件;
當VDD供電關(guān)閉時,由VBAT(電池)為備份域供電;
LDO輸出電壓用于節(jié)約能耗;
低驅(qū)動模式用于在深入睡眠模式下超低功耗。高驅(qū)動模式用在高頻模式中。
如下圖PMU及相關(guān)電源域內(nèi)部結(jié)構(gòu)框圖所示。
電池備份域
電池備份域由內(nèi)部電源切換器來選擇VDD供電或VBAT(電池)供電,然后由VBAK為備份域供電,該備份域包含RTC(實時時鐘)、 LXTAL(低速外部晶體振蕩器)、 BPOR(備份域上電復(fù)位)、 BREG(備份寄存器),以及PC13至PC15共3個PAD。為了確保備份域中寄存器的內(nèi)容及RTC正常工作,當VDD關(guān)閉時, VBAT引腳可以連接至電池或其他電源等備份源供電。
VDD/VDDA 電源域
VDD/VDDA 域包括 VDD 域和 VDDA 域兩部分。VDD 域包括 HXTAL(高速外部晶體振蕩器)、LDO(電壓調(diào)節(jié)器)、 POR/PDR(上電/掉電復(fù)位)、 FWDGT(獨立看門狗定時器)和除 PC13、PC14和 PC15 之外的所有 PAD 等等。 VDDA 域包括 ADC/DAC( AD/DA 轉(zhuǎn)換器)、 IRC8M( 內(nèi)部 8MRC 振蕩器)、 IRC48M( 內(nèi)部 48M RC 振蕩器)、 IRC40K(內(nèi)部 40KHz RC 振蕩器) PLLs(鎖相環(huán))和 LVD(低電壓檢測器)等等。
VDD 域 POR/ PDR(上電/掉電復(fù)位) 電路檢測VDD/VDDA并在電壓低于特定閾值時產(chǎn)生電源復(fù)位信號復(fù)位除備份域之外的整個芯片。 如下圖上電/掉電復(fù)位波形圖顯示了供電電壓和電源復(fù)位信號之間的關(guān)系。 VPOR表示上電復(fù)位的閾值電壓, VPDR表示掉電復(fù)位的閾值電壓,以GD32F303為例 ,典型值約為2.40V,典型值約為1.8V。遲滯電壓Vhyst值約為600mV。
VDDA 域
LVD 的功能是檢測 VDD/VDDA 供電電壓是否低于低電壓檢測閾值,該閾值由電源控制寄存器(PMU_CTL)中的 LVDT[2:0]位進行配置。 LVD 通過 LVDEN 置位使能,位于電源狀態(tài)寄存器(PMU _CS)中的 LVDF 位表示低電壓事件是否出現(xiàn),該事件連接至 EXTI 的第 16 線,用戶可以通過配置 EXTI 的第 16 線產(chǎn)生相應(yīng)的中斷。下圖LVD閾值波形圖顯示了 VDD/VDDA 供電電壓和 LVD 輸出信號的關(guān)系。( LVD 中斷信號依賴于 EXTI 第 16 線的上升或下降沿配置)。
遲滯電壓 Vhyst 值為 100mV。
省電模式
三種低功耗功耗模式對比表
不同系列 standby 喚醒源
11.3.硬件注意事項
1)對于沒有外部電池的應(yīng)用,建議將 VBAT 引腳通過 100nF 的外部陶瓷去耦電容連接到 VDD 引 腳上;
2)由于 PC13 至 PC15 引腳是通過電源切換器供電的,電源切換器僅可通過小電流,因此當 PC13 至 PC15 的 GPIO 口在輸出模式時, 其工作的速度不能超過 2MHz(最大負載為 30pF)。
3)如果 VDDA 和 VDD 不同時,VDDA 須高于 VDD,但壓差不超過 0.2V。
VBAT 參考電路
11.4.軟件配置說明
PMU 以低功耗模板配置為例來說明
Demo 一 ( Deepsleep 模式)
demo 功能說明:
MCU 上電啟動后,LED 燈閃爍 5 次,進入深度睡眠模式,通過按鍵來喚醒,LED 燈繼續(xù)閃爍 5次又進入深度睡眠。
軟件配置步驟如下:
1)開啟 PMU 時鐘
rcu_periph_clock_enable(RCU_PMU);
2)配置 LED 燈
void led_config(void) { gd_eval_led_init(LED1); gd_eval_led_init(LED2); gd_eval_led_init(LED3); gd_eval_led_init(LED4); }
3)配置喚醒按鍵 PC13
void gd_eval_key_init(void) //配置喚醒按鍵 { rcu_periph_clock_enable(RCU_GPIOC); //配置 GPIOC 的時鐘 rcu_periph_clock_enable(RCU_AF); //開啟復(fù)用時鐘 gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_13);//配置 GPIO PC13 為浮空輸入模式 nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U); //配置中斷向量、搶占優(yōu)先級、主優(yōu)先 級 gpio_exti_source_select(GPIO_EVENT_PORT_GPIOC, GPIO_EVENT_PIN_13); //配置外部中斷源 PC13 exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_FALLING); //配置外部中斷 13 線 、下降沿觸發(fā) exti_interrupt_flag_clear(EXTI_13); //清空外部中斷 13 線的中斷標志 }
4)進入低功耗模式函數(shù)
pmu_to_deepsleepmode(PMU_LDO_NORMAL,WFI_CMD);
- 按鍵外部觸發(fā)中斷服務(wù)函數(shù)
void EXTI10_15_IRQHandler(void) { if (RESET != exti_interrupt_flag_get(EXTI_13)) //判斷是否為 13 號中斷線 { exti_interrupt_flag_clear(EXTI_13); //清空標志 } }
- 喚醒后重新配置 PLL 系統(tǒng)時鐘
void systemclk_from_deepsleep(void) // deepsleep 喚醒后系統(tǒng)時鐘從內(nèi)部時鐘切換到 PLL 時鐘 { RCU_CTL |= RCU_CTL_PLLEN; //使能 PLL while(0U == (uint32_t)(RCU_CTL & RCU_CTL_PLLSTB)) //等待 PLL 穩(wěn)定 { } RCU_CFG0 &= ~RCU_CFG0_SCS; RCU_CFG0 |= RCU_CKSYSSRC_PLL; while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ //選擇 PLL 為系統(tǒng)時鐘 } }
11.5.PMU 使用注意事項
(1)深度睡眠模式 只要是外部中斷就能喚醒;
(2)從深度睡眠模式喚醒后,PLL 是沒有被使能,喚醒后需要配置 PLL,不然 MCU 系統(tǒng)時鐘就是內(nèi)部時鐘;
(3)進入 deepsleep 低功耗模式后,將未使用到的 IO 配置成模擬輸入模式,以降低芯片整體功耗。
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638773 -
mcu
+關(guān)注
關(guān)注
146文章
17347瀏覽量
352722 -
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307842 -
PMU
+關(guān)注
關(guān)注
1文章
109瀏覽量
21705 -
GD32
+關(guān)注
關(guān)注
7文章
416瀏覽量
24491
發(fā)布評論請先 登錄
相關(guān)推薦
評論