mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-01 19:54:32 +02:00
esp_hw_support: No voltage drop during light sleep to ensure stable output clock of rtc8m oscillator
This commit is contained in:
@@ -113,7 +113,8 @@ void rtc_sleep_init(rtc_sleep_config_t cfg)
|
|||||||
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DG_VDD_DRV_B_SLP, RTC_CNTL_DG_VDD_DRV_B_SLP_DEFAULT);
|
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DG_VDD_DRV_B_SLP, RTC_CNTL_DG_VDD_DRV_B_SLP_DEFAULT);
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU);
|
SET_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU);
|
||||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_PD_EN);
|
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_PD_EN);
|
||||||
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP, RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT);
|
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP,
|
||||||
|
cfg.int_8m_pd_en ? RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT : RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Keep the RTC8M_CLK on in light_sleep mode if the ledc low-speed channel is clocked by RTC8M_CLK.
|
//Keep the RTC8M_CLK on in light_sleep mode if the ledc low-speed channel is clocked by RTC8M_CLK.
|
||||||
|
@@ -113,7 +113,8 @@ void rtc_sleep_init(rtc_sleep_config_t cfg)
|
|||||||
} else {
|
} else {
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU);
|
SET_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU);
|
||||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_PD_EN);
|
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_PD_EN);
|
||||||
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP, RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT);
|
REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP,
|
||||||
|
cfg.int_8m_pd_en ? RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT : RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Keep the RTC8M_CLK on in light_sleep mode if the ledc low-speed channel is clocked by RTC8M_CLK.
|
//Keep the RTC8M_CLK on in light_sleep mode if the ledc low-speed channel is clocked by RTC8M_CLK.
|
||||||
|
@@ -528,9 +528,13 @@ typedef struct rtc_sleep_config_s {
|
|||||||
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
||||||
.wdt_flashboot_mod_en = 0, \
|
.wdt_flashboot_mod_en = 0, \
|
||||||
.dig_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
.dig_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
||||||
.dig_dbias_slp = RTC_CNTL_DBIAS_0V90, \
|
.dig_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DBIAS_0V90 \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DBIAS_0V90, \
|
||||||
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
||||||
.rtc_dbias_slp = RTC_CNTL_DBIAS_0V90, \
|
.rtc_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DBIAS_0V90 \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DBIAS_0V90, \
|
||||||
.lslp_meminf_pd = 1, \
|
.lslp_meminf_pd = 1, \
|
||||||
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
||||||
.xtal_fpu = ((sleep_flags) & RTC_SLEEP_PD_XTAL) ? 0 : 1 \
|
.xtal_fpu = ((sleep_flags) & RTC_SLEEP_PD_XTAL) ? 0 : 1 \
|
||||||
|
@@ -114,6 +114,7 @@ extern "C" {
|
|||||||
set sleep_init default param
|
set sleep_init default param
|
||||||
*/
|
*/
|
||||||
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 3
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 3
|
||||||
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP 0
|
||||||
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
||||||
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
||||||
#define RTC_CNTL_BIASSLP_MONITOR_DEFAULT 0
|
#define RTC_CNTL_BIASSLP_MONITOR_DEFAULT 0
|
||||||
@@ -675,9 +676,13 @@ typedef struct {
|
|||||||
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
||||||
.wdt_flashboot_mod_en = 0, \
|
.wdt_flashboot_mod_en = 0, \
|
||||||
.dig_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
.dig_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
||||||
.dig_dbias_slp = RTC_CNTL_DBIAS_SLP, \
|
.dig_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DBIAS_SLP \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DBIAS_SLP, \
|
||||||
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
||||||
.rtc_dbias_slp = RTC_CNTL_DBIAS_SLP, \
|
.rtc_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DBIAS_SLP \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DBIAS_SLP, \
|
||||||
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
||||||
.deep_slp_reject = 1, \
|
.deep_slp_reject = 1, \
|
||||||
.light_slp_reject = 1 \
|
.light_slp_reject = 1 \
|
||||||
|
@@ -117,6 +117,7 @@ extern "C" {
|
|||||||
set sleep_init default param
|
set sleep_init default param
|
||||||
*/
|
*/
|
||||||
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 6
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 6
|
||||||
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP 0
|
||||||
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
||||||
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
||||||
#define RTC_CNTL_BIASSLP_MONITOR_DEFAULT 0
|
#define RTC_CNTL_BIASSLP_MONITOR_DEFAULT 0
|
||||||
@@ -686,9 +687,13 @@ typedef struct {
|
|||||||
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
.deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \
|
||||||
.wdt_flashboot_mod_en = 0, \
|
.wdt_flashboot_mod_en = 0, \
|
||||||
.dig_dbias_wak = RTC_CNTL_DIG_DBIAS_1V10, \
|
.dig_dbias_wak = RTC_CNTL_DIG_DBIAS_1V10, \
|
||||||
.dig_dbias_slp = RTC_CNTL_DIG_DBIAS_0V90, \
|
.dig_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DIG_DBIAS_0V90 \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DIG_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DIG_DBIAS_0V90, \
|
||||||
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
.rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \
|
||||||
.rtc_dbias_slp = RTC_CNTL_DBIAS_1V00, \
|
.rtc_dbias_slp = is_dslp(sleep_flags) ? RTC_CNTL_DBIAS_1V00 \
|
||||||
|
: !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \
|
||||||
|
: RTC_CNTL_DBIAS_1V00, \
|
||||||
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
.vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \
|
||||||
.deep_slp_reject = 1, \
|
.deep_slp_reject = 1, \
|
||||||
.light_slp_reject = 1 \
|
.light_slp_reject = 1 \
|
||||||
|
Reference in New Issue
Block a user