衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

【GD32F303紅楓派開發板使用手冊】第六講 PMU-低功耗實驗講

聚沃科技 ? 2024-06-02 10:12 ? 次閱讀
wKgaomZVdiiAfR9BAB3mDFhHnZc972.png

6.1實驗內容

通過本實驗主要學習以下內容:

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

6.2實驗原理

6.2.1PMU結構原理

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

wKgZomZb0-CADFQYAAGLoYlIrOs369.png
  1. VDD/VDDA電源域

VDD 域為數字電源域包括HXTAL(高速外部晶體振蕩器)、LDO(電壓調節器)、POR / PDR(上電/掉電復位)、FWDGT(獨立看門狗定時器)和除PC13、PC14和PC15之外的所有PAD等等。另外,上圖中與PMU控制器連接的PA0、NRST、FWDGT以及RTC表示待機模式下的喚醒源。VDDA域為模擬電源域包括ADC / DAC(AD / DA轉換器)、IRC8M(內部8M RC振蕩器)、IRC48M(內部48M RC振蕩器)、IRC40K(內部40KHz RC振蕩器)PLLs(鎖相環)和LVD(低電壓檢測器)等等。

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

  • 注意:當電源電壓高于VPOR后,MCU內部會延遲2ms后再拉高NRST,MCU才會正式啟動,此時可確保MCU啟動時刻VDD電壓已高于VPOR。
wKgaomZb0_mAA6b-AACVlZvsvCw754.png

GD32F303系列MCU具有LVD低電壓檢測功能,如下圖所示,LVD的功能是檢測VDD / VDDA供電電壓是否低于低電壓檢測閾值,該閾值由電源控制寄存器(PMU_CTL) 中的LVDT[2:0]位進行配置。LVD通過LVDEN置位使能,位于電源狀態寄存器(PMU_CS) 中的LVDF位表示低電壓事件是否出現,該事件連接至EXTI的第16線,用戶可以通過配置EXTI的第16線產生相應的中斷。LVD中斷信號依賴于EXTI第16線的上升或下降沿配置。遲滯電壓Vhyst值為100mV。

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

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

  1. 電池備份域

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

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

電池備份域中具有84字節備份數據寄存器,該備份數據寄存器可用于存儲用戶數據,且在掉電復位以及系統復位情況下數據不丟失,僅在發生侵入事件時數據會被擦除。

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

6.2.2低功耗模式

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

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

深度睡眠模式與 Cortex?-M4 的SLEEPDEEP模式相對應,在深度睡眠模式下,1.2V域中的所有時鐘全部關閉,IRC8M、HXTAL及PLLs也全部被禁用,SRAM和寄存器中的內容被保留,根據PMU_CTL寄存器的LDOLP位的配置,可控制LDO工作在正常模式或低功耗模式。進入深度睡眠模式之前,先將Cortex?-M4系統控制寄存器的SLEEPDEEP位置1,再清除PMU_CTL寄存器的STBMOD位,然后執行WFI或WFE指令即可進入深度睡眠模式。

待機模式是基于 Cortex?-M4 的SLEEPDEEP模式實現的。在待機模式下,整個1.2V域全部停止供電,同時LDO和包括IRC8M、HXTAL和PLL也會被關閉。進入待機模式前,先將Cortex?-M4系統控制寄存器的SLEEPDEEP位置1,再將PMU_CTL寄存器的STBMOD位置1,再清除PMU_CS寄存器的WUF位,然后執行WFI或WFE指令,系統進入待機模式。

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

wKgaomZb1DCAEqCFAAGGXt9wOEA491.pngwKgZomZb1DuAaVTbAAHLfwiuMfY085.png

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

  • 注意:由于深度睡眠模式具有較低的功耗,喚醒后繼續從斷點處執行,因而具有更廣泛的應用場景,但需注意若需達到較一致的MCU深度睡眠功耗,需要將系統中未使用的MCU引腳均配置為模擬輸入狀態,包括芯片內部未引出的pad。
wKgaomZb1FOAZ05jAAMFn1LoGMk335.png

