MM32SPIN2x 电机专用MCU功能特色 —— 高集成度产品的电源管理

demi的头像
demi 发布于:周五, 05/17/2019 - 11:04 ,关键词:

现在的采用电池供电方式电机控制类的小型化电子产品,因为电池容量和体积等限制对功耗控制的要求越来越高。电池的容量和体积限制如何让用户能够更长时间使用产品,产品功耗的问题是经常让产品设计者头痛而又不得不面对的一个问题。包括:剃须刀、电动牙刷、洁面仪等。

电机类产品功耗主要是电机驱动模块占据大部分,其他外设部分的电流消耗占小部分,以单片机为核心的系统,其功耗主要由单片机功耗和单片机外围电路功耗组成。MM32SPIN2x有高达两个高级定时器,能够驱动双电机应用方案,可以提高总功率效率和性能。今天主要从MCU部分讲解如何降低单片机系统的功耗,需要从硬件和软件两方面入手。本章节将从MM32SPIN2x系列MCU的配置来介绍如何降低MCU的功耗。

如何降低MCU功耗

在系统或电源复位以后,微控制器处于运行状态。当CPU 不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

降低功耗方法:

• 睡眠模式(CPU 停止,所有外设包括CPU 的外设,如NVIC、系统时钟(SysTick) 等仍在运行)

• 停机模式(所有的时钟都已停止,寄存器和SRAM 的内容依然保存)

• 待机模式(1.5V电源关闭,除了备用电路和备份域外,寄存器和SRAM 的内容全部丢失)

此外,在运行模式下,可以通过以下方式中的一种降低功耗:

• 降低系统时钟

• 关闭APB 和AHB 总线上未被使用的外设时钟

• 降低GPIO速度或者其他外设的速率

• 对与未使用的GPIO配置成模拟输入模式,针对有外部上拉或者下拉的GPIO口,在进入低功耗禁止设置相反的电平状态。

图1 低功耗模式一览

运行模式低功耗

1、降低系统时钟

在运行模式下,系统的主频越高,MCU处理指令的速度越快,但是同时功耗也会越大,设计人员需要跟实际应用对MCU处理性能和功耗之间找一个平衡点。MM32SPIN2x可以根据PLL倍频器设置最高96MHz系统时钟,可以通过对预分频寄存器进行编程,可以降低任意一个时钟(HCLK、PCLK1、PCLK2) 的速度。

2、外设时钟的控制

在运行模式下,任何时候都可以通过关闭外设时钟 (HCLK 和 PCLKx)来减少功耗,在不需要使用的外设建议不要开启外设时钟。

3、睡眠模式

通过执行 WFI或 WFE 指令进入睡眠状态。根据 CPU系统控制寄存器中的 SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
• SLEEP-NOW:如果 SLEEPONEXIT 位被清除,当 WFI或 WFE被执行时,微控制器立即进入睡眠模式。
• SLEEP-ON-EXIT:如果 SLEEPONEXIT 位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。

在睡眠模式下,所有的 I/O 引脚都保持它们在运行模式时的状态。

对于M0内核的MCU,有两个通用的函数__WFI()和__WFE()可以进入睡眠模式。

图2 睡眠模式下的最大功耗,代码运行在FLASH中

4、停机模式
停机模式是在 CPU 的深睡眠模式基础上结合了外设的时钟控制机制,在停机模式下电压调节器可运行在正常模式。此时在1.5V 供电区域的的所有时钟都被停止, PLL、 HSI 和HSE 振荡器的功能被禁止, SRAM和寄存器内容被保留下来。

在停机模式下,所有的 I/O 引脚都保持它们在运行模式时的状态。

可以通过对独立的控制位进行编程,可选择以下功能:
•独立看门狗 (IWDG):可通过写入看门狗的键寄存器或硬件选择来启动 IWDG。
•内部振荡器 (LSI振荡器):通过控制/状态寄存器 (RCC_CSR)的 LSION位来设置。

在停机模式下,如果在进入该模式前 ADC 没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器 ADC_CR2的 ADON位可关闭这个外设。其他没有使用的GPIO 需要设置模拟输入,否则有电流消耗。

如何进入和退出停机模式可以参考图1。在库函数中,MM32SPIN2x定义了一个PWR_EnterSTOPMode()函数,方便快速配置停机模式。

注:当一个中断或唤醒事件导致退出停机模式时,HSI 振荡器被选为系统时钟。时钟频率为 HSI的 6 分频。

5、待机模式

待机模式可实现系统的最低功耗。该模式是在 CPU 深睡眠模式时关闭电压调节器。整个1.5V供电区域被断电。 PLL、 HSI 和 HSE 振荡器也被断电。 SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。

可以通过设置独立的控制位,选择以下待机模式的功能:
• 独立看门狗 (IWDG):可通过写入看门狗的键寄存器或硬件选择来启动 IWDG。
• 内部振荡器 (LSI振荡器):通过控制/状态寄存器 (RCC_CSR)的 LSION位来设置

如何进入和退出待机模式可以参考图1。在库函数中,MM32SPINx定义了一个PWR_EnterSTANDBYMode ()函数,方便快速配置停机模式。

退出待机模式后,除了:电源控制/状态寄存器 (PWR_CSR),所有寄存器被复位。

从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。电源控制/状态寄存器 (PWR_CSR)将会指示内核由待机状态退出。

图3 停机和待机模式下的典型和最大电流消耗

小结

常用方法:降低系统时钟、不打开不使用的外设时钟、进入睡眠模式、进入停机模式、进入待机模式;

低功耗模式函数入口:
1) 睡眠模式:__WFI()、__WFE();
2) 停机模式:PWR_EnterSTOPMode();
3) 待机模式:PWR_EnterSTANDBYMode ();

如何退出低功耗模式:
1)睡眠模式:任意中断/唤醒事件;
2)停机模式:任意外部中断、IWDG不复位方式唤醒;
3)待机模式:WKUP引脚的上升沿、 NRST引脚上外部复位、 IWDG复位;

需要注意的:
1)睡眠模式:无唤醒延时;
2)停机模式:PLL、HSI和HSE被禁止,唤醒或中断退出时,HSI/6被选为系统时钟;
3)待机模式:SRAM和寄存器内容丢失,唤醒后的代码执行等同于复位;

通过合理地配置低功耗模式,关闭不使用的外设,降低I/O口速度,我们可以在不影响正常使用的同时,降低MCU运行功耗,延长电池供电设备的使用时间。

转自: 灵动微电MMCU,转载此文目的在于传递更多信息,版权归原作者所有。

围观 646