ESP32C3 light sleep唤醒时间长

bokomon
Posts: 3
Joined: Thu Aug 21, 2025 7:36 am

ESP32C3 light sleep唤醒时间长

Postby bokomon » Fri Sep 19, 2025 9:51 am

使用ESP32C3模组开发,IDF版本5.4.2。
进入light sleep后通过按键(GPIO)唤醒。代码如下

Code: Select all

    gpio_wakeup_enable(KEY_GPIO, GPIO_INTR_LOW_LEVEL);
    esp_sleep_enable_gpio_wakeup();

    lcd_bk_shutdown();

    ESP_LOGW(tag, "SLEEP");
    esp_light_sleep_start();

    light_sleep_flag = 0;   //醒来
    app_adc_oneshot_wakeup();

    lcd_brightness_init();
    lcd_bk_on();
    
屏幕背光使用LEDC控制,睡眠前在lcd_bk_shutdown()中把引脚注册为普通GPIO并保持拉低,唤醒后在lcd_brightness_init()中配置LEDC。
目前遇到的问题是,睡眠时间越长唤醒越慢,若睡眠后立即唤醒就感觉不到延时,若睡眠几个小时之后唤醒就会在按键数十秒后屏幕才能点亮,若睡眠一夜更是需要一分半才能点亮屏幕。
这是什么原因?是嵌入式软件问题,还是芯片硬件正常现象?

bokomon
Posts: 3
Joined: Thu Aug 21, 2025 7:36 am

Re: ESP32C3 light sleep唤醒时间长

Postby bokomon » Mon Sep 22, 2025 7:08 am

我在这里增加了打印信息:

Code: Select all

light_sleep_flag = 0;   //醒来
ESP_LOGW(tag, "WAKE UP");
app_adc_oneshot_wakeup();
若立刻按键唤醒,打印信息是这样的:

Code: Select all

W (64297) app_sleep: SLEEP
W (64467) app_sleep: WAKE UP
若间隔几十分钟再唤醒,是这样的:

Code: Select all

W (125677) app_sleep: SLEEP
W (131771) app_sleep: WAKE UP
间隔时间变长了很多

soren.liu
Posts: 2
Joined: Mon Jan 05, 2026 1:03 pm

Re: ESP32C3 light sleep唤醒时间长

Postby soren.liu » Mon Jan 05, 2026 1:12 pm

我在esp32p4上遇到了相同的问题,请问你找到原因,解决了吗

soren.liu
Posts: 2
Joined: Mon Jan 05, 2026 1:03 pm

Re: ESP32C3 light sleep唤醒时间长

Postby soren.liu » Tue Jan 06, 2026 6:14 am

esp_timer_start_periodic,检查下代码里有没有这个周期性定时器,必须在light-sleep start 前关闭,唤醒之后再开启。因为light sleep的时候cpu暂停,主时钟停止,APB也是停止的,只剩RTC时钟,等恢复的时候,这个周期性定时器可能存在补偿行为+时间同步,随着睡眠时间越长,这种补偿+同步所耗费的时间就越久,把定时器关了,这个问题目前来看就修复了。

Who is online

Users browsing this forum: No registered users and 3 guests