6.1實(shí)驗(yàn)內(nèi)容
通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:
PMU原理;
低功耗的進(jìn)入以及退出操作;
6.2實(shí)驗(yàn)原理
6.2.1PMU結(jié)構(gòu)原理
PMU即電源管理單元,其內(nèi)部結(jié)構(gòu)下圖所示,由該圖可知,GD32F303系列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引腳(電池)供電。
VDD/VDDA電源域
VDD 域?yàn)閿?shù)字電源域包括HXTAL(高速外部晶體振蕩器)、LDO(電壓調(diào)節(jié)器)、POR / PDR(上電/掉電復(fù)位)、FWDGT(獨(dú)立看門狗定時(shí)器)和除PC13、PC14和PC15之外的所有PAD等等。另外,上圖中與PMU控制器連接的PA0、NRST、FWDGT以及RTC表示待機(jī)模式下的喚醒源。VDDA域?yàn)槟M電源域包括ADC / DAC(AD / DA轉(zhuǎn)換器)、IRC8M(內(nèi)部8M RC振蕩器)、IRC48M(內(nèi)部48M RC振蕩器)、IRC40K(內(nèi)部40KHz 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.40V,VPDR表示掉電復(fù)位的閾值電壓,典型值約為1.8V。遲滯電壓Vhyst值約為600mV。
|
GD32F303系列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。
|
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引腳上。
|
電池備份域中具有84字節(jié)備份數(shù)據(jù)寄存器,該備份數(shù)據(jù)寄存器可用于存儲(chǔ)用戶數(shù)據(jù),且在掉電復(fù)位以及系統(tǒng)復(fù)位情況下數(shù)據(jù)不丟失,僅在發(fā)生侵入事件時(shí)數(shù)據(jù)會(huì)被擦除。
若讀者有在VDD掉電情況下RTC繼續(xù)工作的應(yīng)用需求,需要VBAT引腳外接電池并使用LXTAL外部低頻晶振,這樣在VDD掉電的情況下,VBAT供電將會(huì)由VDD切換到VBAT,LXTAL和RTC均可正常工作,后續(xù)VDD上電后同步RTC寄存器即可獲取正確的RTC時(shí)間。
6.2.2低功耗模式
GD32F303系列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)閉,IRC8M、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)入深度睡眠模式。
待機(jī)模式是基于 Cortex?-M4 的SLEEPDEEP模式實(shí)現(xiàn)的。在待機(jī)模式下,整個(gè)1.2V域全部停止供電,同時(shí)LDO和包括IRC8M、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ī)模式。
低功耗模式相關(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/看門狗/RTC鬧鐘/WKUP引腳喚醒,喚醒后MCU將會(huì)復(fù)位重啟。
各種睡眠模式下的功耗可以參考數(shù)據(jù)手冊(cè)描述,睡眠模式下相較于同主頻模式下的運(yùn)行模式功耗減少約50%,深度睡眠和待機(jī)模式功耗更低,如下表所示,深度睡眠模式下功耗常溫典型值為133ua-189ua,待機(jī)模式下功耗常溫典型值為5uA。
|
Note:左側(cè)是常溫下的典型數(shù)值,中間為85度下的典型數(shù)值,右側(cè)為常溫下的最大數(shù)值。
6.3硬件設(shè)計(jì)
本例程stanby的喚醒使用到了PA0喚醒引腳,其電路如下所示。
6.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)LED0,因而驗(yàn)證standby喚醒的時(shí)候,其現(xiàn)象可觀察到LED0的翻轉(zhuǎn)。之后使能wakeup引腳的喚醒以及按鍵的初始化,此時(shí)將KEY0配置為中斷模式。在while(1)中,查詢KEY1是否按下,如果按下則打印Entering Standby Mode.并進(jìn)入standby模式,如果key2按下,則打印Enter Deepsleep mode.并進(jìn)入Deepsleep模式,從deepsleep模式喚醒后需要重新配置時(shí)鐘,打印Exit Deepsleep mode.并翻轉(zhuǎn)LED1。Standby的喚醒使用PA0 wakeup引腳,deepsleep的喚醒可使用任何EXTI中斷,本實(shí)例中使用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.rn'); 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.rn'); 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.rn'); bsp_led_toggle(&LED0); pmu_to_standbymode(WFI_CMD); } if(bsp_key_state_get(&KEY2)!=RESET) { printf('Enter Deepsleep mode.rn'); 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.rn'); bsp_led_toggle(&LED1); } } }
需要注意,進(jìn)入deepsleep之前需要將不用的GPIO全部配置為模擬輸入的模式,為了得到更為一致且較低的功耗,其配置函數(shù)如下。
在配置所有IO為模擬輸入之后,如果有需要保持GPIO狀態(tài)的引腳,需要配置后再進(jìn)入deepsleep,如例程中的按鍵引腳,因?yàn)樾枰存I喚醒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實(shí)驗(yàn)結(jié)果
將本實(shí)驗(yàn)歷程燒錄到紅楓派實(shí)驗(yàn)板中,按下KEY1按鍵將進(jìn)入standby模式,并打印Entering Standby Mode.,然后按下wakeup按鍵,將從stanby模式喚醒,打印A reset event from Standby mode has occurred.并翻轉(zhuǎn)LED0,之后按下KEY2按鍵將打印Enter Deepsleep mode.進(jìn)入deepsleep模式,然后按下KEY0按鍵將從deepsleep模式下喚醒,喚醒后重新配置時(shí)鐘,打印Exit Deepsleep mode.并將LED1翻轉(zhuǎn)。
具體現(xiàn)象如下所示。
上一篇:【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第二講 GPIO-按鍵查詢檢測(cè)實(shí)驗(yàn)
下一篇:【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第四講 FMC-片內(nèi)Flash擦寫讀實(shí)驗(yàn)
推薦閱讀最新更新時(shí)間:2025-07-03 10:28



