光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3 Light-sleep模式,Light-sleep 的工作方式与 Modem-sleep 相似,不同的是,在 Light-sleep 模式下,ESP32-C3除了会关闭射频模块,数字外设和大部分的 RAM 会受到时钟门限的限制,并且 CPU 会暂停运行,比 Modem-sleep 模式的功耗更低。ESP32-C3 从 Light-sleep 模式唤醒后,其外设和 CPU会恢复运行,它们的内部状态会被保留。Light-sleep 模式唤醒延迟低于1 ms。有两种方式可以令光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3进入 Light-sleep 模式:
(1)手动进入 Light-sleep。通过调用 API手动进入 Light-sleep 模式。手动进入 Light-sleep 模式后,需要配置 Wi-Fi 唤醒源才能通过路由器接收来自智能手机或者服务器端的交互信息。
(2)自动进入Light-sleep。配置为自动进入 Light-sleep 模式后,设备会在CPU和射频模块处于空闲的状态下自动进入Light-sleep 模式,并能被自动唤醒,通过路由器接收来自智能手机或者服务器端的交互信息。
Light-sleep 唤醒源模式
针对手动进入 Light-seep模式需要配置唤醒源的情况,光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3可以使用定时器、GPIO、UART、Wi-Fi或Bluetooth LE 等将其从 Light-sleep 模式唤醒。ESP32-C3支持同时配置一个或多个唤醒源,在这种情况下,当任何一个唤醒源被触发时,ESP32-C3 都将被唤醒。在开发时,用户既可以使用 esp sleep enable * wakeup()函数来配置唤醒源,也可以使用esp_sleep_disable_wakeup source()函数来禁用某个唤醒源。在进入 Light-sleep 模式之前,可以随时配置唤醒源。在被唤醒后,可以通过esp sleep_get_wakeup_cause()函数来检查是哪个唤醒源被触发了。Light-sleep的唤醒方式如下:
(1)GPIO唤醒。在 Light-sleep 模式下,可以由外部唤醒源通过 GPIO来唤醒 ESP32-C3。通过外部的唤醒源,使用gpio wakeup enable()函数可以单独地将每个GPIO引脚配置为高电平唤醒或低电平唤醒。GPIO 唤醒可用于任何类型的 GPIO(RTCIO或数字IO)。通过esp_sleep_enable_gpio_wakeup()函数可启用GPIO唤醒。
(2)Timer唤醒。RTC控制器具有内置的定时器,可在预定义的时间到达时唤醒光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3。定时时间以微秒为精度来指定,但实际分辨率取决于为RTCSLOW_CLK选择的时钟源。Timer唤醒不需要在睡眠期间打开RTC外设或RTC存储器,通过esp_sleep_enable_timer_wakeup()函数可启用Timer唤醒。
(3)UART唤醒。当ESP32-C3从外部设备接收到UART 输入时,通常需要在输入数据可用时唤醒ESP32-C3。UART外设包含一项功能,即当看到RX引脚上有一定数量的上升沿时,可以将光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3从Light-sleep模式唤醒。使用uart_set_wakeup_threshold()函数以设置上升沿的数量。请注意,在唤醒ESP32-C3 后,UART 不会接收触发唤醒的字符(及其前面的任何字符),这意味着外部设备通常需要在发送数据之前向 ESP32-C3 发送额外的字符以唤醒ESP32-C3。使用esp_sleep_enable_uart_wakeup()函数可以启用UART唤醒。
(4)W-Fi唤醒。当ESP32-C3 需要保持 Wi-Fi连接时,可以启用 W-Fi唤醒源。在AP的每次DTIM Beacon到达之前会唤醒ESP32-C3,并打开其射频模块,从而保持 Wi-Fi连接。使用esp_sleep_enable_wifi_wakeup()函数可启用Wi-Fi唤醒。
手动进入Light-sleep 模式
通过手动进入Light-sleep模式,在应用逻辑需要休眠时可以调用相应的接口使ESP32-C3进入Light-sleep模式。进入 Light-sleep 模式后,ESP32-C3将关闭射频模块并暂停CPU运行。从Light-sleep模式唤醒后,ESP32-C3会在调用Light-sleep 接口的位置继续执行原来的程序手动进入Light-sleep模式后,可以通过启用W-Fi唤醒源而保持 ESP32-C3与路由器的连接并通过路由器接收来自智能手机或者服务器端的交互信息,如果没有启用 Wi-Fi 唤醒源,则可能会接收不到网络中的数据包或者断开 Wi-Fi 连接,Bluetooth lE 唤醒与其类似。注意:1、在调用手动进入 Light-sleep 模式的接口后,光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3 并不会立即进入 Light-sleep 模式,而是等到系统空闲后才会进入;2、在已启用 Wi-Fi 醒源的情况下,只有手动进入rihtesleep 模式,才能保持 ESP32-C3 与路由器的连接,并接收网络中发送的数据。
手动进入 Light-sleep 模式的配置说明
在配置唤醒源后,可通过调用 esp_light_sleep_start ()函数手动进入 Light-sleep 模式代码如下:
1.#define BUTTON_WAKEUP_LEVEL_DEFAULT 0
2.#define BUTTON_GPIO_NUM_DEFAULT 9
3.
4./*Configure the button GPIO as input,enable wakeup*/
5.const int button_gpio_num = BUTTON_GPIO_NUM_DEFAULT;
6.const int wakeup_level=BUTTON_WAKEUP_LEVEL_DEFAULT:
7.gpio_config_t config ={
8. .pin_bit_mask=BIT64(button_gpio_num)
9. .mode=GPIO_MODE_INPUT
10.};
11.ESP_ERROR_CHECK(gpio_config(&config));
12.gpio_wakeup_enable(button_gpio_num,wakeup_level == 0?
13.GPIO_INTR_LOW_LEVEL : GPIO_INTR_HIGH_LEVEL;
14./*Wake up in 2 seconds,or when button is pressed*/
15.esp_sleep_enable_timer_wakeup(2000000);
16.esp_sleep_enable_gpio_wakeup();
17./*Enter sleep mode*/
18.esp_light_sleep_start();
19./*Execution continues here after wakeup*/
在没有配置唤醒源的情况下也可以进入 Light-sleep 模式,在这种情况下,ESP32-C3 将一直处于Light-sleep 模式,直到外部复位为止。
自动进入 Light-sleep 模式
自动进入 Light-sleep 模式的工作原理是:在完成自动进入 Light-sleep 模式的配置后,ESP32-C3会在空闲且不需要射频模块工作时自动进入 Light-sleep 模式,无须调用手动进入 Light-sleep的接口,并能在需要工作(如 Wi-Fi和 Bluetooth LE 保持连接或者接收数据)时自动被唤醒,不需要单独配置唤醒源。在配置为自动进入 Light-sleep 模式后,ESP32-C3 可以保持与路由器的连接,并通过路由器接收来自智能手机或者服务器端的交互信息,对用户体验没有影响。Bluetooth LE 连接类似与路由器连接。通常自动进入 Light-sleep 模式会与 Modem-sleep 模式以及电源管理功能共同使用。在不需要使用光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3 射频模块时,进入 Modem-sleep 模式,如果此时 ESP32-C3 处于空闲状态,则会进入 Light-sleep 模式,以便进一步降低功耗。
自动进入 Light-sleep模式可用于需要ESP32-C3与路由器保持连接,并实时响应路由器发送的数据的场景。在未接收到收据时,CPU 可以处于空闲状态。例如,在 Wi-Fi智能开关的应用中,CPU在大部分时间都是空闲的,直到收到控制命令,CPU才进行开关操作。
自动进入Light-sleep模式的电源管理配置说明
通过esp_pm_configure()函数可以配置电源管理功能,当参数 light_sleep_enable为true时将启用自动进入Light-sleep模式的功能。在启用自动进入 Light-sleep模式的功能时,需要配置CONFIG_FREERTOSUSE_TICKLESS_IDLE和CONFIG_PM_ENABLE选项。配置 CONFIG_PM _ENABLE 时需要运行 idf.py menuconfig 命令打开配置工具,在Component config-->Power Management 下配Support for power management 即可。
应用程序可以通过调用esp_pmconfigure()函数启用动态调频(DFS)功能和自动进入Light-sleep模式。在使用光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3时,该函数对应的参数为esp_pm_config_esp32c3_t,该参数是个结构体,定义了动态调频的相关设置和自动进入 Light-sleep 模式的控制。在上述的结构体中,需要初始化下面三个成员变量(字段):
(1)max_freg_mhz。CPU 的大频率 (MH),即获取 ESP_PM CPU_EREQ MAX 电源管理锁后所使用的频率。该字段通常设置为 CONPIG_ESP32C3_DEFAULT-CPU_EREQ_MHZ。
(2)min_freg_mhz。CPU 的小频率 (MHz),即取 ESP_PM_APB_EREQ_MAX 电源管理锁后所使用的频率。该字段可设置为晶振(XTAL)的频率,或者XTAL 频率除以整数。注意,10MHz 是生成1MHz的 REE_TICK 默认时钟所需的小频率。
(2)light_sleep_enable。在没有获取任何电源管理锁时,该字段决定光伏无线通讯模块wifi芯片物联网乐鑫总代理商ESP32-C3 是否需要自动进入 Light-sleep 状态。该字段可设置为 true 或 false。
(3)自动进入 Light-sleep 模式是基于 FreeRTOS Tickless Idle 功能实现的,如果在 menuconfig中没有启用CONEIG_EREERTOS_USE_TICKLESS_IDLE 选项,则在自动进入Light-sleep 模式时,esp_pm_configure()函数将返回 ESP_ERR_NOT_SUPPORTED 错误。
1.#IF CONFIG_PM_ENABLE
2.//Configure dynamic frequency scaling:
3.//automatic light sleep is enabled if tickless idle support is enabled.
4.esp_pmconfig_ESP32-C3_t pm_config={
5..max_freq_mhz= 160,//Maximum CPU frequency
6..min_freq_mhz = 10, //Minimum CPU frequency
7.#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
8..light_sleep_enable = true
9.#endif
10.};
11.ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
12.#endif //CONFIG_PM_ENABLE