Merge branch 'feature/further_support_esp32c2_sleep' into 'master'
esp32c2/sleep: further support sleep for esp32c2 with 26MHz XTAL Closes IDF-5544 See merge request espressif/esp-idf!19017
This commit is contained in:
@@ -103,7 +103,6 @@ menu "Hardware Settings"
|
||||
|
||||
If you are seeing "flash read err, 1000" message printed to the
|
||||
console after deep sleep reset, try increasing this value.
|
||||
|
||||
endmenu
|
||||
|
||||
menu "RTC Clock Config"
|
||||
@@ -168,7 +167,6 @@ menu "Hardware Settings"
|
||||
default 0x4000 if MMU_PAGE_SIZE_16KB
|
||||
default 0x8000 if MMU_PAGE_SIZE_32KB
|
||||
default 0x10000 if MMU_PAGE_SIZE_64KB
|
||||
|
||||
endmenu
|
||||
|
||||
# Insert chip-specific HW config
|
||||
@@ -193,4 +191,45 @@ menu "Hardware Settings"
|
||||
(e.g. SPI Flash write).
|
||||
endmenu # GDMA Configuration
|
||||
|
||||
menu "Main XTAL Config"
|
||||
choice XTAL_FREQ_SEL
|
||||
prompt "Main XTAL frequency"
|
||||
default XTAL_FREQ_40 if SOC_XTAL_SUPPORT_40M
|
||||
help
|
||||
This option selects the operating frequency of the XTAL (crystal) clock used to drive the ESP target.
|
||||
The selected value MUST reflect the frequency of the given hardware.
|
||||
|
||||
Note: The XTAL_FREQ_AUTO option allows the ESP target to automatically estimating XTAL clock's
|
||||
operating frequency. However, this feature is only supported on the ESP32. The ESP32 uses the
|
||||
internal 8MHZ as a reference when estimating. Due to the internal oscillator's frequency being
|
||||
temperature dependent, usage of the XTAL_FREQ_AUTO is not recommended in applications that operate
|
||||
in high ambient temperatures or use high-temperature qualified chips and modules.
|
||||
|
||||
config XTAL_FREQ_24
|
||||
depends on SOC_XTAL_SUPPORT_24M
|
||||
bool "24 MHz"
|
||||
config XTAL_FREQ_26
|
||||
depends on SOC_XTAL_SUPPORT_26M
|
||||
bool "26 MHz"
|
||||
config XTAL_FREQ_32
|
||||
depends on SOC_XTAL_SUPPORT_32M
|
||||
bool "32 MHz"
|
||||
config XTAL_FREQ_40
|
||||
depends on SOC_XTAL_SUPPORT_40M
|
||||
bool "40 MHz"
|
||||
config XTAL_FREQ_AUTO
|
||||
depends on SOC_XTAL_SUPPORT_AUTO_DETECT
|
||||
bool "Autodetect"
|
||||
endchoice
|
||||
|
||||
# rtc_xtal_freq_t enum in soc/rtc.h lists the XTAL frequencies can be supported
|
||||
# SOC_XTAL_SUPPORT_XXX in soc_caps.h lists the XTAL frequencies already supported
|
||||
config XTAL_FREQ
|
||||
int
|
||||
default 24 if XTAL_FREQ_24
|
||||
default 26 if XTAL_FREQ_26
|
||||
default 32 if XTAL_FREQ_32
|
||||
default 40 if XTAL_FREQ_40
|
||||
default 0 if XTAL_FREQ_AUTO
|
||||
endmenu
|
||||
endmenu
|
||||
|
||||
@@ -63,7 +63,7 @@ int esp_clk_apb_freq(void);
|
||||
* @brief Return frequency of the main XTAL
|
||||
*
|
||||
* Frequency of the main XTAL can be either auto-detected or set at compile
|
||||
* time (see CONFIG_ESP32_XTAL_FREQ_SEL sdkconfig option). In both cases, this
|
||||
* time (see CONFIG_XTAL_FREQ_SEL sdkconfig option). In both cases, this
|
||||
* function returns the actual value at run time.
|
||||
*
|
||||
* @return XTAL frequency, in Hz
|
||||
|
||||
@@ -24,33 +24,3 @@ config ESP32_REV_MIN
|
||||
default 1 if ESP32_REV_MIN_1
|
||||
default 2 if ESP32_REV_MIN_2
|
||||
default 3 if ESP32_REV_MIN_3
|
||||
|
||||
choice ESP32_XTAL_FREQ_SEL
|
||||
prompt "Main XTAL frequency"
|
||||
default ESP32_XTAL_FREQ_40
|
||||
help
|
||||
ESP32 currently supports the following XTAL frequencies:
|
||||
|
||||
- 26 MHz
|
||||
- 40 MHz
|
||||
|
||||
Startup code can automatically estimate XTAL frequency. This feature
|
||||
uses the internal 8MHz oscillator as a reference. Because the internal
|
||||
oscillator frequency is temperature dependent, it is not recommended
|
||||
to use automatic XTAL frequency detection in applications which need
|
||||
to work at high ambient temperatures and use high-temperature
|
||||
qualified chips and modules.
|
||||
config ESP32_XTAL_FREQ_40
|
||||
bool "40 MHz"
|
||||
config ESP32_XTAL_FREQ_26
|
||||
bool "26 MHz"
|
||||
config ESP32_XTAL_FREQ_AUTO
|
||||
bool "Autodetect"
|
||||
endchoice
|
||||
|
||||
# Keep these values in sync with rtc_xtal_freq_t enum in soc/rtc.h
|
||||
config ESP32_XTAL_FREQ
|
||||
int
|
||||
default 0 if ESP32_XTAL_FREQ_AUTO
|
||||
default 40 if ESP32_XTAL_FREQ_40
|
||||
default 26 if ESP32_XTAL_FREQ_26
|
||||
|
||||
@@ -95,7 +95,7 @@ void rtc_clk_init(rtc_clk_config_t cfg)
|
||||
|
||||
rtc_xtal_freq_t est_xtal_freq = rtc_clk_xtal_freq_estimate();
|
||||
if (est_xtal_freq != configured_xtal_freq) {
|
||||
ESP_HW_LOGW(TAG, "Possibly invalid CONFIG_ESP32_XTAL_FREQ setting (%dMHz). Detected %d MHz.",
|
||||
ESP_HW_LOGW(TAG, "Possibly invalid CONFIG_XTAL_FREQ setting (%dMHz). Detected %d MHz.",
|
||||
configured_xtal_freq, est_xtal_freq);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
config ESP32C2_XTAL_FREQ
|
||||
int
|
||||
default 40 if ESP32C2_XTAL_FREQ_40
|
||||
default 26 if ESP32C2_XTAL_FREQ_26
|
||||
|
||||
choice ESP32C2_XTAL_FREQ_SEL
|
||||
prompt "Main XTAL frequency"
|
||||
default ESP32C2_XTAL_FREQ_40
|
||||
help
|
||||
ESP32-C2 currently supports the following XTAL frequencies:
|
||||
|
||||
- 26 MHz
|
||||
- 40 MHz
|
||||
|
||||
This option must be set to the correct value for the given hardware.
|
||||
|
||||
config ESP32C2_XTAL_FREQ_40 # TODO: IDF-5488
|
||||
bool "40 MHz"
|
||||
config ESP32C2_XTAL_FREQ_26
|
||||
bool "26 MHz"
|
||||
endchoice
|
||||
@@ -302,8 +302,8 @@ rtc_xtal_freq_t rtc_clk_xtal_freq_get(void)
|
||||
{
|
||||
uint32_t xtal_freq_mhz = clk_ll_xtal_load_freq_mhz();
|
||||
if (xtal_freq_mhz == 0) {
|
||||
ESP_HW_LOGW(TAG, "invalid RTC_XTAL_FREQ_REG value, assume %dMHz", CONFIG_ESP32C2_XTAL_FREQ);
|
||||
return CONFIG_ESP32C2_XTAL_FREQ;
|
||||
ESP_HW_LOGW(TAG, "invalid RTC_XTAL_FREQ_REG value, assume %dMHz", CONFIG_XTAL_FREQ);
|
||||
return CONFIG_XTAL_FREQ;
|
||||
}
|
||||
return (rtc_xtal_freq_t)xtal_freq_mhz;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* So the resolution of the systimer is 40MHz/2.5 = 16MHz, or 26MHz/2.5 = 10.4MHz.
|
||||
*/
|
||||
|
||||
#if CONFIG_ESP32C2_XTAL_FREQ_40
|
||||
#if CONFIG_XTAL_FREQ_40
|
||||
uint64_t systimer_ticks_to_us(uint64_t ticks)
|
||||
{
|
||||
return ticks / 16;
|
||||
@@ -22,7 +22,7 @@ uint64_t systimer_us_to_ticks(uint64_t us)
|
||||
{
|
||||
return us * 16;
|
||||
}
|
||||
#elif CONFIG_ESP32C2_XTAL_FREQ_26
|
||||
#elif CONFIG_XTAL_FREQ_26
|
||||
uint64_t systimer_ticks_to_us(uint64_t ticks)
|
||||
{
|
||||
return ticks * 5 / 52;
|
||||
@@ -34,4 +34,4 @@ uint64_t systimer_us_to_ticks(uint64_t us)
|
||||
}
|
||||
#else
|
||||
#error "Unsupported XTAL frequency by systimer"
|
||||
#endif // CONFIG_ESP32C2_XTAL_FREQ_xx
|
||||
#endif // CONFIG_XTAL_FREQ_xx
|
||||
|
||||
@@ -22,3 +22,8 @@ CONFIG_ESP32_SPIRAM_SUPPORT CONFIG_SPIRAM
|
||||
CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP
|
||||
|
||||
CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY
|
||||
|
||||
CONFIG_ESP32_XTAL_FREQ_26 CONFIG_XTAL_FREQ_26
|
||||
CONFIG_ESP32_XTAL_FREQ_40 CONFIG_XTAL_FREQ_40
|
||||
CONFIG_ESP32_XTAL_FREQ_AUTO CONFIG_XTAL_FREQ_AUTO
|
||||
CONFIG_ESP32_XTAL_FREQ CONFIG_XTAL_FREQ
|
||||
|
||||
Reference in New Issue
Block a user