0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(11)PMU 模块介绍

聚沃科技 2024-08-20 09:42 次阅读

11.1.PMU 简介

PMU即电源管理单元,它有三个电源域,包括VDD/VDDA域、1.1V/1.2V域和备份域。电源管理单元在常规芯片提供了三种省电模式,包括睡眠模式、深度睡眠模式和待机模式;在低功耗芯片中,电源管理单元提供了十种省电模式,包括运行模式,运行模式 1,运行模式 2,睡眠模式,睡眠模式 1,睡眠模式 2,深度睡眠模式,深度睡眠模式 1,深度睡眠模式 2 和待机模式。这些模式能减少电源能耗,且使得应用程序可以在CPU运行时间要求、速度和功耗的相互冲突中获得最佳折衷。

11.2.PMU 功能

三个电源域:备份域、 VDD/VDDA域和1.1V/1.2V电源域;

三种省电模式(常规芯片):睡眠模式、深度睡眠模式和待机模式;

十种省电模式(低功耗芯片):运行模式、运行模式1、运行模式2、睡眠模式、睡眠模式1、睡眠模式2、深度睡眠模式、深度睡眠模式1、深度睡眠模式2和待机模式。

内部电压调节器( LDO)提供1.1V/1.2V电源;

提供低电压检测器,当电压低于所设定的阈值时能发出中断或事件;

当VDD供电关闭时,由VBAT(电池)为备份域供电;

LDO输出电压用于节约能耗;

低驱动模式用于在深入睡眠模式下超低功耗。高驱动模式用在高频模式中。

如下图PMU及相关电源域内部结构框图所示。

输入图片说明

电池备份域

电池备份域由内部电源切换器来选择VDD供电或VBAT(电池)供电,然后由VBAK为备份域供电,该备份域包含RTC(实时时钟)、 LXTAL(低速外部晶体振荡器)、 BPOR(备份域上电复位)、 BREG(备份寄存器),以及PC13至PC15共3个PAD。为了确保备份域中寄存器的内容及RTC正常工作,当VDD关闭时, VBAT引脚可以连接至电池或其他电源等备份源供电。

VDD/VDDA 电源域

VDD/VDDA 域包括 VDD 域和 VDDA 域两部分。VDD 域包括 HXTAL(高速外部晶体振荡器)、LDO(电压调节器)、 POR/PDR(上电/掉电复位)、 FWDGT(独立看门狗定时器)和除 PC13、PC14和 PC15 之外的所有 PAD 等等。 VDDA 域包括 ADC/DAC( AD/DA 转换器)、 IRC8M( 内部 8MRC 振荡器)、 IRC48M( 内部 48M RC 振荡器)、 IRC40K(内部 40KHz RC 振荡器) PLLs(锁相环)和 LVD(低电压检测器)等等。

VDD 域 POR/ PDR(上电/掉电复位) 电路检测VDD/VDDA并在电压低于特定阈值时产生电源复位信号复位除备份域之外的整个芯片。 如下图上电/掉电复位波形图显示了供电电压和电源复位信号之间的关系。 VPOR表示上电复位的阈值电压, VPDR表示掉电复位的阈值电压,以GD32F303为例 ,典型值约为2.40V,典型值约为1.8V。迟滞电压Vhyst值约为600mV。

输入图片说明

VDDA 域

LVD 的功能是检测 VDD/VDDA 供电电压是否低于低电压检测阈值,该阈值由电源控制寄存器(PMU_CTL)中的 LVDT[2:0]位进行配置。 LVD 通过 LVDEN 置位使能,位于电源状态寄存器(PMU _CS)中的 LVDF 位表示低电压事件是否出现,该事件连接至 EXTI 的第 16 线,用户可以通过配置 EXTI 的第 16 线产生相应的中断。下图LVD阈值波形图显示了 VDD/VDDA 供电电压和 LVD 输出信号的关系。( LVD 中断信号依赖于 EXTI 第 16 线的上升或下降沿配置)。

迟滞电压 Vhyst 值为 100mV。

输入图片说明

省电模式

三种低功耗功耗模式对比表

输入图片说明

