]> granicus.if.org Git - esp-idf/commitdiff
examples/power_save: set CPU frequencies in sdkconfig
authorIvan Grokhotkov <ivan@espressif.com>
Wed, 25 Jul 2018 23:02:31 +0000 (02:02 +0300)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 21 Aug 2018 05:02:46 +0000 (13:02 +0800)
examples/wifi/power_save/main/Kconfig.projbuild
examples/wifi/power_save/main/power_save.c

index 974474d33849c1529344dc281e92f62fa15c44c9..ea2b0aa26ac6ee6e20986a8d296c8c75bbbb2333 100644 (file)
@@ -1,43 +1,96 @@
 menu "Example Configuration"
 
 config WIFI_SSID
-    string "WiFi SSID"
-    default "myssid"
-    help
-       SSID (network name) for the example to connect to.
+       string "WiFi SSID"
+       default "myssid"
+       help
+               SSID (network name) for the example to connect to.
 
 config WIFI_PASSWORD
-    string "WiFi Password"
-    default "mypassword"
-    help
-       WiFi password (WPA or WPA2) for the example to use.
-       
+       string "WiFi Password"
+       default "mypassword"
+       help
+               WiFi password (WPA or WPA2) for the example to use.
+               
 config WIFI_LISTEN_INTERVAL
-    int "WiFi listen interval"
-    default 3
-    help
-       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 
-       to beacon is 300 ms.
+       int "WiFi listen interval"
+       default 3
+       help
+               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 
+               to beacon is 300 ms.
 
 choice POWER_SAVE_MODE
-    prompt "power save mode"
-    default POWER_SAVE_MIN_MODEM
-    help
-       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 
-       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. 
-       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 
-       is saved but broadcast data is more easy to lose. 
+       prompt "power save mode"
+       default POWER_SAVE_MIN_MODEM
+       help
+               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 
+               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. 
+               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 
+               is saved but broadcast data is more easy to lose. 
 
 config POWER_SAVE_NONE
-    bool "none"
+       bool "none"
 config POWER_SAVE_MIN_MODEM
-    bool "minimum modem"
+       bool "minimum modem"
 config POWER_SAVE_MAX_MODEM
-    bool "maximum modem"
+       bool "maximum modem"
 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
index d2e60fdfd1fb39bf7914a604a447d4e20bf407aa..c9576a9aa6d3bf1ed62e271d9ffa125426a40513 100644 (file)
@@ -96,13 +96,12 @@ void app_main()
     ESP_ERROR_CHECK( ret );
 
 #if CONFIG_PM_ENABLE
-    // Configure dynamic frequency scaling: maximum frequency is set in sdkconfig,
-    // minimum frequency is XTAL.
-    rtc_cpu_freq_t max_freq;
-    rtc_clk_cpu_freq_from_mhz(CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ, &max_freq);
+    // Configure dynamic frequency scaling:
+    // maximum and minimum frequencies are set in sdkconfig,
+    // automatic light sleep is enabled if tickless idle support is enabled.
     esp_pm_config_esp32_t pm_config = {
-            .max_cpu_freq = max_freq,
-            .min_cpu_freq = RTC_CPU_FREQ_XTAL,
+            .max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ,
+            .min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ,
 #if CONFIG_FREERTOS_USE_TICKLESS_IDLE
             .light_sleep_enable = true
 #endif