光伏無線通訊模塊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