不同系列 standby 唤醒源

输入图片说明

11.3.硬件注意事项

1)对于没有外部电池的应用,建议将 VBAT 引脚通过 100nF 的外部陶瓷去耦电容连接到 VDD 引 脚上;

2)由于 PC13 至 PC15 引脚是通过电源切换器供电的,电源切换器仅可通过小电流,因此当 PC13 至 PC15 的 GPIO 口在输出模式时, 其工作的速度不能超过 2MHz(最大负载为 30pF)。

3)如果 VDDA 和 VDD 不同时,VDDA 须高于 VDD,但压差不超过 0.2V。

VBAT 参考电路

输入图片说明

11.4.软件配置说明

PMU 以低功耗模板配置为例来说明

Demo 一 ( Deepsleep 模式)

demo 功能说明:

MCU 上电启动后,LED 灯闪烁 5 次,进入深度睡眠模式,通过按键来唤醒,LED 灯继续闪烁 5次又进入深度睡眠。

软件配置步骤如下:

1)开启 PMU 时钟

rcu_periph_clock_enable(RCU_PMU);

2)配置 LED 灯

void led_config(void) { gd_eval_led_init(LED1); gd_eval_led_init(LED2); gd_eval_led_init(LED3); gd_eval_led_init(LED4); }

3)配置唤醒按键 PC13

void gd_eval_key_init(void) //配置唤醒按键 { rcu_periph_clock_enable(RCU_GPIOC); //配置 GPIOC 的时钟 rcu_periph_clock_enable(RCU_AF); //开启复用时钟 gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_13);//配置 GPIO PC13 为浮空输入模式 nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U); //配置中断向量、抢占优先级、主优先 级 gpio_exti_source_select(GPIO_EVENT_PORT_GPIOC, GPIO_EVENT_PIN_13); //配置外部中断源 PC13 exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_FALLING); //配置外部中断 13 线 、下降沿触发 exti_interrupt_flag_clear(EXTI_13); //清空外部中断 13 线的中断标志 }

4)进入低功耗模式函数

pmu_to_deepsleepmode(PMU_LDO_NORMAL,WFI_CMD);

  1. 按键外部触发中断服务函数

