0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【GD32F470紫藤派開發(fā)板使用手冊】第五講 PMU-低功耗實驗

聚沃科技 ? 2024-05-07 09:29 ? 次閱讀
wKgaomYwSqiAY_PQAAnl063z3JE116.png

5.1實驗內(nèi)容

通過本實驗主要學(xué)習(xí)以下內(nèi)容:

  • PMU原理;
  • 低功耗的進入以及退出操作;

5.2實驗原理

5.2.1PMU結(jié)構(gòu)原理

PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32F4xx系列MCU具有三個電源域,包括VDD/VDDA電源域、1.2V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電。在VDD/VDDA域中嵌入了一個LDO,用來為1.2V域供電。在備份域中有一個電源切換器,當(dāng)VDD/VDDA電源關(guān)閉時,電源切換器可以將備份域的電源切換到VBAT引腳,此時備份域由VBAT引腳(電池)供電。

wKgZomY5gg2AcintAAHEBzGu4g4126.png

  1. VDD/VDDA電源域

VDD 域為數(shù)字電源域包括HXTAL(高速外部晶體振蕩器)、LDO(電壓調(diào)節(jié)器)、POR / PDR(上電/掉電復(fù)位)、FWDGT(獨立看門狗定時器)和除PC13、PC14和PC15之外的所有PAD等等。另外,上圖中與PMU控制器連接的PA0、NRST、FWDGT以及RTC表示待機模式下的喚醒源。VDDA域為模擬電源域包括ADC / DAC(AD / DA轉(zhuǎn)換器)、IRC16M(內(nèi)部16M RC振蕩器)、IRC32K(內(nèi)部32KHz RC振蕩器)PLLs(鎖相環(huán))和LVD(低電壓檢測器)等等。

POR / PDR(上電/掉電復(fù)位) 電路檢測VDD / VDDA并在電壓低于特定閾值時產(chǎn)生電源復(fù)位信號復(fù)位除備份域之外的整個芯片。 下圖顯示了供電電壓和電源復(fù)位信號之間的關(guān)系。VPOR表示上電復(fù)位的閾值電壓,典型值約為2.45V,VPDR表示掉電復(fù)位的閾值電壓,典型值約為1.82V。遲滯電壓Vhyst值約為600mV。

wKgaomY5giGAda55AADRnVzXv9Q116.png

GD32F4XX系列MCU具有LVD低電壓檢測功能,如下圖所示,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中斷信號依賴于EXTI第16線的上升或下降沿配置。遲滯電壓Vhyst值為100mV。

wKgaomY5giGAda55AADRnVzXv9Q116.png

  • 注意:LVD一般可用于欠壓異常處理或者用于掉電檢測。
  1. 1.2V電源域

1.2V 電源域為Cortex?-M4內(nèi)核邏輯、AHB / APB外設(shè)、備份域和VDD / VDDA域的APB接口等供電。若系統(tǒng)系統(tǒng)工作在高頻狀態(tài)建議使能高驅(qū)模式。

  1. 電池備份域

電池備份域由內(nèi)部電源切換器來選擇VDD供電或VBAT(電池)供電,然后由VBAK為備份域供電,該備份域包含RTC(實時時鐘)、LXTAL(低速外部晶體振蕩器)、BPOR(備份域上電復(fù)位)、BREG(備份寄存器),以及PC13至PC15共3個BKPPAD。為了確保備份域中寄存器的內(nèi)容及RTC正常工作,當(dāng)VDD關(guān)閉時,VBAT引腳可以連接至電池或其他等備份源供電。電源切換器是由VDD / VDDA域掉電復(fù)位電路控制的。對于沒有外部電池的應(yīng)用,建議將VBAT引腳通過100nF的外部陶瓷去耦電容連接到VDD引腳上。

  • 注意: 由于PC13至PC15引腳是通過電源切換器供電的,電源切換器僅可通過小電流,因此當(dāng)PC13至PC15的GPIO口在輸出模式時,其工作的速度不能超過2MHz(最大負載為30Pf)。

若讀者有在VDD掉電情況下RTC繼續(xù)工作的應(yīng)用需求,需要VBAT引腳外接電池并使用LXTAL外部低頻晶振,這樣在VDD掉電的情況下,VBAT供電將會由VDD切換到VBAT,LXTAL和RTC均可正常工作,后續(xù)VDD上電后同步RTC寄存器即可獲取正確的RTC時間。