Note:左側是常溫下的典型數值,中間為85度下的典型數值,右側為常溫下的最大數值。

6.3硬件設計

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

wKgaomZb1GyAc3L2AABSpdE9gtc974.png

6.4代碼解析

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

C int main(void) { rcu_periph_clock_enable(RCU_PMU); rcu_system_clk_config_120M(); driver_init(); bsp_uart_init(&BOARD_UART); /* 板載UART初始化 */ printf("Example of Low Power Test Demo.\r\n"); delay_ms(2000); bsp_led_group_init(); if(pmu_flag_get(PMU_FLAG_RESET_STANDBY)==SET) { printf("A reset event from Standby mode has occurred.\r\n"); bsp_led_toggle(&LED0); pmu_flag_clear(PMU_FLAG_RESET_STANDBY); } rcu_all_reset_flag_clear(); pmu_wakeup_pin_enable(); KEY0.key_gpio->gpio_mode = INT_HIGH; KEY0.key_gpio->int_callback = key0_IRQ_callback; bsp_key_group_init(); nvic_irq_enable(EXTI2_IRQn,0,0); while (1) { if(bsp_key_state_get(&KEY1)!=RESET) { printf("Entering Standby Mode.\r\n"); bsp_led_toggle(&LED0); pmu_to_standbymode(WFI_CMD); } if(bsp_key_state_get(&KEY2)!=RESET) { printf("Enter Deepsleep mode.\r\n"); bsp_led_toggle(&LED1); config_allgpio_into_analog(); bsp_key_group_init(); pmu_to_deepsleepmode(PMU_LDO_NORMAL, PMU_LOWDRIVER_DISABLE, WFI_CMD); bsp_led_group_init(); bsp_uart_init(&BOARD_UART); /* 板載UART初始化 */ printf("Exit Deepsleep mode.\r\n"); bsp_led_toggle(&LED1); } } }

需要注意,進入deepsleep之前需要將不用的GPIO全部配置為模擬輸入的模式,為了得到更為一致且較低的功耗,其配置函數如下。

在配置所有IO為模擬輸入之后,如果有需要保持GPIO狀態的引腳,需要配置后再進入deepsleep,如例程中的按鍵引腳,因為需要按鍵喚醒deep sleep。

C void config_allgpio_into_analog(void) { rcu_periph_clock_enable( RCU_GPIOA ); rcu_periph_clock_enable( RCU_GPIOB ); rcu_periph_clock_enable( RCU_GPIOC ); rcu_periph_clock_enable( RCU_GPIOD ); rcu_periph_clock_enable( RCU_GPIOE ); rcu_periph_clock_enable( RCU_GPIOF ); rcu_periph_clock_enable( RCU_GPIOG ); rcu_periph_clock_enable( RCU_AF ); GPIO_CTL0( GPIOA ) = 0x0 ; GPIO_CTL1( GPIOA ) &= 0xFFF00000 ; GPIO_CTL0( GPIOB ) &= 0x000FF000 ; GPIO_CTL1( GPIOB ) = 0x0 ; GPIO_CTL0( GPIOC ) = 0x0 ; GPIO_CTL1( GPIOC ) = 0x0 ; GPIO_CTL0( GPIOD ) = 0x0 ; GPIO_CTL1( GPIOD ) = 0x0 ; GPIO_CTL0( GPIOE ) = 0x0 ; GPIO_CTL1( GPIOE ) = 0x0; GPIO_CTL0( GPIOF ) = 0x0 ; GPIO_CTL1( GPIOF ) = 0x0; GPIO_CTL0( GPIOG ) = 0x0 ; GPIO_CTL1( GPIOG ) = 0x0 ; RCU_AHBEN = 0; RCU_APB2EN = 0; RCU_APB1EN = 0; rcu_periph_clock_disable( RCU_GPIOA ); rcu_periph_clock_disable( RCU_GPIOB ); rcu_periph_clock_disable( RCU_GPIOC ); rcu_periph_clock_disable( RCU_GPIOD ); rcu_periph_clock_disable( RCU_GPIOE ); rcu_periph_clock_disable( RCU_GPIOF ); rcu_periph_clock_disable( RCU_GPIOG ); rcu_periph_clock_disable( RCU_AF ); }

