ESP32 学习笔记(二十九) ESP32 低功耗模式

ESP32 提供 Modem-sleep、Light-sleep 和 Deep-sleep 三种低功耗模式。Modem-sleep 保持 Wi-Fi 连接,CPU 可运行;Light-sleep 更低功耗,CPU 暂停运行;Deep-sleep 则是 CPU 和大部分外设掉电。唤醒方式包括 GPIO、ULP 协处理器、Timer 和 UART。Light-sleep 可以通过 GPIO 或定时器唤醒,而 Deep-sleep 则需要配置唤醒源。
摘要由CSDN通过智能技术生成

ESP32 低功耗模式

1 概要

ESP32 系列芯片提供三种可配置的睡眠模式,针对这些睡眠模式,我们提供了了多种低功耗解决方案,用户可以结合具体需求选择睡眠模式并进行配置。三种睡眠模式如下:

  • Modem-sleep 模式:CPU 可运行,时钟可被配置。Wi-Fi/蓝牙基带和射频关闭。
  • Light-sleep 模式:CPU 暂停运行,Wi-Fi/蓝牙基带和射频关闭。RTC 存储器和外设以及 ULP 协处理器运行。任何唤醒事件(MAC、主机、RTC 定时器或外部中断)都会唤醒芯片。
  • Deep-sleep 模式:CPU 和大部分外设都会掉电,Wi-Fi/蓝牙基带和射频关闭,只有 RTC 存储器和 RTC 外设以及 ULP 协处理器可以工作。Wi-Fi 和蓝牙连接数据存储在 RTC 中。

三种模式的区别如下:
三种模式的区别


2 Modem-sleep 模式

目前 ESP32 的 Modem-sleep 仅工作在 Station 模式下,连接路由器后生效。Station 会周期性在工作状态和睡眠状态两者之间切换。
ESP32 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接。在 Modem-sleep 模式下,系统可以自动被唤醒,无需配置唤醒源。

一般路由器的 DTIM Beacon 间隔为 100 ms ~ 1,000 ms。

DTIM (Delivery Traffic Indication Message): 使用无线路由器时无线发送数据包的频率。

在 Modem-sleep 模式下,ESP32 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块电路,达到省电效果,在下次 Beacon 到来前自动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。Modem-sleep 模式可以保持与路由器的 Wi-Fi 连接,并通过路由器接收来自手机或者服务器的交互信息。

2.1 API 说明

通过以下接口配置 Modem-sleep 模式,type 可选参数:

  • WIFI_PS_NONE: 不使用 Modem-sleep 模式
  • WIFI_PS_MIN_MODEM: ESP32 接收 Beacon 的间隔与路由器的 DTIM 间隔相同,即 1 个路由器间隔
  • WIFI_PS_MAX_MODEM: ESP32 接收 Beacon 的间隔可由程序进行配置,间隔周期 wifi_sta_config_t 结构体中 listen_interval 值决定,单位为 路由器的 Beacon 间隔,默认值为 3(即 3 个路由器 Beacon 间隔)
typedef enum {
   
    WIFI_PS_NONE,        /**< No power save */
    WIFI_PS_MIN_MODEM,   /**< Minimum modem power saving. In this mode, station wakes up to receive beacon every DTIM period */
    WIFI_PS_MAX_MODEM,   /**< Maximum modem power saving. In this mode, interval to receive beacons is determined by the listen_interval parameter in wifi_sta_config_t */
} wifi_ps_type_t;
esp_err_t esp_wifi_set_ps(wifi_ps_type_t type);
  1. type 参数为 WIFI_PS_MAX_MODEM ,ESP32 接收 Beacon 的间隔 listen_interval 配置方法:
#define LISTEN_INTERVAL 3
wifi_config_t wifi_config = {
   
    .sta = {
   
        .ssid = "SSID",
        .password = "Password",
        .listen_interval = LISTEN_INTERVAL,
    },
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值