关于MM32F5333的低功耗的测试
MM32F5333是灵动微电子推出的一款高性能的MCU, 内置多种省电工作模式保证了对电源管理应用不同的要求,并对供电电流特性做出了详细的测试。本文我们将介绍 MM32F5333的电源控制(PWR),并实现低功耗模式相关功能。
MM32F5333的供电系统
MM32F5333的供电系统 有4个电源域
  • VDDA 和 VSSA 模拟电源供电域
为芯片模拟模块提供电压,用于 ADC 模块、内部基准电压、 内部温度传 感器和 PLL 等。因此电源的稳定性影响模拟模块的工作性能。
                 VREF+和 VREF-提供 ADC 的参考电压。
  • VDD 域
    VDD 域主要给 PMU、IWDG IO口供电电以及通过电压稳压器为内核、内置数字外 设和存储器等供电。
  • 备份域
    备份域主要为 RTC、备份寄存器和外部低速时钟振荡器 LSE 供电。
  • CORE 域
CORE 域主要给芯片的内核、内存和外设提供供电,在上电后默认是开启状态,在进入低功耗待机模 式时,芯片会硬件选择关闭该 CORE 域,在唤醒后芯片会自动开启。
  电源管理器
POR 上电复位和 PDR 掉电复位
            芯片有一个完整的上电复位(POR)和掉电复位(PDR)电路。使得当供电电压达到芯片最低的工作电压 后系统能正常工作,当 VDD 低于指定的 POR/PDR 限位电压时,系统保持为复位状态,NRST 复位引脚处于低电平,关 于复位持续时间(tRSTTEMPO)等上电复位和掉电复位的细节请参考数据手册的电气特性部分。
       084255enlkanm0g04zk3na
PVD 可编程电压监测器
     可编程电压监测器 PVD(Programmable Voltage Detector)可以用来监视芯片的供电电压,在供电电 压下降到给定的阈值以下时,产生一个中断,软件可以做紧急处理。当供电电压又恢复到给定的阈值以上时,也会产生一个中断,软件处理供电恢复。
功耗控制模式
        未达到节省芯片电流消耗的目的,可以利用 MCU 提供的多种低功耗模式来节 省功耗,芯片有六种低功耗模式。
低功耗运行模式(Low Power Run Mode):CORE 域以低功耗模式运行,内存、外设都以低功耗工作。

睡眠模式(Sleep Mode):CORE 域以正常功耗模式工作,CPU 进入睡眠模式,内存、外设都以正常 的功耗模式工作。
低功耗睡眠模式(Low Power Sleep Mode):CORE 域以低功耗睡眠模式工作,CPU 进入低功耗睡 眠模式,内存、外设都以低功耗工作。
停机模式(Stop Mode):CORE 域以低功耗模式工作,只保持寄存器和 RAM 的内容。
深度停机模式(DeepStop Mode):CORE 域以更低功耗模式工作,只保持寄存器和 RAM 的内容。

待机模式(Standby Mode):CORE 域停止供电。除了备用电路和备份域外,其他所有寄存器和 SRAM 的内容全部丢失。
深度停机模式实验
MCU由VDD_M供电 我们可以把短接帽拿掉,将电源接上就可以测量MCU功耗了
084255sgdwqyi1ybb1wwyy

代码分析
代码先闪烁了20次的LED,然后使用
PWR_Pretreatment();
设置GPIO模式,设置外部中断唤醒,
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWRDBG, ENABLE);
使能PWR时钟
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
设置进入DeepStop
PWR_Reinitialize();
恢复芯片初使化

/***********************************************************************************************************************
  •   * @brief
  •   * @note   none
  •   * @param  none
  •   * @retval none
  •   *********************************************************************************************************************/
  • void PWR_DeepStop_EXTI_Wakeup_Sample(void)
  • {
  •     uint8_t i = 0;

  •     printf("\r\nTest %s", __FUNCTION__);

  •     while (1)
  •     {
  •         printf("\r\n-->Running...");

  •         for (i = 0; i < 20; i++)
  •         {
  •             PLATFORM_LED_Toggle(LED1);
  •             PLATFORM_DelayMS(100);
  •         }

  •         PWR_Pretreatment();

  •         /* Deep Stop Mode */
  •         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWRDBG, ENABLE);
  •         PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

  •         PWR_Reinitialize();
  •     }
  • }
  • 复制代码

    实验现象
    084255kwr8vzrahm17izmf
    板子上的LED 是由VDD供电亮不了,所以外接LED
    084256ki7d4d3go26qr98a
    MCU供电在5.1V左右 功耗在 LED点亮的时候大约在20多ma。
    084256kgnkyhsizznvhhg3
    MCU进入低功耗是256微安
    084256icbvj65cv9yt82v1
    手册说Deep Stop是在112.7微安,而我提供电源大于5V,现象也十分合理
       现在灵动比2年前,做的好多了