乐鑫技术交流
直播中

陈霞

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

ESP-M3/ESP8285深度睡眠唤醒问题如何解决?

在 ESP-M3/ESP8285 上,将 GPIO16 连接到 RST 会导致出现快速重置,而不是在设置的间隔后唤醒。如果我用手指触摸 GPIO16 和 RST 之间的电阻器上的一根引线,似乎确实有效。
我有一个远程传感器项目,我一直在使用 Wemos D1 Mini 进行一段时间,我希望将其缩小到 ESP-M3/ESP8285。我的项目翻译得很好,除了我在 ESP-M3 上的深度睡眠唤醒方面遇到问题。在 D1 Mini 上,我有一个从 D0 连接到 RST 的二极管,然后我给它一个 ESP.deepSleep 并设置适当的时间,它先休眠然后正确唤醒。
我找到的所有文档都表明我需要将 GPIO16 连接到 RST。当我用那个连接打开 ESP-M3 时,板载 LED 快速闪烁,我的串行控制台显示随机乱码。我意识到每次 LED 闪光灯都会重复出现乱码,并且在没有 GPIO16 到 RST 连接的情况下打开设备电源时出现一次相同的乱码串。
我还注意到,如果没有 GPIO16 到 RST 连接,设备会进入深度睡眠,然后在设定时间后,板载 LED 闪烁一次。
一件奇怪的事情是,如果我用手指触摸电阻器的一根引线,它似乎可以正常工作。
为了调试,我将代码缩减为:
代码:全选void setup() {
    Serial.begin(115200);
    Serial.println("");     // Linebreak to clear all the gibberish
    Serial.println("Starting up...");

    delay(3000);
    int naptime = 5000000;
    Serial.println("Nap time");
    ESP.deepSleep(naptime, WAKE_NO_RFCAL);
}

void loop() {
}

并将我的布线简化为仅 VCC、GND、TX 和 RX 到我的 USB 串行适配器,以及连接到 RST 的 GPIO16。

回帖(1)

李斌

2024-1-4 17:47:29
遇到您所述的问题时,您可以尝试以下步骤:

1. 确保您已正确设置了GPIO16的引脚模式。在使用深度睡眠唤醒时,GPIO16需要设置为外部唤醒引脚。可以使用以下代码进行设置:

   ```
   pinMode(16, INPUT_PULLUP);
   rtc_gpio_pulldown_dis(16);
   rtc_gpio_pullup_en(16);
   gpio_pin_wakeup_enable(GPIO_NUM_16, GPIO_INTR_LOW_LEVEL);
   ```

2. 确保GPIO16连接到RST的电阻器的值与您的应用程序需要的值相同。如果阻值过大可能会使唤醒失败。

3. 在连接完GPIO16和RST之后,将芯片电源断开并重新连接,可能有助于解决快速重置问题。

4. 尝试使用外部唤醒引脚以外的唤醒方式,例如定时唤醒或串口唤醒。

5. 如果问题仍然存在,您可以尝试使用外部电路来仿真GPIO16的触发,例如使用定时器或运放作为触发器,并将输出连接到GPIO16。

希望这些步骤可以帮助您解决ESP-M3/ESP8285深度睡眠唤醒的问题。
举报

更多回帖

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