5.2.2低功耗模式

GD32F4xx系列MCU具有三種低功耗模式,分別為睡眠模式、深度睡眠模式和待機模式。

睡眠模式與 Cortex?-M4 的SLEEPING模式相對應(yīng)。在睡眠模式下,僅關(guān)閉Cortex?-M4的時鐘,如需進入睡眠模式,只要清除Cortex?-M4系統(tǒng)控制寄存器中的SLEEPDEEP位,并執(zhí)行一條WFI或WFE指令即可。

深度睡眠模式與 Cortex?-M4 的SLEEPDEEP模式相對應(yīng)。在深度睡眠模式下,1.2V域中的所有時鐘全部關(guān)閉,IRC16M、HXTAL及PLLs也全部被禁用。SRAM和寄存器中的內(nèi)容被保留。根據(jù)PMU_CTL寄存器的LDOLP位的配置,可控制LDO工作在正常模式或低功耗模式。進入深度睡眠模式之前,先將Cortex?-M4系統(tǒng)控制寄存器的SLEEPDEEP位置1,再清除PMU_CTL寄存器的STBMOD位,然后執(zhí)行WFI或WFE指令即可進入深度睡眠模式。如果睡眠模式是通過執(zhí)行WFI指令進入的, 任何來自EXTI的中斷可以將系統(tǒng)從深度睡眠模式中喚醒。如果睡眠模式是通過執(zhí)行WFE指令進入的, 任何來自EXTI的事件可以將系統(tǒng)從深度睡眠模式中喚醒(如果SEVONPEND為1,任何來自EXTI的中斷都可以喚醒系統(tǒng),請參考Cortex?-M4技術(shù)手冊)。 剛退出深度睡眠模式時,IRC16M被選中作為系統(tǒng)時鐘。請注意,如果LDO工作在低功耗模式,那么喚醒時需額外的延時時間。

待機模式是基于 Cortex?-M4 的SLEEPDEEP模式實現(xiàn)的。在待機模式下,整個1.2V域全部停止供電,同時LDO和包括IRC16M、HXTAL和PLL也會被關(guān)閉。進入待機模式前,先將Cortex?-M4系統(tǒng)控制寄存器的SLEEPDEEP位置1,再將PMU_CTL寄存器的STBMOD位置1,再清除PMU_CS寄存器的WUF位,然后執(zhí)行WFI或WFE指令,系統(tǒng)進入待機模式,PMU_CS寄存器的STBF位狀態(tài)表示MCU是否已進入待機模式。待機模式有四個喚醒源,包括來自NRST引腳的外部復(fù)位,RTC喚醒事件,包括RTC侵入事件、RTC鬧鐘事件、RTC時間戳事件或RTC喚醒事件,F(xiàn)WDGT復(fù)位,WKUP引腳的上升沿。待機模式可以達到最低的功耗,但喚醒時間最長。另外,一旦進入待機模式,SRAM和1.2V電源域寄存器(除了備份SRAM,當(dāng)BLDOON置位時)的內(nèi)容都會丟失。退出待機模式時,會發(fā)生上電復(fù)位,復(fù)位之后Cortex?-M4將從0x00000000地址開始執(zhí)行指令代碼。

低功耗模式相關(guān)數(shù)據(jù)可參考下表,不同的低功耗模式是通過關(guān)閉不同時鐘以及電源來實現(xiàn)的,關(guān)閉的時鐘和電源越多,MCU所進入的睡眠模式將會越深,功耗也會越低,帶來的喚醒時間也會越長,其喚醒源也會越少。睡眠模式是最淺的低功耗模式,僅關(guān)閉了CPU,代碼不再運行,所有的中斷或事件均可喚醒,喚醒時間也最快;深度睡眠模式時中間的低功耗模式,關(guān)閉了1.2V電源域時鐘以及IRC8M/HXTAL/PLL,僅可通過EXTI中斷或事件喚醒,喚醒后需要重新配置系統(tǒng)時鐘;待機模式是功耗最低的低功耗模式,關(guān)閉了1.2V電源域電源以及IRC8M/HXTAL/PLL,僅可通過NRST/看門狗/RTC鬧鐘/WKUP引腳喚醒,喚醒后MCU將會復(fù)位重啟。

wKgaomY5gxqACYmEAAOgPahmeNU525.png

