乐鑫技术交流
直播中

fdvcxhtg

8年用户 995经验值
擅长:嵌入式技术
私信 关注
[问答]

请问esp32-s3如何正确进入睡眠模式?

开发板:esp32-s3-WROOM-1
ESP-IDF:5.0
不管通过esp_light_sleep_start()还是esp_deep_sleep_start()进入睡眠模式,功耗都是在30mA~3mA。
感觉进入的都是Modem-sleep工作模式。
该如何测试才能达到规格书上对应的工作模式下的功耗呢?

回帖(1)

刘勇

2024-6-11 17:14:18
要使ESP32-S3正确进入睡眠模式并达到规格书上的功耗,您需要遵循以下步骤:

1. 确保您使用的是ESP-IDF 5.0版本,因为您已经提到了这一点。

2. 根据您的需求选择合适的睡眠模式。ESP32-S3支持以下几种睡眠模式:
   - 轻睡眠(light sleep):允许Wi-Fi和蓝牙操作,但功耗较高。
   - 深度睡眠(deep sleep):关闭Wi-Fi和蓝牙,功耗较低。

3. 配置电源管理设置。在`menuconfig`中,选择`Component config` > `ESP32-S3-specific` > `Power Management Settings`。在这里,您可以配置以下选项:
   - `Enable power management in deep sleep`:启用深度睡眠时的电源管理。
   - `Enable light sleep`:启用轻睡眠模式。

4. 在代码中设置睡眠模式。根据您的需求,使用`esp_light_sleep_start()`或`esp_deep_sleep_start()`函数。例如,要进入深度睡眠模式,您可以使用以下代码:

```c
#include "esp_sleep.h"

void app_main() {
    while (1) {
        // 执行您的代码

        // 进入深度睡眠模式
        esp_deep_sleep_start();
    }
}
```

5. 配置唤醒源。在深度睡眠模式下,您需要设置一个唤醒源,例如GPIO、定时器等。例如,要使用GPIO作为唤醒源,您可以使用以下代码:

```c
#include "driver/gpio.h"
#include "esp_sleep.h"

void app_main() {
    gpio_config_t io_conf = {
        .pin_bit_mask = 1ULL << GPIO_NUM_0,
        .mode = GPIO_MODE_INPUT,
        .pull_up_en = 1,
        .pull_down_en = 0,
        .intr_type = GPIO_INTR_ANYEDGE,
    };
    gpio_config(&io_conf);

    while (1) {
        // 执行您的代码

        // 设置GPIO唤醒源
        esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, ESP_SLEEP_WAKEUP_ALL_LOW);

        // 进入深度睡眠模式
        esp_deep_sleep_start();
    }
}
```

6. 检查功耗。在进入睡眠模式后,使用万用表或其他测量工具检查开发板的功耗。确保电源线和地线连接正确,以获得准确的测量结果。

7. 如果功耗仍然不符合规格书上的要求,请检查您的硬件连接和电源设置,确保没有其他因素导致功耗增加。

通过以上步骤,您应该能够使ESP32-S3正确进入睡眠模式并达到规格书上的功耗要求。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分