NXP MCU 技术论坛
直播中

神之小风

13年用户 938经验值
私信 关注
[问答]

深度睡眠唤醒时的RTC重置问题如何解决?

我遇到了从深度睡眠中醒来后重置 RTC 的问题。我已将范围缩小到 ESP32-C3 在其中一个 GPIO 引脚上被唤醒的方式。

我目前在 GPIO 输入端有一个 nchannel mosfet(见附图)并且在启动时有以下代码打印出唤醒的原因:
代码:全选
esp_reset_reason_t esp_reason = esp_reset_reason();
printf("ESP reset reason: %i\n", esp_reason);

RESET_REASON rtc_reason = rtc_get_reset_reason(0);
printf("RTC reset reason: %i\n", rtc_reason);

esp_sleep_source_t wakeup_respon = esp_sleep_get_wakeup_cause();
printf("Wakeup reason: %i\n", wakeup_respon);

95% 的时间当我触发唤醒引脚时,我得到以下打印输出:

ESP 重置原因:8

RTC 重置原因:5

唤醒原因:7

但有时我得到以下信息:

ESP 重置原因:1

RTC 重置原因:1

唤醒原因:0

,当我得到这个时,RTC 时间已被重置。

我尝试的另一件事是用开关替换 nchannel mosfet(进行实验),发现在超过 10,000 次唤醒中,它总是正确唤醒。
然后我尝试使用正弦波作为唤醒信号,发现它总是会唤醒失败(RTC 将被重置)。

这让我相信 wkaeup 脉冲的上升/下降时间对这个错误有影响。上升/下降时间小于 100uS 的任何东西“似乎”都可以,但任何更大的东西都会导致唤醒问题。





注意:

目前在 IDF V4.4.2 上使用 ESP32-C3-MINI

更多回帖

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