wKgZomY5gyWASJchAAFQP66ffQg455.png

各種睡眠模式下的功耗可以參考數(shù)據(jù)手冊描述,睡眠模式下相較于同主頻模式下的運行模式功耗減少約50%,深度睡眠和待機模式功耗更低,如下表所示,深度睡眠模式下功耗常溫典型值為1.3ma,待機模式下功耗常溫典型值為9uA。

  • 注意:由于深度睡眠模式具有較低的功耗,喚醒后繼續(xù)從斷點處執(zhí)行,因而具有更廣泛的應(yīng)用場景,但需注意若需達到較一致的MCU深度睡眠功耗,需要將系統(tǒng)中未使用的MCU引腳均配置為模擬輸入狀態(tài),包括芯片內(nèi)部未引出的pad。
wKgZomY5gz2AVQToAAK1Zpu6brs843.pngNote:中間為典型數(shù)值,右側(cè)為常溫下的最大數(shù)值。

5.3硬件設(shè)計

本例程stanby的喚醒使用到了PA0喚醒引腳,其電路如下所示。

wKgaomY5g0-AOKq4AAFM1QyW4_s331.png

5.4代碼解析

本例程實現(xiàn)deepsleep以及standby的進入以及喚醒測試,首先我們來看下主函數(shù),如下所示。該主函數(shù)首先配置了系統(tǒng)主時鐘、延遲、打印和LED函數(shù),并打印Example of Low Power Test Demo。之后查詢是否進入過Standby模式,如果進入過Standby模式,表示當(dāng)前狀態(tài)為standby喚醒后的復(fù)位,則打印A reset event from Standby mode has occurred,并翻轉(zhuǎn)LED2,因而驗證standby喚醒的時候,其現(xiàn)象可觀察到LED2的翻轉(zhuǎn)。之后使能wakeup引腳的喚醒以及USER按鍵的初始化,此時將wakeup KEY配置為中斷模式。在while(1)中,查詢USER KEY按下的時間,如果按下超過3S,則打印Entering Standby Mode.并進入standby模式,如果USER KEY按下不超過3S,則打印Enter Deepsleep mode.并進入Deepsleep模式,從deepsleep模式喚醒后需要重新配置時鐘,打印Exit Deepsleep mode.并翻轉(zhuǎn)LED1。Standby的喚醒使用PA0 wakeup引腳,deepsleep的喚醒可使用任何EXTI中斷,本實例中使用wakeup按鍵中斷喚醒。

