mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
Fix that when EXT CRYS is configured but not detected, light sleep is still allowed to be used
This commit is contained in:
@@ -1394,7 +1394,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
|||||||
#if CONFIG_BTDM_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
#if CONFIG_BTDM_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
||||||
// check whether or not EXT_CRYS is working
|
// check whether or not EXT_CRYS is working
|
||||||
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_32K_XTAL) {
|
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_32K_XTAL) {
|
||||||
btdm_lpclk_sel = BTDM_LPCLK_SEL_XTAL32K; // set default value
|
btdm_lpclk_sel = BTDM_LPCLK_SEL_XTAL32K; // External 32kHz XTAL
|
||||||
#ifdef CONFIG_PM_ENABLE
|
#ifdef CONFIG_PM_ENABLE
|
||||||
s_btdm_allow_light_sleep = true;
|
s_btdm_allow_light_sleep = true;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -359,7 +359,8 @@ menu "MODEM SLEEP Options"
|
|||||||
bool "Internal 150kHz RC oscillator"
|
bool "Internal 150kHz RC oscillator"
|
||||||
depends on ESP32C3_RTC_CLK_SRC_INT_RC
|
depends on ESP32C3_RTC_CLK_SRC_INT_RC
|
||||||
help
|
help
|
||||||
Internal 150kHz RC oscillator.
|
Internal 150kHz RC oscillator. The accuracy of this clock is a lot larger than 500ppm which is required
|
||||||
|
in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.
|
||||||
|
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
@@ -992,7 +992,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
|||||||
|
|
||||||
// configure and initialize resources
|
// configure and initialize resources
|
||||||
s_lp_cntl.enable = (cfg->sleep_mode == ESP_BT_SLEEP_MODE_1) ? 1 : 0;
|
s_lp_cntl.enable = (cfg->sleep_mode == ESP_BT_SLEEP_MODE_1) ? 1 : 0;
|
||||||
s_lp_cntl.no_light_sleep = 0;
|
s_lp_cntl.no_light_sleep = 1;
|
||||||
|
|
||||||
if (s_lp_cntl.enable) {
|
if (s_lp_cntl.enable) {
|
||||||
#if (CONFIG_MAC_BB_PD)
|
#if (CONFIG_MAC_BB_PD)
|
||||||
@@ -1029,31 +1029,29 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
|
|||||||
btdm_lpcycle_us_frac = RTC_CLK_CAL_FRACT;
|
btdm_lpcycle_us_frac = RTC_CLK_CAL_FRACT;
|
||||||
btdm_lpcycle_us = 2 << (btdm_lpcycle_us_frac);
|
btdm_lpcycle_us = 2 << (btdm_lpcycle_us_frac);
|
||||||
|
|
||||||
// // set default bluetooth sleep clock source
|
// set default bluetooth sleep clock source
|
||||||
// s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL;
|
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL; // set default value
|
||||||
#if CONFIG_BT_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
#if CONFIG_BT_CTRL_LPCLK_SEL_EXT_32K_XTAL
|
||||||
// check whether or not EXT_CRYS is working
|
// check whether or not EXT_CRYS is working
|
||||||
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_32K_XTAL) {
|
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_32K_XTAL) {
|
||||||
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL32K; // set default value
|
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL32K; // External 32 kHz XTAL
|
||||||
// #ifdef CONFIG_PM_ENABLE
|
s_lp_cntl.no_light_sleep = 0;
|
||||||
// s_btdm_allow_light_sleep = true;
|
|
||||||
// #endif
|
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGW(BTDM_LOG_TAG, "32.768kHz XTAL not detected, fall back to main XTAL as Bluetooth sleep clock\n"
|
ESP_LOGW(BTDM_LOG_TAG, "32.768kHz XTAL not detected, fall back to main XTAL as Bluetooth sleep clock\n"
|
||||||
"light sleep mode will not be able to apply when bluetooth is enabled");
|
"light sleep mode will not be able to apply when bluetooth is enabled");
|
||||||
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL; // set default value
|
|
||||||
}
|
}
|
||||||
#elif (CONFIG_BT_CTRL_LPCLK_SEL_RTC_SLOW)
|
#elif (CONFIG_BT_CTRL_LPCLK_SEL_RTC_SLOW)
|
||||||
// check whether or not EXT_CRYS is working
|
// check whether or not EXT_CRYS is working
|
||||||
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_RTC) {
|
if (rtc_clk_slow_freq_get() == RTC_SLOW_FREQ_RTC) {
|
||||||
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_RTC_SLOW; // set default value
|
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_RTC_SLOW; // Internal 150 kHz RC oscillator
|
||||||
|
ESP_LOGW(BTDM_LOG_TAG, "Internal 150kHz RC osciallator. The accuracy of this clock is a lot larger than 500ppm which is "
|
||||||
|
"required in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.");
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGW(BTDM_LOG_TAG, "Internal 150kHz RC oscillator not detected, fall back to main XTAL as Bluetooth sleep clock\n"
|
ESP_LOGW(BT_LOG_TAG, "Internal 150kHz RC oscillator not detected.");
|
||||||
"light sleep mode will not be able to apply when bluetooth is enabled");
|
assert(0);
|
||||||
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL; // set default value
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
s_lp_cntl.lpclk_sel = BTDM_LPCLK_SEL_XTAL; // set default value
|
s_lp_cntl.no_light_sleep = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool select_src_ret, set_div_ret;
|
bool select_src_ret, set_div_ret;
|
||||||
|
Reference in New Issue
Block a user