mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 02:37:19 +02:00
sleep: fix sleep current issue caused by sar adc
This commit is contained in:
@ -62,6 +62,16 @@ void sar_periph_ctrl_pwdet_power_acquire(void);
|
||||
*/
|
||||
void sar_periph_ctrl_pwdet_power_release(void);
|
||||
|
||||
/**
|
||||
* @brief Enable SAR power when system wakes up
|
||||
*/
|
||||
void sar_periph_ctrl_power_enable(void);
|
||||
|
||||
/**
|
||||
* @brief Disable SAR power when system goes to sleep
|
||||
*/
|
||||
void sar_periph_ctrl_power_disable(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -32,6 +32,13 @@ void sar_periph_ctrl_init(void)
|
||||
//Add other periph power control initialisation here
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
sar_ctrl_ll_set_power_mode(SAR_CTRL_LL_POWER_ON);
|
||||
portEXIT_CRITICAL_SAFE(&rtc_spinlock);
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
@ -34,6 +34,13 @@ void sar_periph_ctrl_init(void)
|
||||
//Add other periph power control initialisation here
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
sar_ctrl_ll_set_power_mode(SAR_CTRL_LL_POWER_FSM);
|
||||
portEXIT_CRITICAL_SAFE(&rtc_spinlock);
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
@ -34,6 +34,13 @@ void sar_periph_ctrl_init(void)
|
||||
//Add other periph power control initialisation here
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
sar_ctrl_ll_set_power_mode(SAR_CTRL_LL_POWER_FSM);
|
||||
portEXIT_CRITICAL_SAFE(&rtc_spinlock);
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
@ -29,6 +29,11 @@ void sar_periph_ctrl_init(void)
|
||||
//TODO: IDF-6123
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
//TODO: IDF-6123
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
//TODO: IDF-6123
|
||||
|
@ -34,6 +34,13 @@ void sar_periph_ctrl_init(void)
|
||||
//Add other periph power control initialisation here
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
sar_ctrl_ll_set_power_mode(SAR_CTRL_LL_POWER_FSM);
|
||||
portEXIT_CRITICAL_SAFE(&rtc_spinlock);
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
@ -34,6 +34,13 @@ void sar_periph_ctrl_init(void)
|
||||
//Add other periph power control initialisation here
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_enable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
sar_ctrl_ll_set_power_mode(SAR_CTRL_LL_POWER_FSM);
|
||||
portEXIT_CRITICAL_SAFE(&rtc_spinlock);
|
||||
}
|
||||
|
||||
void sar_periph_ctrl_power_disable(void)
|
||||
{
|
||||
portENTER_CRITICAL_SAFE(&rtc_spinlock);
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "esp_rom_sys.h"
|
||||
#include "brownout.h"
|
||||
#include "esp_private/sleep_retention.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#ifdef CONFIG_IDF_TARGET_ESP32
|
||||
#include "esp32/rom/cache.h"
|
||||
@ -345,6 +346,7 @@ inline static void IRAM_ATTR misc_modules_sleep_prepare(void)
|
||||
#if REGI2C_ANA_CALI_PD_WORKAROUND
|
||||
regi2c_analog_cali_reg_read();
|
||||
#endif
|
||||
sar_periph_ctrl_power_disable();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -352,6 +354,7 @@ inline static void IRAM_ATTR misc_modules_sleep_prepare(void)
|
||||
*/
|
||||
inline static void IRAM_ATTR misc_modules_wake_prepare(void)
|
||||
{
|
||||
sar_periph_ctrl_power_enable();
|
||||
#if SOC_PM_SUPPORT_CPU_PD || SOC_PM_SUPPORT_TAGMEM_PD
|
||||
sleep_disable_memory_retention();
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user