void EXTI10_15_IRQHandler(void) { if (RESET != exti_interrupt_flag_get(EXTI_13)) //判断是否为 13 号中断线 { exti_interrupt_flag_clear(EXTI_13); //清空标志 } }

  1. 唤醒后重新配置 PLL 系统时钟

void systemclk_from_deepsleep(void) // deepsleep 唤醒后系统时钟从内部时钟切换到 PLL 时钟 { RCU_CTL |= RCU_CTL_PLLEN; //使能 PLL while(0U == (uint32_t)(RCU_CTL & RCU_CTL_PLLSTB)) //等待 PLL 稳定 { } RCU_CFG0 &= ~RCU_CFG0_SCS; RCU_CFG0 |= RCU_CKSYSSRC_PLL; while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ //选择 PLL 为系统时钟 } }

11.5.PMU 使用注意事项

(1)深度睡眠模式 只要是外部中断就能唤醒;

(2)从深度睡眠模式唤醒后,PLL 是没有被使能,唤醒后需要配置 PLL,不然 MCU 系统时钟就是内部时钟;

(3)进入 deepsleep 低功耗模式后,将未使用到的 IO 配置成模拟输入模式,以降低芯片整体功耗。

教程GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44505

    浏览量

    632413
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16949

    浏览量

    350117
  • 嵌入式
    +关注

    关注

    5064

    文章

    18992

    浏览量

    302588
  • PMU
    PMU
    +关注

    关注

    1

    文章

    107

    浏览量

    21552
  • GD32
    +关注

    关注

    7

    文章

    403

    浏览量

    24144
收藏 人收藏

    评论

    相关推荐

    GD32 MCU 入门教程GD32 MCU 常见外设介绍(12)FMC 模块介绍

    闪存控制器(FMC),提供了片上闪存需要的所有功能。FMC 也提供了页擦除,整片擦除,以及32 位整字或 16 位半字编程闪存等操作。 GD32 MCU 支持不同类型编程的具体说明如下表 GD32
    的头像 发表于 08-21 09:56 953次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>常见外设</b><b class='flag-5'>介绍</b>(12)FMC <b class='flag-5'>模块</b><b class='flag-5'>介绍</b>

    GD32 MCU移植

    gd32是一款国产单片机。该芯片在很多方面和STM32有异曲同工之处。资料不是很多! GD32外设方面、和STM32没有多大区别。 只是需要注意资源的引脚分配。虽然和STM32使用方式一样、但是也存在
    发表于 03-23 13:40

    GD32MCU介绍

    其实兆芯的MCU为了兼容ST,外设的寄存器设计与ST保持一致了。比如GD32VF103或者GD32E103系列的USBFS这个外设,基本等同
    发表于 11-01 06:03

    GD32 MCU原理及固件库开发指南》+读后感

    、调试工具,再到库函数的使用、各个外设的程序实现,不仅有原理的介绍,还有实践的历程。这本书聚焦在GD32 MCU基本原理和固件库上,重点在于对固件库API的
    发表于 06-06 21:52

    兆易创新GD32 MCU选型手册,适用于GD32全系列MCU

    兆易创新GD32MCU选型手册,适用于GD32全系列MCUGD32MCU选型手册,适用于GD32全系列MCU
    发表于 10-19 17:26 49次下载

    你了解GD32 MCU的命名规则吗

    下面为大家介绍GD32 MCU的通用命名规则,以GD32F303ZGT6为例,其中,GD32代表GD32
    的头像 发表于 01-13 09:38 3411次阅读
    你了解<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的命名规则吗

    GD32 MCU的选项字节是什么?

    GD32 MCU的选项字节是什么,有什么功能呢?选项字节被误篡改如何回复?
    的头像 发表于 01-17 09:42 1218次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的选项字节是什么?

    不同型号的GD32 MCU如何区分?

    大家是否碰到过以下应用场景:同一套软件代码希望跑在不同型号的GD32 MCU中,但有些地方需要根据MCU型号进行调整?或者上位机或其他MCUGD3
    的头像 发表于 01-27 09:32 934次阅读
    不同型号的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何区分?

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(1)使用Keil开发GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 15:01 978次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 开发环境搭建(1)使用Keil开发<b class='flag-5'>GD32</b>

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(2)使用 IAR 开发 GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 15:40 559次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 开发环境搭建(2)使用 IAR 开发 <b class='flag-5'>GD32</b>

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(3)使用 Embedded Builder 开发 GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 16:03 801次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 开发环境搭建(3)使用 Embedded Builder 开发 <b class='flag-5'>GD32</b>

    GD32 MCU 入门教程】二、GD32 MCU 烧录说明(1)ISP 烧录

    ISP:In System Programing,在系统编程,通过MCU片内的引导程序进行Flash编程。 GD32片内有一个只读信息块,用于存放引导装载程序,引导程序在MCU出厂前就会提前烧录好
    的头像 发表于 08-08 16:20 729次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】二、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 烧录说明(1)ISP 烧录

    GD32 MCU 入门教程GD32 MCU 常见外设介绍(14)RTC 模块介绍

    GD32 MCU内部提供了一个RTC(实时时钟)模块,通过RTC可以实现日历时钟、闹钟等功能。RTC也可以用于深度睡眠或待机模式的低功耗唤醒。不同系列的GD32
    的头像 发表于 08-23 09:18 363次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>常见外设</b><b class='flag-5'>介绍</b>(14)RTC <b class='flag-5'>模块</b><b class='flag-5'>介绍</b>

    GD32 MCU 入门教程GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的头像 发表于 08-25 09:24 448次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入门教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> FPU 使用方法

    GD32 MCU入门教程GD32 MCU GPIO 结构与使用注意事项

    本文是专门为基于GD32 MCU开发的工程设计人员提供,主要介绍了GPIO的功能配置、内部结构以及在不同场景使用时的注意事项,旨在帮助GD32 MC
    的头像 发表于 09-07 10:34 557次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b><b class='flag-5'>入门教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> GPIO 结构与使用注意事项