6.5實驗結果

將本實驗歷程燒錄到紅楓派實驗板中,按下KEY1按鍵將進入standby模式,并打印Entering Standby Mode.,然后按下wakeup按鍵,將從stanby模式喚醒,打印A reset event from Standby mode has occurred.并翻轉LED0,之后按下KEY2按鍵將打印Enter Deepsleep mode.進入deepsleep模式,然后按下KEY0按鍵將從deepsleep模式下喚醒,喚醒后重新配置時鐘,打印Exit Deepsleep mode.并將LED1翻轉。

具體現象如下所示。

wKgZomZb0p6ADaUfAABe7izWiVg635.png

教程GD32 MCU方案商聚沃科技原創發布,了解更多GD32 MCU教程,關注聚沃科技官網

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638533
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307663
  • 開發板
    +關注

    關注

    25

    文章

    5121

    瀏覽量

    98193
  • PMU
    PMU
    +關注

    關注

    1

    文章

    109

    瀏覽量

    21695
  • GD32F3
    +關注

    關注

    0

    文章

    11

    瀏覽量

    3863
收藏 人收藏

    評論

    相關推薦

    GD32F303】星空介紹

    一、開發板介紹星空GD開發板是由旗點科技推出的一款GD32開發板,板載
    發表于 09-11 17:55

    【星空GD32F303開發板試用體驗】開發記錄匯總

    本帖最后由 申小林一號 于 2021-10-15 14:47 編輯 開貼日期:2021年10月11日該貼主要是用于記錄星空開發板使用記錄以及學習GD32F303芯片的一個過程,將所有的
    發表于 10-11 16:09

    【星空GD32F303開發板試用體驗】開箱+環境搭建

    本帖最后由 lustao 于 2021-10-19 09:29 編輯 感謝 發燒友學院以及廣州旗點智能科技有限公司為我和孩子提供此產品星空GD32F303開發板。收到了星空
    發表于 10-18 14:15

    【星空GD32F303開發板試用體驗】開箱+環境搭建

    https://bbs.elecfans.com/jishu_2179209_1_1.html感謝 發燒友學院以及廣州旗點智能科技有限公司為我和孩子提供此產品星空gd32F303開發板。收到了星空
    發表于 11-02 15:36

    【星空GD32F303開發板試用體驗】+板卡概覽

    本帖最后由 cooldog123pp 于 2021-11-6 21:07 編輯 星空GD開發板是由旗點科技推出的一款GD32開發板
    發表于 11-06 21:05

    星空GD32F303開發板的相關資料下載

    一、開發板介紹星空GD開發板是由旗點科技推出的一款GD32開發板,板載
    發表于 12-10 08:27

    STM32CUBEMX開發GD32F303(14)----IIC之配置OLED

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。
    的頭像 發表于 07-26 13:52 ?2129次閱讀
    STM32CUBEMX<b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(14)----IIC之配置OLED

    GD32F303固件庫開發

    的可以加群申請:615061293 。 GD32F303固件庫開發(1)----前期準備與燒錄 使用GDLINK、jlink、串口下載程序到GD芯片。 [https://blog.csdn.net
    的頭像 發表于 07-27 09:27 ?1265次閱讀
    <b class='flag-5'>GD32F303</b>固件庫<b class='flag-5'>開發</b>

    GD32F303 低功耗模式要點

    我們都知道,MCU有低功耗模式,比如GD32F303芯片,就有Sleep、Deepsleep和Standby三種模式。關于這三種模式的具體使用方法,小伙伴們可以參考《GD32F30x系列用戶
    的頭像 發表于 01-17 09:40 ?2617次閱讀
    <b class='flag-5'>GD32F303</b> <b class='flag-5'>低功耗</b>模式要點

    GD32F470紫藤開發板使用手冊】第五 PMU-低功耗實驗

    通過本實驗主要學習以下內容: PMU原理; 低功耗的進入以及退出操作
    的頭像 發表于 05-07 09:29 ?797次閱讀
    【<b class='flag-5'>GD32F</b>470紫藤<b class='flag-5'>派</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>

    GD32F303紅楓開發板使用手冊】第二 GPIO-流水燈實驗

    GD32F303系列MCU最多可支持?112?個通用I/O?引腳(GPIO),分別為?PA0 ~ PA15,?PB0 ~ PB15,?PC0 ~ PC15,PD0 ~ PD15,?PE0
    的頭像 發表于 05-29 10:02 ?1904次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b><b class='flag-5'>使用手冊</b>】第二<b class='flag-5'>講</b> GPIO-流水燈<b class='flag-5'>實驗</b>

    GD32F303紅楓開發板使用手冊】第三 GPIO-按鍵查詢檢測實驗

    GD32F303系列MCU GPIO輸入配置結構如下圖所示,輸入可配置上下拉電阻,通過施密特觸發器后可通過備用功能輸入或者通過輸入狀態寄存器進行讀取。
    的頭像 發表于 05-30 10:02 ?988次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b><b class='flag-5'>使用手冊</b>】第三<b class='flag-5'>講</b> GPIO-按鍵查詢檢測<b class='flag-5'>實驗</b>

    GD32F303紅楓開發板使用手冊】第五 FMC-片內Flash擦寫讀實驗

    MC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32F303系列MCU中,Flash前256K字節空間內,?CPU執行指令零等待,具有相同主頻下最快的代碼執行效率。FMC也
    的頭像 發表于 06-02 10:05 ?871次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b><b class='flag-5'>使用手冊</b>】第五<b class='flag-5'>講</b> FMC-片內Flash擦寫讀<b class='flag-5'>實驗</b>

    GD32F303紅楓開發板使用手冊】第十六 USART-DMA串口收發實驗

    在前面ADC章節中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊中可以查到,各串口的TX和RX分別對應DMA的不同通道,比如USART0的TX對應DMA0的通道3,而RX對應DMA0的通道4。
    的頭像 發表于 06-15 09:54 ?1229次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b><b class='flag-5'>使用手冊</b>】第十六<b class='flag-5'>講</b> USART-DMA串口收發<b class='flag-5'>實驗</b>

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

    通過本實驗主要學習以下內容: ?SPI通信協議,參考19.2.1東方紅開發板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發表于 06-20 09:50 ?1068次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b><b class='flag-5'>使用手冊</b>】第二十<b class='flag-5'>講</b> SPI-SPI NAND FLASH讀寫<b class='flag-5'>實驗</b>
    在线真钱游戏| 网上百家乐官网是真是假天涯论坛| 百家乐官网方案| 现金百家乐攻略| 阳朔县| 百家乐连赢的策略| 龙博| 风水24山图片| 凯斯娱乐| 百家乐专打和局| 新疆| 百家乐是不是有技巧| 爱拼网| 百家乐长龙如何判断| 罗定市| 蓝盾百家乐平台租用| 百家乐官网开户代理| 百家乐二路珠无敌稳赢打法| 百家乐官网园游戏庄闲| 网上百家乐娱乐场开户注册| 澳门百家乐官网免费开户| 海港城百家乐的玩法技巧和规则| 百家乐官网方法技巧| 苹果百家乐的玩法技巧和规则 | 名山县| 百家乐赌场论坛| 网络百家乐官网网站| 大发888虎牌官方下载| 百家乐官网那里可以玩| 电子百家乐| 百家乐技巧之微笑心法| 真钱百家乐官网游戏大全| 网络百家乐棋牌| 玩百家乐官网澳门皇宫娱乐城| 大发888是什么| 百家乐试用软件| 百家乐官网辅助工具| 励骏会百家乐的玩法技巧和规则| 百家乐官网单机游戏下| 澳门赌场招聘| 大哥大百家乐的玩法技巧和规则|