mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-03 20:54:32 +02:00
examples/power_save: set CPU frequencies in sdkconfig
This commit is contained in:
@@ -1,43 +1,96 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
config WIFI_SSID
|
||||||
string "WiFi SSID"
|
string "WiFi SSID"
|
||||||
default "myssid"
|
default "myssid"
|
||||||
help
|
help
|
||||||
SSID (network name) for the example to connect to.
|
SSID (network name) for the example to connect to.
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
config WIFI_PASSWORD
|
||||||
string "WiFi Password"
|
string "WiFi Password"
|
||||||
default "mypassword"
|
default "mypassword"
|
||||||
help
|
help
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
WiFi password (WPA or WPA2) for the example to use.
|
||||||
|
|
||||||
config WIFI_LISTEN_INTERVAL
|
config WIFI_LISTEN_INTERVAL
|
||||||
int "WiFi listen interval"
|
int "WiFi listen interval"
|
||||||
default 3
|
default 3
|
||||||
help
|
help
|
||||||
Interval for station to listen to beacon from AP. The unit of listen interval is one beacon interval.
|
Interval for station to listen to beacon from AP. The unit of listen interval is one beacon interval.
|
||||||
For example, if beacon interval is 100 ms and listen interval is 3, the interval for station to listen
|
For example, if beacon interval is 100 ms and listen interval is 3, the interval for station to listen
|
||||||
to beacon is 300 ms.
|
to beacon is 300 ms.
|
||||||
|
|
||||||
choice POWER_SAVE_MODE
|
choice POWER_SAVE_MODE
|
||||||
prompt "power save mode"
|
prompt "power save mode"
|
||||||
default POWER_SAVE_MIN_MODEM
|
default POWER_SAVE_MIN_MODEM
|
||||||
help
|
help
|
||||||
Power save mode for the esp32 to use. Modem sleep mode includes minimum and maximum power save modes.
|
Power save mode for the esp32 to use. Modem sleep mode includes minimum and maximum power save modes.
|
||||||
In minimum power save mode, station wakes up every DTIM to receive beacon. Broadcast data will not be
|
In minimum power save mode, station wakes up every DTIM to receive beacon. Broadcast data will not be
|
||||||
lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short
|
lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short
|
||||||
for DTIM is determined by AP.
|
for DTIM is determined by AP.
|
||||||
In maximum power save mode, station wakes up every listen interval to receive beacon. Broadcast data
|
In maximum power save mode, station wakes up every listen interval to receive beacon. Broadcast data
|
||||||
may be lost because station may be in sleep state at DTIM time. If listen interval is longer, more power
|
may be lost because station may be in sleep state at DTIM time. If listen interval is longer, more power
|
||||||
is saved but broadcast data is more easy to lose.
|
is saved but broadcast data is more easy to lose.
|
||||||
|
|
||||||
config POWER_SAVE_NONE
|
config POWER_SAVE_NONE
|
||||||
bool "none"
|
bool "none"
|
||||||
config POWER_SAVE_MIN_MODEM
|
config POWER_SAVE_MIN_MODEM
|
||||||
bool "minimum modem"
|
bool "minimum modem"
|
||||||
config POWER_SAVE_MAX_MODEM
|
config POWER_SAVE_MAX_MODEM
|
||||||
bool "maximum modem"
|
bool "maximum modem"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
choice EXAMPLE_MAX_CPU_FREQ
|
||||||
|
prompt "Maximum CPU frequency"
|
||||||
|
default EXAMPLE_MAX_CPU_FREQ_80
|
||||||
|
help
|
||||||
|
Maximum CPU frequency to use for dynamic frequency scaling.
|
||||||
|
|
||||||
|
config EXAMPLE_MAX_CPU_FREQ_80
|
||||||
|
bool "80 MHz"
|
||||||
|
config EXAMPLE_MAX_CPU_FREQ_160
|
||||||
|
bool "160 MHz"
|
||||||
|
config EXAMPLE_MAX_CPU_FREQ_240
|
||||||
|
bool "240 MHz"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config EXAMPLE_MAX_CPU_FREQ_MHZ
|
||||||
|
int
|
||||||
|
default 80 if EXAMPLE_MAX_CPU_FREQ_80
|
||||||
|
default 160 if EXAMPLE_MAX_CPU_FREQ_160
|
||||||
|
default 240 if EXAMPLE_MAX_CPU_FREQ_240
|
||||||
|
|
||||||
|
|
||||||
|
choice EXAMPLE_MIN_CPU_FREQ
|
||||||
|
prompt "Minimum CPU frequency"
|
||||||
|
default EXAMPLE_MIN_CPU_FREQ_10M
|
||||||
|
help
|
||||||
|
Minimum CPU frequency to use for dynamic frequency scaling.
|
||||||
|
Should be set to XTAL frequency or XTAL frequency divided by integer.
|
||||||
|
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_40M
|
||||||
|
bool "40 MHz (use with 40MHz XTAL)"
|
||||||
|
depends on ESP32_XTAL_FREQ_40 || ESP32_XTAL_FREQ_AUTO
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_20M
|
||||||
|
bool "20 MHz (use with 40MHz XTAL)"
|
||||||
|
depends on ESP32_XTAL_FREQ_40 || ESP32_XTAL_FREQ_AUTO
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_10M
|
||||||
|
bool "10 MHz (use with 40MHz XTAL)"
|
||||||
|
depends on ESP32_XTAL_FREQ_40 || ESP32_XTAL_FREQ_AUTO
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_26M
|
||||||
|
bool "26 MHz (use with 26MHz XTAL)"
|
||||||
|
depends on ESP32_XTAL_FREQ_26 || ESP32_XTAL_FREQ_AUTO
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_13M
|
||||||
|
bool "13 MHz (use with 26MHz XTAL)"
|
||||||
|
depends on ESP32_XTAL_FREQ_26 || ESP32_XTAL_FREQ_AUTO
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config EXAMPLE_MIN_CPU_FREQ_MHZ
|
||||||
|
int
|
||||||
|
default 40 if EXAMPLE_MIN_CPU_FREQ_40M
|
||||||
|
default 20 if EXAMPLE_MIN_CPU_FREQ_20M
|
||||||
|
default 10 if EXAMPLE_MIN_CPU_FREQ_10M
|
||||||
|
default 26 if EXAMPLE_MIN_CPU_FREQ_26M
|
||||||
|
default 13 if EXAMPLE_MIN_CPU_FREQ_13M
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@@ -96,13 +96,12 @@ void app_main()
|
|||||||
ESP_ERROR_CHECK( ret );
|
ESP_ERROR_CHECK( ret );
|
||||||
|
|
||||||
#if CONFIG_PM_ENABLE
|
#if CONFIG_PM_ENABLE
|
||||||
// Configure dynamic frequency scaling: maximum frequency is set in sdkconfig,
|
// Configure dynamic frequency scaling:
|
||||||
// minimum frequency is XTAL.
|
// maximum and minimum frequencies are set in sdkconfig,
|
||||||
rtc_cpu_freq_t max_freq;
|
// automatic light sleep is enabled if tickless idle support is enabled.
|
||||||
rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ, &max_freq);
|
|
||||||
esp_pm_config_esp32_t pm_config = {
|
esp_pm_config_esp32_t pm_config = {
|
||||||
.max_cpu_freq = max_freq,
|
.max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ,
|
||||||
.min_cpu_freq = RTC_CPU_FREQ_XTAL,
|
.min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ,
|
||||||
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
|
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
|
||||||
.light_sleep_enable = true
|
.light_sleep_enable = true
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user