初识EFR32BG22 ---- 能源管理篇

EFR32BG22是一款低功耗蓝牙soc,

优点是封装小,对比其他同类芯片,功耗表现出色且集成硬件加密加速器,方便做物联网信息安全。

缺点是资料多且杂,上手简单但精细设计需要花费的时间较多。

配套的IDE软件simpicity studio v5本意是降低开发难度,使工程师可以以组件的方式开发。但缺少组件代码引导,经常出现加入新组件后找不到相关代码的情况,且组件配置缺少详细的说明。

本文主要介绍EFR32BG22的能源管理方法。

目录

 1、低功耗模式切换的硬件底层实现方法

 2、低功耗模式切换的触发源

        2.1、进入EM4

        2.2、EM4的唤醒

 3、低功耗模式切换的软件实现方法


EFR32BG22支持5种能源模式,功耗由高到底如下:

  • EM0-active:可使用最高时钟频率,且射频和全部外设可用,功耗最高。
  • EM1-sleep:除计算模块以外的其他外设(包括射频)可用
  • EM2-deep sleep:射频,usart,flash等不可用,是最常用的低功耗状态。在这个状态下快启动RC振荡器工作,便于快速恢复高速运行状态。
  • EM3-stop:只有片上外设,I2C和外部中断可用。
  • EM4-shutoff:最低功耗模式,只有低功耗时钟,射频OOK检测,GPIO等工作。系统从EM4唤醒后会复位。

 1、低功耗模式切换的硬件底层实现方法

EFR32BG22实现低功耗的途径有以下几点:

  1. 外设电源管理:当前功耗状态下不可用的外设,能源管理单元会切断它的电源
  2. 内核电压调整:内核电压通过LDO给出,分为三个挡位(由低到高VSCALE0(EM2/3),VSCALE1(EM0/1低频),VSCALE2(EM0/1高频))。能源管理单元会根据能源状态切换内核电压。也就意味着可以通过测量DECOUPLE管脚电压,判断当前能源状态。

  3. 区分三个外设电源域,可通过配置,在EM2/3期间关闭某些电源域的供电 

 2、低功耗模式切换的触发源

 EM1/2/3之间的切换支持外设自动进行,不需要额外的处理。EM0切换其他状态需要发起指令(写寄存器相关位)。EM1/2/3状态切换到EM0可通过所有的软硬中断实现,EM4只能唤醒到EM0(因为EM4唤醒等同于复位)

2.1、进入EM4

方法:

可通过软件指令进入EM4: 向EM4CTRL->EM4ENTRY写2,3,2,3,2,3,2,3,2

gecko_SDK为我们提供了便捷的函数:

EMU_EnterEM4();

在进入EM4前需要保证:

  • 看门狗没有设置EM4BLOCK位
  • DCDC设置为bypass模式
  • 射频等模块不活动

否则CPU会阻止进入EM4的请求,导致进入EM4失败。

2.2、EM4的唤醒

唤醒方式如下:

  • BURTC中断
  • Reset管脚或断电复位
  • RFSENSE(需要使用OOK协议)
  • gpio中断(只可用带有EM4WU功能的gpio管脚,且需要配置EM4WUEN)

其中最常见的是gpio中断唤醒。

带有EM4WU功能的管脚如下:

    

只有以上管脚可配置为EM4唤醒管脚,配置方法为:

GPIO_EM4EnablePinWakeup(pin, polarity);

其中pin可以使用宏GPIO_IEN_EM4WUIENx,x对照上表根据管脚选择,比如使用PB03作为EM4的唤醒脚,x = 4。

polarity表示唤醒极性,若设置低电平唤醒,则写0,若设置高电平唤醒,也可以使用宏GPIO_IEN_EM4WUIENx进行设置

pin和polarity都是bitmap的形式可同时设置多个管脚作为唤醒源,分别设置不同的唤醒电平

调试初期,请注意在启动后进入EM4前留存足够的等待时间,用于重新烧录程序。否则若EM4唤醒失败,则芯片无法再次烧录

 3、低功耗模式切换的软件实现方法

em_emu.c中提供了一组用于低功耗模式切换的api:EMU_EnterEMx系列函数,用于功耗高到低的切换,其中EMx代表要切换到的能量状态名。

当然,若要实现系统的低功耗,需要各个功耗状态频繁的切换,除了EMU_EnterEMx系列函数,还需要一套通用的结构化的方法,帮助我们完成切换时机的判定,切换前后的外设配置等工作。

gecko_SDK贴心的为我们提供了这样一套机制,也就是power_manager组件。

这套组件使得应用开发变得很简单,只要在裸机实现的主循环中调用函数:

sl_power_manager_sleep();

这个函数提供了保姆级别的电源管理服务,帮助我们使系统永远保持在能够保证系统实现的最低功耗模式。

后续我们将更深入细节的探究power_manager的实现方法,和设计要点。

  • 31
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值