ESP32 在低功耗模式下,如何正确配置 RTC 外设唤醒源并保持 UART 数据不丢失

· 1 浏览

回答(4)

实操技巧:在进入睡眠前,将UART的FIFO数据搬移到RTC内存,并设置一个标志位,唤醒后先检查标志位再恢复数据,可有效避免丢失。
硬件调试员 · 2026-08-27
注意:深度睡眠下UART无法工作,若必须深度睡眠,可外接RTC芯片或使用ESP32的ULP协处理器监控UART引脚,但复杂度高,不推荐。
低功耗小王 · 2026-08-27
补充:使用esp_sleep_enable_uart_wakeup()时,需确保UART时钟在睡眠期间保持,建议使用ESP32的light sleep模式,并配置UART的RX边沿唤醒。
嵌入式老张 · 2026-08-27
在ESP32低功耗模式下,配置RTC外设唤醒源并保持UART数据不丢失,需分两步:首先,启用RTC唤醒源,使用esp_sleep_enable_rtc_timer_wakeup()或esp_sleep_enable_ext0_wakeup()等函数,并确保唤醒源对应的GPIO或定时器已正确初始化。其次,UART数据保持需在进入睡眠前,将UART接收到的数据存入RTC内存(如RTC_DATA_ATTR变量),并配置UART为唤醒源之一,使用esp_sleep_enable_uart_wakeup(),同时设置UART的FIFO阈值和超时中断。注意,ESP32在深度睡眠时UART外设会断电,因此需在浅睡眠(如modem sleep)下使用,或通过外部唤醒后立即恢复UART。实操建议:在进入睡眠前,禁用UART中断,保存未读数据,并设置唤醒后重新初始化UART。测试时,用逻辑分析仪验证唤醒时序,避免数据丢失。
mcuku 阿沐 · 2026-08-27