步骤1:简介
ESP32具有以下功能:省电模式,称为“深度睡眠”。在这种模式下,CPU,大多数RAM和所有数字时钟外围设备都将关闭。芯片上唯一仍可连接的部分是RTC控制器,RTC外设(包括ULP协处理器)和RTC存储器。
我们有几种方法可以在睡眠时唤醒ESP32。进入深度睡眠模式之前,可以随时设置唤醒源。
步骤2:唤醒ESP32的方法
有五种唤醒ESP32的方法:
•计时器
•外部唤醒(ext0)
•外部唤醒(ext1)
•ULP协处理器唤醒
•触摸板
步骤3:计时器
RTC控制器具有内置的计时器,在预定的时间段后,可用于激活芯片。时间以微秒精度指定。
esp_deep_sleep_enable_timer_wakeup( uint64_t time_in_us )
time_in_us》是以微秒为单位的时间
步骤4:外部唤醒(ext0)
当RTC GPIO之一进入预定义的逻辑级别时,RTC IO模块包含触发警报的逻辑。 RTC IO是RTC外设电源域的一部分,因此,如果请求此激活源,则在深度睡眠期间RTC外设将保持活动状态。
esp_deep_sleep_enable_ext0_wakeup( gpio_num_t gpio_num , int level)
gpio_num》使用的GPIO编号作为激活源。只能使用RTC功能的GPIO:0,2,4,12-15,25-27,32-39。
level》输入级别将触发警报(0 = LOW,1 =高)
步骤5:外部唤醒(ext1)
RTC控制器包含使用多个RTC GPIO触发闹钟的逻辑。
esp_deep_sleep_enable_ext1_wakeup(uint64_t mask, esp_ext1_wakeup_mode_t mode)
mask》会导致激活的GPIO编号的位掩码。此位图中只能使用启用RTC的GPIO:0,2,4,12-15,25-27,32-39。
mode》选择用于确定激活条件的逻辑功能:
•ESP_EXT1_WAKEUP_ALL_LOW:在所有选定的GPIO都为LOW时唤醒
•ESP_EXT1_WAKEUP_ANY_HIGH:在任何选定的GPIO为HIGH时唤醒
步骤6 :ULP协处理器唤醒
当芯片处于深度睡眠状态时,ULP协处理器可以运行,并且可以用于搜索传感器,监视ADC或电容式触摸传感器的值,并在特定事件发生时激活芯片
ULP协处理器是RTC外围设备电源域的一部分,并运行存储在慢速存储器RTC中的程序。因此,如果请求此激活模式,则在深度睡眠期间将激活RTC外设和RTC慢速存储器。
步骤7:触摸板
RTC控制器包含使用电容式触摸传感器触发警报的逻辑。但是,触针的定义不同。我们必须对每个所需的引脚使用触摸中断。