![wKgaomYwSqiAY_PQAAnl063z3JE116.png](https://file1.elecfans.com/web2/M00/DF/57/wKgaomYwSqiAY_PQAAnl063z3JE116.png)
5.1實(shí)驗(yàn)內(nèi)容
通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:
- PMU原理;
- 低功耗的進(jìn)入以及退出操作;
5.2實(shí)驗(yàn)原理
5.2.1PMU結(jié)構(gòu)原理
PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32F4xx系列MCU具有三個(gè)電源域,包括VDD/VDDA電源域、1.2V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電。在VDD/VDDA域中嵌入了一個(gè)LDO,用來(lái)為1.2V域供電。在備份域中有一個(gè)電源切換器,當(dāng)VDD/VDDA電源關(guān)閉時(shí),電源切換器可以將備份域的電源切換到VBAT引腳,此時(shí)備份域由VBAT引腳(電池)供電。
![wKgZomY5gg2AcintAAHEBzGu4g4126.png](https://file1.elecfans.com/web2/M00/E1/8A/wKgZomY5gg2AcintAAHEBzGu4g4126.png)
- VDD/VDDA電源域
VDD 域?yàn)?a href="http://www.delux-kingway.cn/tags/數(shù)字電源/" target="_blank">數(shù)字電源域包括HXTAL(高速外部晶體振蕩器)、LDO(電壓調(diào)節(jié)器)、POR / PDR(上電/掉電復(fù)位)、FWDGT(獨(dú)立看門(mén)狗定時(shí)器)和除PC13、PC14和PC15之外的所有PAD等等。另外,上圖中與PMU控制器連接的PA0、NRST、FWDGT以及RTC表示待機(jī)模式下的喚醒源。VDDA域?yàn)?a href="http://www.delux-kingway.cn/analog/" target="_blank">模擬電源域包括ADC / DAC(AD / DA轉(zhuǎn)換器)、IRC16M(內(nèi)部16M RC振蕩器)、IRC32K(內(nèi)部32KHz RC振蕩器)PLLs(鎖相環(huán))和LVD(低電壓檢測(cè)器)等等。
POR / PDR(上電/掉電復(fù)位) 電路檢測(cè)VDD / VDDA并在電壓低于特定閾值時(shí)產(chǎn)生電源復(fù)位信號(hào)復(fù)位除備份域之外的整個(gè)芯片。 下圖顯示了供電電壓和電源復(fù)位信號(hào)之間的關(guān)系。VPOR表示上電復(fù)位的閾值電壓,典型值約為2.45V,VPDR表示掉電復(fù)位的閾值電壓,典型值約為1.82V。遲滯電壓Vhyst值約為600mV。
![wKgaomY5giGAda55AADRnVzXv9Q116.png](https://file1.elecfans.com/web2/M00/E2/6A/wKgaomY5giGAda55AADRnVzXv9Q116.png)
GD32F4XX系列MCU具有LVD低電壓檢測(cè)功能,如下圖所示,LVD的功能是檢測(cè)VDD / VDDA供電電壓是否低于低電壓檢測(cè)閾值,該閾值由電源控制寄存器(PMU_CTL) 中的LVDT[2:0]位進(jìn)行配置。LVD通過(guò)LVDEN置位使能,位于電源狀態(tài)寄存器(PMU_CS) 中的LVDF位表示低電壓事件是否出現(xiàn),該事件連接至EXTI的第16線,用戶可以通過(guò)配置EXTI的第16線產(chǎn)生相應(yīng)的中斷。LVD中斷信號(hào)依賴于EXTI第16線的上升或下降沿配置。遲滯電壓Vhyst值為100mV。
![wKgaomY5giGAda55AADRnVzXv9Q116.png](https://file1.elecfans.com/web2/M00/E2/6A/wKgaomY5giGAda55AADRnVzXv9Q116.png)
|
- 1.2V電源域
1.2V 電源域?yàn)镃ortex?-M4內(nèi)核邏輯、AHB / APB外設(shè)、備份域和VDD / VDDA域的APB接口等供電。若系統(tǒng)系統(tǒng)工作在高頻狀態(tài)建議使能高驅(qū)模式。
- 電池備份域
電池備份域由內(nèi)部電源切換器來(lái)選擇VDD供電或VBAT(電池)供電,然后由VBAK為備份域供電,該備份域包含RTC(實(shí)時(shí)時(shí)鐘)、LXTAL(低速外部晶體振蕩器)、BPOR(備份域上電復(fù)位)、BREG(備份寄存器),以及PC13至PC15共3個(gè)BKPPAD。為了確保備份域中寄存器的內(nèi)容及RTC正常工作,當(dāng)VDD關(guān)閉時(shí),VBAT引腳可以連接至電池或其他等備份源供電。電源切換器是由VDD / VDDA域掉電復(fù)位電路控制的。對(duì)于沒(méi)有外部電池的應(yīng)用,建議將VBAT引腳通過(guò)100nF的外部陶瓷去耦電容連接到VDD引腳上。
|
若讀者有在VDD掉電情況下RTC繼續(xù)工作的應(yīng)用需求,需要VBAT引腳外接電池并使用LXTAL外部低頻晶振,這樣在VDD掉電的情況下,VBAT供電將會(huì)由VDD切換到VBAT,LXTAL和RTC均可正常工作,后續(xù)VDD上電后同步RTC寄存器即可獲取正確的RTC時(shí)間。
5.2.2低功耗模式
GD32F4xx系列MCU具有三種低功耗模式,分別為睡眠模式、深度睡眠模式和待機(jī)模式。
睡眠模式與 Cortex?-M4 的SLEEPING模式相對(duì)應(yīng)。在睡眠模式下,僅關(guān)閉Cortex?-M4的時(shí)鐘,如需進(jìn)入睡眠模式,只要清除Cortex?-M4系統(tǒng)控制寄存器中的SLEEPDEEP位,并執(zhí)行一條WFI或WFE指令即可。
深度睡眠模式與 Cortex?-M4 的SLEEPDEEP模式相對(duì)應(yīng)。在深度睡眠模式下,1.2V域中的所有時(shí)鐘全部關(guān)閉,IRC16M、HXTAL及PLLs也全部被禁用。SRAM和寄存器中的內(nèi)容被保留。根據(jù)PMU_CTL寄存器的LDOLP位的配置,可控制LDO工作在正常模式或低功耗模式。進(jìn)入深度睡眠模式之前,先將Cortex?-M4系統(tǒng)控制寄存器的SLEEPDEEP位置1,再清除PMU_CTL寄存器的STBMOD位,然后執(zhí)行WFI或WFE指令即可進(jìn)入深度睡眠模式。如果睡眠模式是通過(guò)執(zhí)行WFI指令進(jìn)入的, 任何來(lái)自EXTI的中斷可以將系統(tǒng)從深度睡眠模式中喚醒。如果睡眠模式是通過(guò)執(zhí)行WFE指令進(jìn)入的, 任何來(lái)自EXTI的事件可以將系統(tǒng)從深度睡眠模式中喚醒(如果SEVONPEND為1,任何來(lái)自EXTI的中斷都可以喚醒系統(tǒng),請(qǐng)參考Cortex?-M4技術(shù)手冊(cè))。 剛退出深度睡眠模式時(shí),IRC16M被選中作為系統(tǒng)時(shí)鐘。請(qǐng)注意,如果LDO工作在低功耗模式,那么喚醒時(shí)需額外的延時(shí)時(shí)間。
待機(jī)模式是基于 Cortex?-M4 的SLEEPDEEP模式實(shí)現(xiàn)的。在待機(jī)模式下,整個(gè)1.2V域全部停止供電,同時(shí)LDO和包括IRC16M、HXTAL和PLL也會(huì)被關(guān)閉。進(jìn)入待機(jī)模式前,先將Cortex?-M4系統(tǒng)控制寄存器的SLEEPDEEP位置1,再將PMU_CTL寄存器的STBMOD位置1,再清除PMU_CS寄存器的WUF位,然后執(zhí)行WFI或WFE指令,系統(tǒng)進(jìn)入待機(jī)模式,PMU_CS寄存器的STBF位狀態(tài)表示MCU是否已進(jìn)入待機(jī)模式。待機(jī)模式有四個(gè)喚醒源,包括來(lái)自NRST引腳的外部復(fù)位,RTC喚醒事件,包括RTC侵入事件、RTC鬧鐘事件、RTC時(shí)間戳事件或RTC喚醒事件,F(xiàn)WDGT復(fù)位,WKUP引腳的上升沿。待機(jī)模式可以達(dá)到最低的功耗,但喚醒時(shí)間最長(zhǎng)。另外,一旦進(jìn)入待機(jī)模式,SRAM和1.2V電源域寄存器(除了備份SRAM,當(dāng)BLDOON置位時(shí))的內(nèi)容都會(huì)丟失。退出待機(jī)模式時(shí),會(huì)發(fā)生上電復(fù)位,復(fù)位之后Cortex?-M4將從0x00000000地址開(kāi)始執(zhí)行指令代碼。
低功耗模式相關(guān)數(shù)據(jù)可參考下表,不同的低功耗模式是通過(guò)關(guān)閉不同時(shí)鐘以及電源來(lái)實(shí)現(xiàn)的,關(guān)閉的時(shí)鐘和電源越多,MCU所進(jìn)入的睡眠模式將會(huì)越深,功耗也會(huì)越低,帶來(lái)的喚醒時(shí)間也會(huì)越長(zhǎng),其喚醒源也會(huì)越少。睡眠模式是最淺的低功耗模式,僅關(guān)閉了CPU,代碼不再運(yùn)行,所有的中斷或事件均可喚醒,喚醒時(shí)間也最快;深度睡眠模式時(shí)中間的低功耗模式,關(guān)閉了1.2V電源域時(shí)鐘以及IRC8M/HXTAL/PLL,僅可通過(guò)EXTI中斷或事件喚醒,喚醒后需要重新配置系統(tǒng)時(shí)鐘;待機(jī)模式是功耗最低的低功耗模式,關(guān)閉了1.2V電源域電源以及IRC8M/HXTAL/PLL,僅可通過(guò)NRST/看門(mén)狗/RTC鬧鐘/WKUP引腳喚醒,喚醒后MCU將會(huì)復(fù)位重啟。
![wKgaomY5gxqACYmEAAOgPahmeNU525.png](https://file1.elecfans.com/web2/M00/E2/6B/wKgaomY5gxqACYmEAAOgPahmeNU525.png)
![wKgZomY5gyWASJchAAFQP66ffQg455.png](https://file1.elecfans.com/web2/M00/E1/8B/wKgZomY5gyWASJchAAFQP66ffQg455.png)
各種睡眠模式下的功耗可以參考數(shù)據(jù)手冊(cè)描述,睡眠模式下相較于同主頻模式下的運(yùn)行模式功耗減少約50%,深度睡眠和待機(jī)模式功耗更低,如下表所示,深度睡眠模式下功耗常溫典型值為1.3ma,待機(jī)模式下功耗常溫典型值為9uA。
|
![wKgZomY5gz2AVQToAAK1Zpu6brs843.png](https://file1.elecfans.com/web2/M00/E1/8B/wKgZomY5gz2AVQToAAK1Zpu6brs843.png)
5.3硬件設(shè)計(jì)
本例程stanby的喚醒使用到了PA0喚醒引腳,其電路如下所示。
![wKgaomY5g0-AOKq4AAFM1QyW4_s331.png](https://file1.elecfans.com/web2/M00/E2/6B/wKgaomY5g0-AOKq4AAFM1QyW4_s331.png)
5.4代碼解析
本例程實(shí)現(xiàn)deepsleep以及standby的進(jìn)入以及喚醒測(cè)試,首先我們來(lái)看下主函數(shù),如下所示。該主函數(shù)首先配置了系統(tǒng)主時(shí)鐘、延遲、打印和LED函數(shù),并打印Example of Low Power Test Demo。之后查詢是否進(jìn)入過(guò)Standby模式,如果進(jìn)入過(guò)Standby模式,表示當(dāng)前狀態(tài)為standby喚醒后的復(fù)位,則打印A reset event from Standby mode has occurred,并翻轉(zhuǎn)LED2,因而驗(yàn)證standby喚醒的時(shí)候,其現(xiàn)象可觀察到LED2的翻轉(zhuǎn)。之后使能wakeup引腳的喚醒以及USER按鍵的初始化,此時(shí)將wakeup KEY配置為中斷模式。在while(1)中,查詢USER KEY按下的時(shí)間,如果按下超過(guò)3S,則打印Entering Standby Mode.并進(jìn)入standby模式,如果USER KEY按下不超過(guò)3S,則打印Enter Deepsleep mode.并進(jìn)入Deepsleep模式,從deepsleep模式喚醒后需要重新配置時(shí)鐘,打印Exit Deepsleep mode.并翻轉(zhuǎn)LED1。Standby的喚醒使用PA0 wakeup引腳,deepsleep的喚醒可使用任何EXTI中斷,本實(shí)例中使用wakeup按鍵中斷喚醒。
C int main(void) { rcu_periph_clock_enable(RCU_PMU); driver_init(); //注冊(cè)按鍵掃描 driver_tick_handle[0].tick_value=10; driver_tick_handle[0].tick_task_callback=key_scan_10ms_callhandle; bsp_uart_init(&BOARD_UART); /* 板載UART初始化 */ printf_log("Example of Low Power Test Demo.\r\n"); delay_ms(2000); bsp_led_group_init(); /* 判斷是否進(jìn)入過(guò)Stanby模式 */ if(pmu_flag_get(PMU_FLAG_RESET_STANDBY)==SET) { printf_log("A reset event from Standby mode has occurred.\r\n"); bsp_led_toggle(&LED2); pmu_flag_clear(PMU_FLAG_RESET_STANDBY); } /* 配置PA0 Wakeup喚醒功能 */ pmu_wakeup_pin_enable(); WKUP_KEY.key_gpio->gpio_mode = INT_HIGH; WKUP_KEY.key_gpio->int_callback = WKUP_KEY_IRQ_callback; bsp_key_group_init(); nvic_irq_enable(EXTI0_IRQn,0,0); while (1) { /* 檢測(cè)KEY1按鍵是否被按下,如果按下,進(jìn)入standby模式 */ if(USER_KEY.press_timerms >= PRESS_3000MS) { USER_KEY.press_timerms=PRESS_NONE; printf_log("Entering Standby Mode.\r\n"); bsp_led_toggle(&LED2); pmu_to_standbymode(WFI_CMD); } /* 檢測(cè)KEY2按鍵是否被按下,如果按下,進(jìn)入Deepsleep模式 */ if(USER_KEY.press_timerms >= PRESS_50MS) { USER_KEY.press_timerms=PRESS_NONE; printf_log("Enter Deepsleep mode.\r\n"); bsp_led_toggle(&LED1); bsp_lcd_backlight_off(); pmu_to_deepsleepmode(PMU_LDO_NORMAL, PMU_LOWDRIVER_DISABLE, WFI_CMD); bsp_lcd_backlight_on(); printf_log("Exit Deepsleep mode.\r\n"); bsp_led_toggle(&LED1); } } } |
5.5實(shí)驗(yàn)結(jié)果
將本實(shí)驗(yàn)歷程燒錄到紫藤派開(kāi)發(fā)板中,按下user key按鍵超過(guò)3S,松開(kāi)后MCU將進(jìn)入standby模式,并打印Entering Standby Mode.,然后按下wakeup按鍵,將從stanby模式喚醒,打印A reset event from Standby mode has occurred.并翻轉(zhuǎn)LED2,之后短按USER KEY,將打印Enter Deepsleep mode.進(jìn)入deepsleep模式,然后按下wakeup按鍵將從deepsleep模式下喚醒,喚醒后重新配置時(shí)鐘,打印Exit Deepsleep mode.并將LED1翻轉(zhuǎn)。
具體現(xiàn)象如下所示。
![wKgZomY5g36AYlDGACaIovnJVOs240.png](https://file1.elecfans.com/web2/M00/E1/8B/wKgZomY5g36AYlDGACaIovnJVOs240.png)
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638774 -
低功耗
+關(guān)注
關(guān)注
10文章
2419瀏覽量
103907 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5124瀏覽量
98276 -
PMU
+關(guān)注
關(guān)注
1文章
109瀏覽量
21705 -
GD32
+關(guān)注
關(guān)注
7文章
416瀏覽量
24491
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第九講 USART-printf打印實(shí)驗(yàn)
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第九<b class='flag-5'>講</b> USART-printf打印<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/E5/D2/wKgaomZBd4yALE4KAAAvGTwv8Y8126.png)
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第十一講 SPI-SPI NOR FLASH讀寫(xiě)實(shí)驗(yàn)
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第十一講 SPI-SPI NOR FLASH讀寫(xiě)<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/E6/51/wKgZomZGuYCAbqxgAAAj5ISjOEU463.png)
使用GD32F470編譯drv_adc.c時(shí)報(bào)錯(cuò)怎么解決?
YL-51開(kāi)發(fā)板使用手冊(cè)
開(kāi)發(fā)板燒寫(xiě)測(cè)試使用手冊(cè)
APT32F102 開(kāi)發(fā)板使用手冊(cè)
【GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第五講 PMU-低功耗實(shí)驗(yàn)
![【<b class='flag-5'>GD</b>32H757Z海棠<b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】<b class='flag-5'>第五</b><b class='flag-5'>講</b> <b class='flag-5'>PMU-</b><b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/D1/66/wKgZomYjGyqABxaWAAA5B03r_nE821.png)
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第二講 GPIO-按鍵查詢實(shí)驗(yàn)
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第二<b class='flag-5'>講</b> GPIO-按鍵查詢<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/DE/7F/wKgZomYwZ-2AMDLHAAAaqUkF6cI459.png)
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第八講 ADC-規(guī)則組多通道采樣實(shí)驗(yàn)
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第八<b class='flag-5'>講</b> ADC-規(guī)則組多通道采樣<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/E4/94/wKgZomZAItOAZWmeAAAqAQp_IEg785.png)
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第十三講 USB_虛擬鍵盤(pán)實(shí)驗(yàn)
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第十三講 USB_虛擬鍵盤(pán)<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/E6/E6/wKgZomZJXQ-AfXsgAABAaZrUO3I092.png)
【GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第六講 PMU-低功耗實(shí)驗(yàn)講
![【<b class='flag-5'>GD32F</b>303紅楓<b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第六<b class='flag-5'>講</b> <b class='flag-5'>PMU-</b><b class='flag-5'>低功耗</b><b class='flag-5'>實(shí)驗(yàn)</b><b class='flag-5'>講</b>](https://file1.elecfans.com/web2/M00/EB/E3/wKgaomZb1SCAAwzaAAAipmlhau8005.png)
【GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第二十講 SPI-SPI NAND FLASH讀寫(xiě)實(shí)驗(yàn)
![【<b class='flag-5'>GD32F</b>303紅楓<b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第二十<b class='flag-5'>講</b> SPI-SPI NAND FLASH讀寫(xiě)<b class='flag-5'>實(shí)驗(yàn)</b>](https://file1.elecfans.com/web2/M00/F1/AD/wKgaomZzisiAamI-AABGtAQwDgo073.png)
評(píng)論