mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-30 20:51:41 +00:00 
			
		
		
		
	esp_hw_support: keep external 40 MHz xtal related analog circuit power on during sleep
This commit is contained in:
		| @@ -90,9 +90,11 @@ void rtc_sleep_init(rtc_sleep_config_t cfg) | ||||
|  | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_MONITOR, RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_MONITOR, RTC_CNTL_BIASSLP_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_DEEP_SLP, RTC_CNTL_BIASSLP_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_DEEP_SLP, | ||||
|             (!cfg.deep_slp && cfg.xtal_fpu) ? RTC_CNTL_BIASSLP_SLEEP_ON : RTC_CNTL_BIASSLP_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_MONITOR, RTC_CNTL_PD_CUR_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_DEEP_SLP, RTC_CNTL_PD_CUR_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_DEEP_SLP, | ||||
|             (!cfg.deep_slp && cfg.xtal_fpu) ? RTC_CNTL_PD_CUR_SLEEP_ON : RTC_CNTL_PD_CUR_SLEEP_DEFAULT); | ||||
|     if (cfg.deep_slp) { | ||||
|         REGI2C_WRITE_MASK(I2C_ULP, I2C_ULP_IR_FORCE_XPD_CK, 0); | ||||
|         CLEAR_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU); | ||||
|   | ||||
| @@ -99,9 +99,11 @@ void rtc_sleep_init(rtc_sleep_config_t cfg) | ||||
|  | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_MONITOR, RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_MONITOR, RTC_CNTL_BIASSLP_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_DEEP_SLP, RTC_CNTL_BIASSLP_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_DEEP_SLP, | ||||
|             (!cfg.deep_slp && cfg.xtal_fpu) ? RTC_CNTL_BIASSLP_SLEEP_ON : RTC_CNTL_BIASSLP_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_MONITOR, RTC_CNTL_PD_CUR_MONITOR_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_DEEP_SLP, RTC_CNTL_PD_CUR_SLEEP_DEFAULT); | ||||
|     REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_DEEP_SLP, | ||||
|             (!cfg.deep_slp && cfg.xtal_fpu) ? RTC_CNTL_PD_CUR_SLEEP_ON : RTC_CNTL_PD_CUR_SLEEP_DEFAULT); | ||||
|     if (cfg.deep_slp) { | ||||
|         CLEAR_PERI_REG_MASK(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU); | ||||
|         REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP, RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT); | ||||
|   | ||||
| @@ -118,8 +118,10 @@ set sleep_init default param | ||||
| #define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT  15 | ||||
| #define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT  0 | ||||
| #define RTC_CNTL_BIASSLP_MONITOR_DEFAULT  0 | ||||
| #define RTC_CNTL_BIASSLP_SLEEP_ON  0 | ||||
| #define RTC_CNTL_BIASSLP_SLEEP_DEFAULT  1 | ||||
| #define RTC_CNTL_PD_CUR_MONITOR_DEFAULT  0 | ||||
| #define RTC_CNTL_PD_CUR_SLEEP_ON  0 | ||||
| #define RTC_CNTL_PD_CUR_SLEEP_DEFAULT  1 | ||||
| #define RTC_CNTL_DG_VDD_DRV_B_SLP_DEFAULT 254 | ||||
|  | ||||
|   | ||||
| @@ -121,8 +121,10 @@ set sleep_init default param | ||||
| #define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT  15 | ||||
| #define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT  0 | ||||
| #define RTC_CNTL_BIASSLP_MONITOR_DEFAULT  0 | ||||
| #define RTC_CNTL_BIASSLP_SLEEP_ON  0 | ||||
| #define RTC_CNTL_BIASSLP_SLEEP_DEFAULT  1 | ||||
| #define RTC_CNTL_PD_CUR_MONITOR_DEFAULT  1 | ||||
| #define RTC_CNTL_PD_CUR_SLEEP_ON  0 | ||||
| #define RTC_CNTL_PD_CUR_SLEEP_DEFAULT  1 | ||||
|  | ||||
| #define APLL_SDM_STOP_VAL_1         0x09 | ||||
| @@ -690,10 +692,12 @@ typedef struct { | ||||
|     .dig_dbias_wak = RTC_CNTL_DIG_DBIAS_1V10, \ | ||||
|     .dig_dbias_slp = is_dslp(sleep_flags)                   ? RTC_CNTL_DIG_DBIAS_0V90 \ | ||||
|                    : !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DIG_DBIAS_1V10 \ | ||||
|                    : !((sleep_flags) & RTC_SLEEP_PD_XTAL)   ? RTC_CNTL_DIG_DBIAS_1V10 \ | ||||
|                    : RTC_CNTL_DIG_DBIAS_0V90, \ | ||||
|     .rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \ | ||||
|     .rtc_dbias_slp = is_dslp(sleep_flags)                   ? RTC_CNTL_DBIAS_1V00 \ | ||||
|                    : !((sleep_flags) & RTC_SLEEP_PD_INT_8M) ? RTC_CNTL_DBIAS_1V10 \ | ||||
|                    : !((sleep_flags) & RTC_SLEEP_PD_XTAL)   ? RTC_CNTL_DBIAS_1V10 \ | ||||
|                    : RTC_CNTL_DBIAS_1V00, \ | ||||
|     .vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \ | ||||
|     .xtal_fpu = is_dslp(sleep_flags) ? 0 : ((sleep_flags) & RTC_SLEEP_PD_XTAL) ? 0 : 1, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Li Shuai
					Li Shuai