設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- LSM330D適配器板,標(biāo)準(zhǔn)DIL24插座
- 使用 Raspberry Pi Foundation 的 2711ZPKFSB06B0T 的參考設(shè)計(jì)
- LTC6957 的典型應(yīng)用 - 低相位噪聲、雙輸出緩沖器/驅(qū)動(dòng)器/邏輯轉(zhuǎn)換器
- 2019年電賽D題-簡(jiǎn)易電路特性測(cè)試-設(shè)計(jì)方案及報(bào)告(國(guó)一,南京理工)
- EVAL-ADF4193EB1,用于無(wú)線 LAN 的 ADF4193 PLL 時(shí)鐘發(fā)生器的評(píng)估板
- 用于微功率 A/D 轉(zhuǎn)換器的 LT1634BIS8-2.5 電壓基準(zhǔn)的典型應(yīng)用
- 使用 Analog Devices 的 LTC3588EDD-1 的參考設(shè)計(jì)
- 用于照明的 PSoC 嵌入式系統(tǒng)
- LM358DR2G 運(yùn)放函數(shù)發(fā)生器的典型應(yīng)用
- ADL5387-EVALZ,基于 ADL5387 30 MHz 至 2 GHz 正交解調(diào)器的評(píng)估板
- 是什么原因?qū)е麓欧逡何挥?jì)磁浮子下沉
- 氧化鋅避雷器測(cè)試儀可測(cè)試哪些項(xiàng)目?
- 帶有MIPI接口的新型高端傳感器
- 體驗(yàn)首款Linux消費(fèi)級(jí)平板,芯片和系統(tǒng)都是國(guó)產(chǎn)!
- STM32F103C8T6單片機(jī)IAP升級(jí)
- 集微咨詢:國(guó)產(chǎn)CPU 大有可為 怎樣破解三大隱憂
- 準(zhǔn)確的控制精度與PID算法結(jié)合
- ARM交叉編譯環(huán)境安裝記錄
- 數(shù)字萬(wàn)用表的顯示位數(shù)和精度
- 英飛凌主導(dǎo)并協(xié)調(diào)大型研究項(xiàng)目,為高度自動(dòng)化聯(lián)網(wǎng)汽車開發(fā)超級(jí)計(jì)算機(jī)
- "智能汽車芯片大戰(zhàn)升級(jí):高通最新方案為何獲中國(guó)車企追捧?
- 電壓精度0.5% @25°C!思瑞浦發(fā)布全新車規(guī)并聯(lián)基準(zhǔn)芯片TPR43xQ系列產(chǎn)品
- AI技術(shù)在方便面生產(chǎn)質(zhì)量監(jiān)控中的應(yīng)用
- 潤(rùn)石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測(cè)試新時(shí)代(下)
- 軟件定義汽車電源管理設(shè)計(jì):NXP的PMIC選型攻略解析
- 深度測(cè)評(píng)時(shí)空壺X1同聲傳譯器:全球最先進(jìn)AI同傳設(shè)備的非凡實(shí)力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴(kuò)容+國(guó)產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動(dòng)問(wèn)題解析