6.1實(shí)驗(yàn)內(nèi)容
通過本實(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,用來為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通過LVDEN置位使能,位于電源狀態(tài)寄存器(PMU_CS) 中的LVDF位表示低電壓事件是否出現(xiàn),該事件連接至EXTI的第16線,用戶可以通過配置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)部電源切換器來選擇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ì)于沒有外部電池的應(yīng)用,建議將VBAT引腳通過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ān)閉不同時(shí)鐘以及電源來實(shí)現(xiàn)的,關(guān)閉的時(shí)鐘和電源越多,MCU所進(jìn)入的睡眠模式將會(huì)越深,功耗也會(huì)越低,帶來的喚醒時(shí)間也會(huì)越長(zhǎng),其喚醒源也會(huì)越少。睡眠模式是最淺的低功耗模式,僅關(guān)閉了CPU,代碼不再運(yùn)行,所有的中斷或事件均可喚醒,喚醒時(shí)間也最快;深度睡眠模式時(shí)中間的低功耗模式,關(guān)閉了1.2V電源域時(shí)鐘以及IRC8M/HXTAL/PLL,僅可通過EXTI中斷或事件喚醒,喚醒后需要重新配置系統(tǒng)時(shí)鐘;待機(jī)模式是功耗最低的低功耗模式,關(guān)閉了1.2V電源域電源以及IRC8M/HXTAL/PLL,僅可通過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è)試,首先我們來看下主函數(shù),如下所示。該主函數(shù)首先配置了系統(tǒng)主時(shí)鐘、延遲、打印和LED函數(shù),并打印Example of Low Power Test Demo。之后查詢是否進(jìn)入過Standby模式,如果進(jìn)入過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-04-16 23:22




設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 迅為IMX8MM開發(fā)板Linux系統(tǒng)修改默認(rèn)屏幕
- 使用低功耗、精密、24 位 Sigma-Delta ADC 的隔離式 4 mA 至 20 mA/HART 溫度和壓力工業(yè)變送器
- LTC7149EUFD 24V 輸入并發(fā) ±12V 電源的典型應(yīng)用電路
- TCR2LN15 200mA、1.5V輸出電壓CMOS低壓降穩(wěn)壓器的典型應(yīng)用
- AD9238-40PCB,用于評(píng)估 AD9238、2 通道、10 位、65 MSPS 模數(shù)轉(zhuǎn)換器的評(píng)估板
- LT1170HVCQ、-12/5A 正負(fù)降壓-升壓轉(zhuǎn)換器的典型應(yīng)用
- 采用單端 15V 輸入電源的 LTC3265HFE 低功率 ±20V 電??源的典型應(yīng)用電路
- LTC3025-1/LTC3025-2/LTC3025-3/LTC3025-4 的典型應(yīng)用 - 500mA 微功率 VLDO 線性穩(wěn)壓器
- LT3470AEDDB 2.5V 降壓轉(zhuǎn)換器的典型應(yīng)用電路
- LT1170HVCT、-28/5A 負(fù)升壓穩(wěn)壓器的典型應(yīng)用
- LT3481、800kHz LT3481 DC/DC 轉(zhuǎn)換器在 3.3V 輸出時(shí)提供 2A
- 英特爾攜海信發(fā)布端側(cè)會(huì)議領(lǐng)域垂域模型解決方案,讓商務(wù)會(huì)議更安全更智能
- 英特爾攜手MAXHUB聯(lián)合發(fā)布企業(yè)級(jí)AI PC, 加速AI大模型在端側(cè)落地
- 助力低碳數(shù)字未來 英飛凌攜多款創(chuàng)新成果亮相2025慕尼黑上海電子展
- ?日清紡微電子科技賦能產(chǎn)業(yè)升級(jí),亮相慕尼黑上海電子展
- 泰克閃耀 2025 慕尼黑上海電子展,引領(lǐng)測(cè)試技術(shù)新變革
- 破局AI眼鏡性能、續(xù)航、成本“不可能三角”:芯原推出高集成度參考設(shè)計(jì)方案
- 人形機(jī)器人成下一風(fēng)口,各大車企紛紛入局,比智能汽車潛力更大?
- 業(yè)績(jī)最高 TDK為汽車應(yīng)用推出電容值達(dá)100V的MLCC
- 微型柔性機(jī)器人:開啟智能救援與精準(zhǔn)醫(yī)療新紀(jì)元
- 人工智能加速芯片設(shè)計(jì):動(dòng)態(tài)自適應(yīng)流程引領(lǐng)高效創(chuàng)新
- 直播報(bào)名:TI 用于感測(cè)應(yīng)用、帶可配置信號(hào)鏈元素的新型MSP430™ MCU,報(bào)名直播贏雙重好禮!
- Keysight示波器主題月有獎(jiǎng)系列活動(dòng)之 注冊(cè)大獎(jiǎng)天天抽 搶樓踩中亦有獎(jiǎng)
- 來翻牌吧!解鎖示波器的N種玩法
- 全新吉時(shí)利4200A SCS參數(shù)分析儀震撼上市,邀您參與翻蓋有禮!
- 有獎(jiǎng)直播:TI DLP® 產(chǎn)品賦能工業(yè)光控領(lǐng)域與創(chuàng)新
- 【EEWORLD第二十五屆】2011年04月社區(qū)明星人物揭曉!
- 蜂窩車聯(lián)網(wǎng)(C-V2X)測(cè)試解決方案|直播已結(jié)束
- 觀看TI IOT解決方案研討會(huì) 答題即可贏取更多精美好禮!
- TI 有獎(jiǎng)直播|業(yè)界超精確3D霍爾效應(yīng)位置傳感器
- 情懷加持 蔡司雙攝諾基亞8sirocco評(píng)測(cè)
- 蘋果終于想開?或?qū)⒃试S第三方開發(fā)者設(shè)計(jì)表盤
- R15同款劉海屏 OPPO A3新機(jī)低價(jià)來襲
- 入手TB一折價(jià)的“山寨”AirPods:體驗(yàn)驚呆了
- 老年機(jī)要哭了 聯(lián)通開始清退2G網(wǎng)絡(luò)
- 不堪其負(fù),杭州要把 1/3 的共享單車?yán)龀峭?/a>
- 國(guó)網(wǎng)平湖市供電公司首個(gè)智能機(jī)器人上崗
- Switch賣得最好的十款獨(dú)立游戲你玩過幾個(gè)?
- 一加5北美市場(chǎng)官網(wǎng)停售 或許是再為新旗艦作準(zhǔn)備
- 蘋果教育專場(chǎng)發(fā)布會(huì)就在眼前 哪些新品可以期待?