C
int main(void)
{
rcu_periph_clock_enable(RCU_PMU);
driver_init();
//注冊按鍵掃描
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();

/* 判斷是否進入過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)
{
/* 檢測KEY1按鍵是否被按下,如果按下,進入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);
}
/* 檢測KEY2按鍵是否被按下,如果按下,進入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實驗結(jié)果

將本實驗歷程燒錄到紫藤派開發(fā)板中,按下user key按鍵超過3S,松開后MCU將進入standby模式,并打印Entering Standby Mode.,然后按下wakeup按鍵,將從stanby模式喚醒,打印A reset event from Standby mode has occurred.并翻轉(zhuǎn)LED2,之后短按USER KEY,將打印Enter Deepsleep mode.進入deepsleep模式,然后按下wakeup按鍵將從deepsleep模式下喚醒,喚醒后重新配置時鐘,打印Exit Deepsleep mode.并將LED1翻轉(zhuǎn)。

具體現(xiàn)象如下所示。

wKgZomY5g36AYlDGACaIovnJVOs240.png

教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631958
  • 低功耗
    +關(guān)注

    關(guān)注

    10

    文章

    2352

    瀏覽量

    103539
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4895

    瀏覽量

    97055
  • PMU
    PMU
    +關(guān)注

    關(guān)注

    1

    文章

    107

    瀏覽量

    21550
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24106
收藏 人收藏

    評論

    相關(guān)推薦

    GD32F470紫藤開發(fā)板使用手冊】第九 USART-printf打印實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: 串口簡介 GD32F470串口工作原理 使用printf打印信息
    的頭像 發(fā)表于 05-13 10:14 ?1555次閱讀
    【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第九<b class='flag-5'>講</b>  USART-printf打印<b class='flag-5'>實驗</b>

    GD32F470紫藤開發(fā)板使用手冊】第十一講 SPI-SPI NOR FLASH讀寫實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: ?SPI簡介 ?GD32F470 SPI簡介 ?SPI NOR FLASH——GD25Q32ESIGR簡介 ?使用GD32F470 SPI接口實現(xiàn)對
    的頭像 發(fā)表于 05-17 09:57 ?1587次閱讀
    【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十一講 SPI-SPI NOR FLASH讀寫<b class='flag-5'>實驗</b>

    現(xiàn)有的BSP工程可以直接在GD32F470上進行開發(fā)

    大家好:有關(guān)于GD32F470的BSP工程的問題咨詢,我在GD官網(wǎng)上查照資料了解470和450是很相似的,目前因為項目需要使用的470芯片,想使用rt-thread的操作系統(tǒng),但是不知
    發(fā)表于 08-01 10:39

    YL-51開發(fā)板使用手冊

    YL-51開發(fā)板使用手冊,YL-51開發(fā)板使用手冊YL-51開發(fā)板使用手冊YL-51
    發(fā)表于 05-10 16:31 ?21次下載

    開發(fā)板燒寫測試使用手冊

    開發(fā)板燒寫測試使用手冊,有需要的下來看看
    發(fā)表于 06-03 14:30 ?0次下載

    51開發(fā)板使用手冊

    51開發(fā)板使用手冊,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-23 15:45 ?11次下載

    KC705開發(fā)板英文使用手冊

    KC705開發(fā)板英文使用手冊
    發(fā)表于 11-01 10:19 ?4次下載

    iTOP-3399開發(fā)板使用手冊大更新

    iTOP-3399開發(fā)板使用手冊大更新
    的頭像 發(fā)表于 12-10 15:46 ?1306次閱讀
    iTOP-3399<b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>大更新

    APT32F102 開發(fā)板使用手冊

    電子發(fā)燒友網(wǎng)站提供《APT32F102 開發(fā)板使用手冊.pdf》資料免費下載
    發(fā)表于 04-16 09:07 ?0次下載

    GD32H757Z海棠開發(fā)板使用手冊第五 PMU-低功耗實驗

    PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32H7XX系列MCU具有三個電源域,包括VDD/VDDA電源域、0.9V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電
    的頭像 發(fā)表于 04-20 09:32 ?835次閱讀
    【<b class='flag-5'>GD</b>32H757Z海棠<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</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'>實驗</b>

    GD32F470紫藤開發(fā)板使用手冊】第二 GPIO-按鍵查詢實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: GPIO輸入功能原理; 按鍵查詢輸入檢測原理;
    的頭像 發(fā)表于 04-30 11:39 ?596次閱讀
    【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第二<b class='flag-5'>講</b> GPIO-按鍵查詢<b class='flag-5'>實驗</b>

    GD32F470紫藤開發(fā)板使用手冊】第八 ADC-規(guī)則組多通道采樣實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: ?ADC的簡介 ?GD32F470 ADC工作原理 ?DMA原理 ?規(guī)則組多通道循環(huán)采樣
    的頭像 發(fā)表于 05-12 10:00 ?642次閱讀
    【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第八<b class='flag-5'>講</b> ADC-規(guī)則組多通道采樣<b class='flag-5'>實驗</b>

    GD32F470紫藤開發(fā)板使用手冊】第十三講 USB_虛擬鍵盤實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: ?USB協(xié)議基本原理 ?GD32F4xx USBFS的使用 ?虛擬鍵盤的協(xié)議原理及使用
    的頭像 發(fā)表于 05-19 09:59 ?900次閱讀
    【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十三講 USB_虛擬鍵盤<b class='flag-5'>實驗</b>

    GD32F303紅楓開發(fā)板使用手冊】第六 PMU-低功耗實驗

    PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32F303系列MCU具有三個電源域,包括VDD/VDDA電源域、1.2V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電。在
    的頭像 發(fā)表于 06-02 10:12 ?607次閱讀
    【<b class='flag-5'>GD32F</b>303紅楓<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</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'>實驗</b><b class='flag-5'>講</b>

    GD32F303紅楓開發(fā)板使用手冊】第二十 SPI-SPI NAND FLASH讀寫實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: ?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發(fā)表于 06-20 09:50 ?731次閱讀
    【<b class='flag-5'>GD32F</b>303紅楓<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第二十<b class='flag-5'>講</b> SPI-SPI NAND FLASH讀寫<b class='flag-5'>實驗</b>