乐鑫技术交流
直播中

张健

7年用户 1251经验值
私信 关注
[问答]

ESP32-S3的串口0或串口1,无法实现Light sleep模式下唤醒要怎么办?

ESP32在Light sleep模式下无法通过串口唤醒,按照文档该设置的都设置了,网上搜索了半天,找不到任何解决办法,甚至怀疑是不是芯片的BUG了。下面是启动日志,麻烦懂得高手指点一下,不胜感激

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x9 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x3ac
load:0x403c9700,len:0x9b8
load:0x403cc700,len:0x2688
entry 0x403c98c0
[0;32mI (76) spiram: Found 16MBit SPI RAM device[0m
[0;32mI (76) spiram: SPI RAM mode: sram 80m[0m
[0;32mI (77) spiram: PSRAM initialized, cache is in norESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x9 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x3ac
load:0x403c9700,len:0x9b8
load:0x403cc700,len:0x2688
entry 0x403c98c0
[0;32mI (76) spiram: Found 16MBit SPI RAM device[0m
[0;32mI (76) spiram: SPI RAM mode: sram 80m[0m
[0;32mI (77) spiram: PSRAM initialized, cache is in normal (1-core) mode.[0m
[0;32mI (81) cpu_start: Pro cpu up.[0m
[0;32mI (85) cpu_start: Starting app cpu, entry point is 0x40375404[0m
[0;32mI (0) cpu_start: App cpu up.[0m
[0;32mI (321) spiram: SPI SRAM memory test OK[0m
[0;32mI (330) cpu_start: Pro cpu start user code[0m
[0;32mI (330) cpu_start: cpu freq: 160000000[0m
[0;32mI (330) cpu_start: Application information:[0m
[0;32mI (333) cpu_start: Project name:     DS3[0m
[0;32mI (337) cpu_start: App version:      1[0m
[0;32mI (342) cpu_start: Compile time:     Nov 27 2022 23:59:12[0m
[0;32mI (348) cpu_start: ELF file SHA256:  43e6e22afe6fb8c7...[0m
[0;32mI (354) cpu_start: ESP-IDF:          v4.4.3-dirty[0m
[0;32mI (359) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (366) heap_init: At 3FC97160 len 000525B0 (329 KiB): D/IRAM[0m
[0;32mI (373) heap_init: At 3FCE9710 len 00005724 (21 KiB): STACK/DRAM[0m
[0;32mI (379) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM[0m
[0;32mI (386) heap_init: At 600FE024 len 00001FDC (7 KiB): RTCRAM[0m
[0;32mI (392) spiram: Adding pool of 2048K of external SPI memory to heap allocator[0m
[0;32mI (400) spi_flash: detected chip: generic[0m
[0;32mI (404) spi_flash: flash io: dio[0m
[0;33mW (408) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.[0m
[0;32mI (422) sleep: Configure to isolate all GPIO pins in sleep state[0m
[0;32mI (428) sleep: Enable automatic switching of GPIO sleep configuration[0m
[0;32mI (446) pm: Frequency switching config: CPU_MAX: 160, APB_MAX: 80, APB_MIN: 40, Light sleep: DISABLED[0m
[0;32mI (447) cpu_start: Starting scheduler on PRO CPU.[0m
[0;32mI (0) cpu_start: Starting scheduler on APP CPU.[0m
[0;32mI (466) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations[0m

回帖(1)

李玉兰

2024-6-13 16:18:36
根据您提供的信息,您遇到了ESP32-S3在Light sleep模式下无法通过串口唤醒的问题。以下是一些建议和解决方案:

1. 确保您已经正确配置了ESP32-S3的GPIO唤醒源。在Light sleep模式下,ESP32-S3可以通过GPIO唤醒。您需要在进入Light sleep模式之前设置GPIO唤醒源。以下是一个示例代码:

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

void setup_gpio_wakeup()
{
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_PIN_INTR_LOW_LEVEL; // 设置GPIO唤醒类型
    io_conf.mode = GPIO_MODE_INPUT;
    io_conf.pin_bit_mask = (1ULL<     io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 1;
    gpio_config(&io_conf);
}
```

2. 在进入Light sleep模式之前,调用`esp_sleep_enable_gpio_wakeup()`函数以启用GPIO唤醒功能。

```c
void enter_light_sleep()
{
    setup_gpio_wakeup(); // 设置GPIO唤醒源
    esp_sleep_enable_gpio_wakeup(); // 启用GPIO唤醒
    esp_light_sleep_start(); // 进入Light sleep模式
}
```

3. 确保您的硬件连接正确。检查您的ESP32-S3开发板和外部设备之间的连接是否正确,确保GPIO唤醒源能够正常工作。

4. 如果问题仍然存在,您可以尝试使用其他唤醒源,例如UART、I2C等。这些唤醒源可能在某些情况下比GPIO唤醒更可靠。

5. 如果您怀疑是芯片的BUG,您可以尝试升级ESP32-S3的固件版本,看看是否有修复这个问题的版本。

6. 最后,您可以在ESP32-S3的官方论坛或社区寻求帮助,看看是否有其他开发者遇到过类似的问题,并找到了解决方案。

希望这些建议能帮助您解决问题。
举报

更多回帖

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