mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 09:09:10 -04:00
Merge branch 'refactor/move_bod_to_hw_support' into 'master'
refactor(bod): Move brownout handling file from esp_system to esp_hw_support See merge request espressif/esp-idf!36191
This commit is contained in:
commit
50cd05c4ac
@ -146,6 +146,11 @@ if(NOT non_os_build)
|
|||||||
if(CONFIG_SOC_GPIO_CLOCKOUT_BY_GPIO_MATRIX OR CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX)
|
if(CONFIG_SOC_GPIO_CLOCKOUT_BY_GPIO_MATRIX OR CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX)
|
||||||
list(APPEND srcs "esp_clock_output.c")
|
list(APPEND srcs "esp_clock_output.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CONFIG_SOC_BOD_SUPPORTED)
|
||||||
|
list(APPEND srcs "power_supply/brownout.c")
|
||||||
|
endif()
|
||||||
|
|
||||||
else()
|
else()
|
||||||
if(ESP_TEE_BUILD)
|
if(ESP_TEE_BUILD)
|
||||||
list(APPEND srcs "esp_clk.c" "hw_random.c")
|
list(APPEND srcs "esp_clk.c" "hw_random.c")
|
||||||
@ -156,7 +161,7 @@ endif()
|
|||||||
|
|
||||||
set(public_include_dirs "include" "include/soc" "include/soc/${target}"
|
set(public_include_dirs "include" "include/soc" "include/soc/${target}"
|
||||||
"dma/include" "ldo/include" "debug_probe/include"
|
"dma/include" "ldo/include" "debug_probe/include"
|
||||||
"mspi_timing_tuning/include")
|
"mspi_timing_tuning/include" "power_supply/include")
|
||||||
|
|
||||||
if(CONFIG_IDF_TARGET_ESP32H21)
|
if(CONFIG_IDF_TARGET_ESP32H21)
|
||||||
list(REMOVE_ITEM srcs
|
list(REMOVE_ITEM srcs
|
||||||
|
@ -247,6 +247,8 @@ menu "Hardware Settings"
|
|||||||
|
|
||||||
orsource "./port/$IDF_TARGET/Kconfig.ldo"
|
orsource "./port/$IDF_TARGET/Kconfig.ldo"
|
||||||
|
|
||||||
|
orsource "./power_supply/port/$IDF_TARGET/Kconfig.bod"
|
||||||
|
|
||||||
# Invisible bringup bypass options for esp_hw_support component
|
# Invisible bringup bypass options for esp_hw_support component
|
||||||
config ESP_BRINGUP_BYPASS_CPU_CLK_SETTING
|
config ESP_BRINGUP_BYPASS_CPU_CLK_SETTING
|
||||||
bool
|
bool
|
||||||
|
@ -12,7 +12,7 @@ choice ESP32_REV_MIN
|
|||||||
config ESP32_REV_MIN_0
|
config ESP32_REV_MIN_0
|
||||||
bool "Rev v0.0 (ECO0)"
|
bool "Rev v0.0 (ECO0)"
|
||||||
# Brownout on Rev 0 is bugged, must use interrupt
|
# Brownout on Rev 0 is bugged, must use interrupt
|
||||||
select ESP_SYSTEM_BROWNOUT_INTR
|
select ESP_BROWNOUT_USE_INTR
|
||||||
config ESP32_REV_MIN_1
|
config ESP32_REV_MIN_1
|
||||||
bool "Rev v1.0 (ECO1)"
|
bool "Rev v1.0 (ECO1)"
|
||||||
config ESP32_REV_MIN_1_1
|
config ESP32_REV_MIN_1_1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -25,6 +25,7 @@
|
|||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "esp_rom_uart.h"
|
#include "esp_rom_uart.h"
|
||||||
#include "hal/uart_ll.h"
|
#include "hal/uart_ll.h"
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
#if defined(CONFIG_ESP_BROWNOUT_DET_LVL)
|
#if defined(CONFIG_ESP_BROWNOUT_DET_LVL)
|
||||||
#define BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
|
#define BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
|
||||||
@ -34,7 +35,7 @@
|
|||||||
|
|
||||||
static __attribute__((unused)) DRAM_ATTR const char TAG[] = "BOD";
|
static __attribute__((unused)) DRAM_ATTR const char TAG[] = "BOD";
|
||||||
|
|
||||||
#if CONFIG_ESP_SYSTEM_BROWNOUT_INTR
|
#if CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
IRAM_ATTR static void rtc_brownout_isr_handler(void *arg)
|
IRAM_ATTR static void rtc_brownout_isr_handler(void *arg)
|
||||||
{
|
{
|
||||||
/* Normally RTC ISR clears the interrupt flag after the application-supplied
|
/* Normally RTC ISR clears the interrupt flag after the application-supplied
|
||||||
@ -71,11 +72,11 @@ IRAM_ATTR static void rtc_brownout_isr_handler(void *arg)
|
|||||||
|
|
||||||
ESP_INFINITE_LOOP();
|
ESP_INFINITE_LOOP();
|
||||||
}
|
}
|
||||||
#endif // CONFIG_ESP_SYSTEM_BROWNOUT_INTR
|
#endif // CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
|
|
||||||
void esp_brownout_init(void)
|
void esp_brownout_init(void)
|
||||||
{
|
{
|
||||||
#if CONFIG_ESP_SYSTEM_BROWNOUT_INTR
|
#if CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
brownout_hal_config_t cfg = {
|
brownout_hal_config_t cfg = {
|
||||||
.threshold = BROWNOUT_DET_LVL,
|
.threshold = BROWNOUT_DET_LVL,
|
||||||
.enabled = true,
|
.enabled = true,
|
||||||
@ -87,15 +88,12 @@ void esp_brownout_init(void)
|
|||||||
brownout_hal_config(&cfg);
|
brownout_hal_config(&cfg);
|
||||||
brownout_ll_intr_clear();
|
brownout_ll_intr_clear();
|
||||||
|
|
||||||
#if SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2
|
||||||
// TODO IDF-6606: LP_RTC_TIMER interrupt source is shared by lp_timer and brownout detector, but lp_timer interrupt
|
|
||||||
// is not used now. An interrupt allocator is needed when lp_timer intr gets supported.
|
|
||||||
esp_intr_alloc_intrstatus(ETS_LP_RTC_TIMER_INTR_SOURCE, ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_SHARED, (uint32_t)brownout_ll_intr_get_status_reg(), BROWNOUT_DETECTOR_LL_INTERRUPT_MASK, &rtc_brownout_isr_handler, NULL, NULL);
|
|
||||||
#elif CONFIG_IDF_TARGET_ESP32P4
|
|
||||||
esp_intr_alloc(ETS_LP_ANAPERI_INTR_SOURCE, ESP_INTR_FLAG_IRAM, &rtc_brownout_isr_handler, NULL, NULL);
|
|
||||||
#else
|
|
||||||
rtc_isr_register(rtc_brownout_isr_handler, NULL, RTC_CNTL_BROWN_OUT_INT_ENA_M, RTC_INTR_FLAG_IRAM);
|
rtc_isr_register(rtc_brownout_isr_handler, NULL, RTC_CNTL_BROWN_OUT_INT_ENA_M, RTC_INTR_FLAG_IRAM);
|
||||||
|
#else
|
||||||
|
esp_intr_alloc_intrstatus(power_supply_periph_signal.irq, ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_SHARED, (uint32_t)brownout_ll_intr_get_status_reg(), BROWNOUT_DETECTOR_LL_INTERRUPT_MASK, &rtc_brownout_isr_handler, NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
brownout_ll_intr_enable(true);
|
brownout_ll_intr_enable(true);
|
||||||
|
|
||||||
#else // brownout without interrupt
|
#else // brownout without interrupt
|
||||||
@ -119,8 +117,8 @@ void esp_brownout_disable(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
brownout_hal_config(&cfg);
|
brownout_hal_config(&cfg);
|
||||||
#if CONFIG_ESP_SYSTEM_BROWNOUT_INTR
|
#if CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
brownout_ll_intr_enable(false);
|
brownout_ll_intr_enable(false);
|
||||||
rtc_isr_deregister(rtc_brownout_isr_handler, NULL);
|
rtc_isr_deregister(rtc_brownout_isr_handler, NULL);
|
||||||
#endif // CONFIG_ESP_SYSTEM_BROWNOUT_INTR
|
#endif // CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
}
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize the brownout detection system
|
||||||
|
*
|
||||||
|
* This function configures and enables the brownout detection hardware, which monitors
|
||||||
|
* the power supply voltage and triggers appropriate system actions if the voltage
|
||||||
|
* drops below a predefined threshold. Brownout detection helps ensure the stability
|
||||||
|
* and reliability of the system under low-voltage conditions.
|
||||||
|
*/
|
||||||
|
void esp_brownout_init(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable the brownout detection system
|
||||||
|
*
|
||||||
|
* This function disables the brownout detection hardware, stopping voltage monitoring
|
||||||
|
* and associated system actions. Use this function with caution, as disabling brownout
|
||||||
|
* detection may increase the risk of system instability or malfunction under low-voltage
|
||||||
|
* conditions.
|
||||||
|
*/
|
||||||
|
void esp_brownout_disable(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,64 @@
|
|||||||
|
menu "Brownout Detector"
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_DET
|
||||||
|
bool "Hardware brownout detect & reset"
|
||||||
|
depends on !IDF_ENV_FPGA
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
The ESP has a built-in brownout detector which can detect if the voltage is lower than
|
||||||
|
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
||||||
|
behaviour.
|
||||||
|
|
||||||
|
choice ESP_BROWNOUT_DET_LVL_SEL
|
||||||
|
prompt "Brownout voltage level"
|
||||||
|
depends on ESP_BROWNOUT_DET
|
||||||
|
default ESP_BROWNOUT_DET_LVL_SEL_0
|
||||||
|
help
|
||||||
|
The brownout detector will reset the chip when the supply voltage is approximately
|
||||||
|
below this level. Note that there may be some variation of brownout voltage level
|
||||||
|
between each ESP chip.
|
||||||
|
|
||||||
|
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
||||||
|
#of the brownout threshold levels.
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_0
|
||||||
|
bool "2.43V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_1
|
||||||
|
bool "2.48V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_2
|
||||||
|
bool "2.58V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_3
|
||||||
|
bool "2.62V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_4
|
||||||
|
bool "2.67V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_5
|
||||||
|
bool "2.70V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
|
bool "2.77V +/- 0.05"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
bool "2.80V +/- 0.05"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_DET_LVL
|
||||||
|
int
|
||||||
|
default 0 if ESP_BROWNOUT_DET_LVL_SEL_0
|
||||||
|
default 1 if ESP_BROWNOUT_DET_LVL_SEL_1
|
||||||
|
default 2 if ESP_BROWNOUT_DET_LVL_SEL_2
|
||||||
|
default 3 if ESP_BROWNOUT_DET_LVL_SEL_3
|
||||||
|
default 4 if ESP_BROWNOUT_DET_LVL_SEL_4
|
||||||
|
default 5 if ESP_BROWNOUT_DET_LVL_SEL_5
|
||||||
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
Two occasions need to restart the chip with interrupt so far.
|
||||||
|
(1). For ESP32 version 1, brown-out reset function doesn't work (see ESP32 errata 3.4).
|
||||||
|
So that we must restart from interrupt.
|
||||||
|
(2). For special workflow, the chip needs do more things instead of restarting directly. This part
|
||||||
|
needs to be done in callback function of interrupt.
|
||||||
|
|
||||||
|
endmenu
|
@ -42,4 +42,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -42,4 +42,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -42,4 +42,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -42,4 +42,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -42,4 +42,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -48,4 +48,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -48,4 +48,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -36,4 +36,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -0,0 +1,59 @@
|
|||||||
|
menu "Brownout Detector"
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_DET
|
||||||
|
bool "Hardware brownout detect & reset"
|
||||||
|
depends on !IDF_ENV_FPGA
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
The ESP32-S2 has a built-in brownout detector which can detect if the voltage is lower than
|
||||||
|
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
||||||
|
behaviour.
|
||||||
|
|
||||||
|
choice ESP_BROWNOUT_DET_LVL_SEL
|
||||||
|
prompt "Brownout voltage level"
|
||||||
|
depends on ESP_BROWNOUT_DET
|
||||||
|
default ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
help
|
||||||
|
The brownout detector will reset the chip when the supply voltage is approximately
|
||||||
|
below this level. Note that there may be some variation of brownout voltage level
|
||||||
|
between each ESP3-S2 chip.
|
||||||
|
|
||||||
|
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
||||||
|
#of the brownout threshold levels.
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
bool "2.44V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
|
bool "2.56V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_5
|
||||||
|
bool "2.67V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_4
|
||||||
|
bool "2.84V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_3
|
||||||
|
bool "2.98V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_2
|
||||||
|
bool "3.19V"
|
||||||
|
config ESP_BROWNOUT_DET_LVL_SEL_1
|
||||||
|
bool "3.30V"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_DET_LVL
|
||||||
|
int
|
||||||
|
default 1 if ESP_BROWNOUT_DET_LVL_SEL_1
|
||||||
|
default 2 if ESP_BROWNOUT_DET_LVL_SEL_2
|
||||||
|
default 3 if ESP_BROWNOUT_DET_LVL_SEL_3
|
||||||
|
default 4 if ESP_BROWNOUT_DET_LVL_SEL_4
|
||||||
|
default 5 if ESP_BROWNOUT_DET_LVL_SEL_5
|
||||||
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
|
endmenu
|
@ -46,4 +46,14 @@ menu "Brownout Detector"
|
|||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
||||||
|
|
||||||
|
config ESP_BROWNOUT_USE_INTR
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
||||||
|
at the end of the default callback.
|
||||||
|
This is because for some special workflow, the chip needs do more things when brownout happens
|
||||||
|
before restart instead of restarting directly. This part needs to be done in callback function
|
||||||
|
of interrupt.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
@ -6,3 +6,4 @@ CONFIG_TWO_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_M
|
|||||||
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR
|
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR
|
||||||
|
|
||||||
CONFIG_ESP_SYSTEM_PD_FLASH CONFIG_ESP_SLEEP_POWER_DOWN_FLASH
|
CONFIG_ESP_SYSTEM_PD_FLASH CONFIG_ESP_SLEEP_POWER_DOWN_FLASH
|
||||||
|
CONFIG_ESP_SYSTEM_BROWNOUT_INTR CONFIG_ESP_BROWNOUT_USE_INTR
|
||||||
|
@ -583,19 +583,7 @@ menu "ESP System Settings"
|
|||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
# Insert chip-specific system config
|
# Insert chip-specific system config
|
||||||
rsource "./port/soc/$IDF_TARGET/Kconfig.system"
|
orsource "./port/soc/$IDF_TARGET/Kconfig.system"
|
||||||
|
|
||||||
config ESP_SYSTEM_BROWNOUT_INTR
|
|
||||||
bool
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
This config allows to trigger an interrupt when brownout detected. Software restart will be done
|
|
||||||
at the end of the default callback.
|
|
||||||
Two occasions need to restart the chip with interrupt so far.
|
|
||||||
(1). For ESP32 version 1, brown-out reset function doesn't work (see ESP32 errata 3.4).
|
|
||||||
So that we must restart from interrupt.
|
|
||||||
(2). For special workflow, the chip needs do more things instead of restarting directly. This part
|
|
||||||
needs to be done in callback function of interrupt.
|
|
||||||
|
|
||||||
config ESP_SYSTEM_HW_STACK_GUARD
|
config ESP_SYSTEM_HW_STACK_GUARD
|
||||||
bool "Hardware stack guard"
|
bool "Hardware stack guard"
|
||||||
|
@ -12,10 +12,6 @@ if(NOT CONFIG_APP_BUILD_TYPE_PURE_RAM_APP)
|
|||||||
list(APPEND srcs "image_process.c")
|
list(APPEND srcs "image_process.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CONFIG_SOC_BOD_SUPPORTED)
|
|
||||||
list(APPEND srcs "brownout.c")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CONFIG_ESP_CONSOLE_USB_CDC)
|
if(CONFIG_ESP_CONSOLE_USB_CDC)
|
||||||
list(APPEND srcs "usb_console.c")
|
list(APPEND srcs "usb_console.c")
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ESP_BROWNOUT_H
|
|
||||||
#define __ESP_BROWNOUT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void esp_brownout_init(void);
|
|
||||||
|
|
||||||
void esp_brownout_disable(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,56 +1,3 @@
|
|||||||
menu "Brownout Detector"
|
|
||||||
|
|
||||||
config ESP_BROWNOUT_DET
|
|
||||||
bool "Hardware brownout detect & reset"
|
|
||||||
depends on !IDF_ENV_FPGA
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
The ESP has a built-in brownout detector which can detect if the voltage is lower than
|
|
||||||
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
|
||||||
behaviour.
|
|
||||||
|
|
||||||
choice ESP_BROWNOUT_DET_LVL_SEL
|
|
||||||
prompt "Brownout voltage level"
|
|
||||||
depends on ESP_BROWNOUT_DET
|
|
||||||
default ESP_BROWNOUT_DET_LVL_SEL_0
|
|
||||||
help
|
|
||||||
The brownout detector will reset the chip when the supply voltage is approximately
|
|
||||||
below this level. Note that there may be some variation of brownout voltage level
|
|
||||||
between each ESP chip.
|
|
||||||
|
|
||||||
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
|
||||||
#of the brownout threshold levels.
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_0
|
|
||||||
bool "2.43V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_1
|
|
||||||
bool "2.48V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_2
|
|
||||||
bool "2.58V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_3
|
|
||||||
bool "2.62V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_4
|
|
||||||
bool "2.67V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_5
|
|
||||||
bool "2.70V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_6
|
|
||||||
bool "2.77V +/- 0.05"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_7
|
|
||||||
bool "2.80V +/- 0.05"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config ESP_BROWNOUT_DET_LVL
|
|
||||||
int
|
|
||||||
default 0 if ESP_BROWNOUT_DET_LVL_SEL_0
|
|
||||||
default 1 if ESP_BROWNOUT_DET_LVL_SEL_1
|
|
||||||
default 2 if ESP_BROWNOUT_DET_LVL_SEL_2
|
|
||||||
default 3 if ESP_BROWNOUT_DET_LVL_SEL_3
|
|
||||||
default 4 if ESP_BROWNOUT_DET_LVL_SEL_4
|
|
||||||
default 5 if ESP_BROWNOUT_DET_LVL_SEL_5
|
|
||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
config ESP32_DISABLE_BASIC_ROM_CONSOLE
|
config ESP32_DISABLE_BASIC_ROM_CONSOLE
|
||||||
bool "Permanently disable BASIC ROM Console"
|
bool "Permanently disable BASIC ROM Console"
|
||||||
default n
|
default n
|
||||||
|
@ -1,53 +1,3 @@
|
|||||||
menu "Brownout Detector"
|
|
||||||
|
|
||||||
config ESP_BROWNOUT_DET
|
|
||||||
bool "Hardware brownout detect & reset"
|
|
||||||
depends on !IDF_ENV_FPGA
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
The ESP32-S2 has a built-in brownout detector which can detect if the voltage is lower than
|
|
||||||
a specific value. If this happens, it will reset the chip in order to prevent unintended
|
|
||||||
behaviour.
|
|
||||||
|
|
||||||
choice ESP_BROWNOUT_DET_LVL_SEL
|
|
||||||
prompt "Brownout voltage level"
|
|
||||||
depends on ESP_BROWNOUT_DET
|
|
||||||
default ESP_BROWNOUT_DET_LVL_SEL_7
|
|
||||||
help
|
|
||||||
The brownout detector will reset the chip when the supply voltage is approximately
|
|
||||||
below this level. Note that there may be some variation of brownout voltage level
|
|
||||||
between each ESP3-S2 chip.
|
|
||||||
|
|
||||||
#The voltage levels here are estimates, more work needs to be done to figure out the exact voltages
|
|
||||||
#of the brownout threshold levels.
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_7
|
|
||||||
bool "2.44V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_6
|
|
||||||
bool "2.56V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_5
|
|
||||||
bool "2.67V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_4
|
|
||||||
bool "2.84V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_3
|
|
||||||
bool "2.98V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_2
|
|
||||||
bool "3.19V"
|
|
||||||
config ESP_BROWNOUT_DET_LVL_SEL_1
|
|
||||||
bool "3.30V"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config ESP_BROWNOUT_DET_LVL
|
|
||||||
int
|
|
||||||
default 1 if ESP_BROWNOUT_DET_LVL_SEL_1
|
|
||||||
default 2 if ESP_BROWNOUT_DET_LVL_SEL_2
|
|
||||||
default 3 if ESP_BROWNOUT_DET_LVL_SEL_3
|
|
||||||
default 4 if ESP_BROWNOUT_DET_LVL_SEL_4
|
|
||||||
default 5 if ESP_BROWNOUT_DET_LVL_SEL_5
|
|
||||||
default 6 if ESP_BROWNOUT_DET_LVL_SEL_6
|
|
||||||
default 7 if ESP_BROWNOUT_DET_LVL_SEL_7
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
config ESP32S2_KEEP_USB_ALIVE
|
config ESP32S2_KEEP_USB_ALIVE
|
||||||
bool "Keep USB peripheral enabled at start up" if !ESP_CONSOLE_USB_CDC
|
bool "Keep USB peripheral enabled at start up" if !ESP_CONSOLE_USB_CDC
|
||||||
default y if ESP_CONSOLE_USB_CDC
|
default y if ESP_CONSOLE_USB_CDC
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -20,6 +20,7 @@
|
|||||||
#include "hal/efuse_hal.h"
|
#include "hal/efuse_hal.h"
|
||||||
#include "soc/chip_revision.h"
|
#include "soc/chip_revision.h"
|
||||||
|
|
||||||
|
#define BROWNOUT_DETECTOR_LL_INTERRUPT_MASK (BIT(31))
|
||||||
#define BROWNOUT_DETECTOR_LL_FIB_ENABLE (BIT(1))
|
#define BROWNOUT_DETECTOR_LL_FIB_ENABLE (BIT(1))
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -138,6 +139,16 @@ static inline void brownout_ll_clear_count(void)
|
|||||||
LP_ANA_PERI.bod_mode0_cntl.bod_mode0_cnt_clr = 0;
|
LP_ANA_PERI.bod_mode0_cntl.bod_mode0_cnt_clr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get interrupt status register address
|
||||||
|
*
|
||||||
|
* @return Register address
|
||||||
|
*/
|
||||||
|
static inline volatile void *brownout_ll_intr_get_status_reg(void)
|
||||||
|
{
|
||||||
|
return &LP_ANA_PERI.int_st;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -169,6 +169,10 @@ if(CONFIG_SOC_LCDCAM_CAM_SUPPORTED)
|
|||||||
list(APPEND srcs "${target_folder}/cam_periph.c")
|
list(APPEND srcs "${target_folder}/cam_periph.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CONFIG_SOC_BOD_SUPPORTED)
|
||||||
|
list(APPEND srcs "${target_folder}/power_supply_periph.c")
|
||||||
|
endif()
|
||||||
|
|
||||||
idf_component_register(SRCS ${srcs}
|
idf_component_register(SRCS ${srcs}
|
||||||
INCLUDE_DIRS ${includes}
|
INCLUDE_DIRS ${includes}
|
||||||
LDFRAGMENTS "linker.lf")
|
LDFRAGMENTS "linker.lf")
|
||||||
|
11
components/soc/esp32/power_supply_periph.c
Normal file
11
components/soc/esp32/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_RTC_CORE_INTR_SOURCE,
|
||||||
|
};
|
11
components/soc/esp32c2/power_supply_periph.c
Normal file
11
components/soc/esp32c2/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_RTC_CORE_INTR_SOURCE,
|
||||||
|
};
|
11
components/soc/esp32c3/power_supply_periph.c
Normal file
11
components/soc/esp32c3/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_RTC_CORE_INTR_SOURCE,
|
||||||
|
};
|
@ -1215,10 +1215,6 @@ config SOC_LP_TIMER_BIT_WIDTH_HI
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
config SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SOC_TIMER_GROUPS
|
config SOC_TIMER_GROUPS
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
@ -485,7 +485,6 @@
|
|||||||
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
||||||
#define SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE 1 //LP timer and brownout detector share the interrupt source
|
|
||||||
|
|
||||||
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
||||||
#define SOC_TIMER_GROUPS (2)
|
#define SOC_TIMER_GROUPS (2)
|
||||||
|
11
components/soc/esp32c5/power_supply_periph.c
Normal file
11
components/soc/esp32c5/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_RTC_TIMER_INTR_SOURCE,
|
||||||
|
};
|
@ -1155,10 +1155,6 @@ config SOC_LP_TIMER_BIT_WIDTH_HI
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
config SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SOC_TIMER_GROUPS
|
config SOC_TIMER_GROUPS
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
@ -450,7 +450,6 @@
|
|||||||
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
||||||
#define SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE 1 //LP timer and brownout detector share the interrupt source
|
|
||||||
|
|
||||||
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
||||||
#define SOC_TIMER_GROUPS (2)
|
#define SOC_TIMER_GROUPS (2)
|
||||||
|
11
components/soc/esp32c6/power_supply_periph.c
Normal file
11
components/soc/esp32c6/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_RTC_TIMER_INTR_SOURCE,
|
||||||
|
};
|
@ -875,10 +875,6 @@ config SOC_LP_TIMER_BIT_WIDTH_HI
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
config SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SOC_TIMER_GROUPS
|
config SOC_TIMER_GROUPS
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
@ -363,7 +363,6 @@
|
|||||||
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
||||||
#define SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE 1 //LP timer and brownout detector share the interrupt source
|
|
||||||
|
|
||||||
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
||||||
#define SOC_TIMER_GROUPS (2)
|
#define SOC_TIMER_GROUPS (2)
|
||||||
|
11
components/soc/esp32c61/power_supply_periph.c
Normal file
11
components/soc/esp32c61/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_RTC_TIMER_INTR_SOURCE,
|
||||||
|
};
|
@ -1159,10 +1159,6 @@ config SOC_LP_TIMER_BIT_WIDTH_HI
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
config SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SOC_TIMER_GROUPS
|
config SOC_TIMER_GROUPS
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
@ -464,7 +464,6 @@
|
|||||||
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
||||||
#define SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE 1 //LP timer and brownout detector share the interrupt source
|
|
||||||
|
|
||||||
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
||||||
#define SOC_TIMER_GROUPS (2)
|
#define SOC_TIMER_GROUPS (2)
|
||||||
|
11
components/soc/esp32h2/power_supply_periph.c
Normal file
11
components/soc/esp32h2/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_RTC_TIMER_INTR_SOURCE,
|
||||||
|
};
|
@ -447,10 +447,6 @@ config SOC_LP_TIMER_BIT_WIDTH_HI
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
config SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SOC_TIMER_GROUPS
|
config SOC_TIMER_GROUPS
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
@ -429,7 +429,6 @@
|
|||||||
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
/*-------------------------- LP_TIMER CAPS ----------------------------------*/
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
#define SOC_LP_TIMER_BIT_WIDTH_LO 32 // Bit width of lp_timer low part
|
||||||
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
#define SOC_LP_TIMER_BIT_WIDTH_HI 16 // Bit width of lp_timer high part
|
||||||
#define SOC_LP_TIMER_BOD_SHARE_INTR_SOURCE 1 //LP timer and brownout detector share the interrupt source
|
|
||||||
|
|
||||||
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
/*--------------------------- TIMER GROUP CAPS ---------------------------------------*/
|
||||||
#define SOC_TIMER_GROUPS (2)
|
#define SOC_TIMER_GROUPS (2)
|
||||||
|
11
components/soc/esp32h21/power_supply_periph.c
Normal file
11
components/soc/esp32h21/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_RTC_TIMER_INTR_SOURCE,
|
||||||
|
};
|
11
components/soc/esp32p4/power_supply_periph.c
Normal file
11
components/soc/esp32p4/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_LP_ANAPERI_INTR_SOURCE,
|
||||||
|
};
|
11
components/soc/esp32s2/power_supply_periph.c
Normal file
11
components/soc/esp32s2/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_RTC_CORE_INTR_SOURCE,
|
||||||
|
};
|
11
components/soc/esp32s3/power_supply_periph.c
Normal file
11
components/soc/esp32s3/power_supply_periph.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "soc/power_supply_periph.h"
|
||||||
|
|
||||||
|
const power_supply_signal_conn_t power_supply_periph_signal = {
|
||||||
|
.irq = ETS_RTC_CORE_INTR_SOURCE,
|
||||||
|
};
|
23
components/soc/include/soc/power_supply_periph.h
Normal file
23
components/soc/include/soc/power_supply_periph.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "soc/interrupts.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
const uint8_t irq;
|
||||||
|
} power_supply_signal_conn_t;
|
||||||
|
|
||||||
|
extern const power_supply_signal_conn_t power_supply_periph_signal;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -16,7 +16,7 @@ menu "Main Flash configuration"
|
|||||||
config SPI_FLASH_BROWNOUT_RESET
|
config SPI_FLASH_BROWNOUT_RESET
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
select ESP_SYSTEM_BROWNOUT_INTR
|
select ESP_BROWNOUT_USE_INTR
|
||||||
help
|
help
|
||||||
When brownout happens during flash erase/write operations,
|
When brownout happens during flash erase/write operations,
|
||||||
send reset command to stop the flash operations to improve stability.
|
send reset command to stop the flash operations to improve stability.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
CPU 0 interrupt status:
|
CPU 0 interrupt status:
|
||||||
Int Level Type Status
|
Int Level Type Status
|
||||||
0 1 Level Used: LP_ANAPERI
|
0 1 Level Shared: LP_ANAPERI
|
||||||
1 1 Level Used: CPU_INT_FROM_CPU_0
|
1 1 Level Used: CPU_INT_FROM_CPU_0
|
||||||
2 1 Level Used: SYSTIMER_TARGET0
|
2 1 Level Used: SYSTIMER_TARGET0
|
||||||
3 1 Level Used: TG0_WDT_LEVEL
|
3 1 Level Used: TG0_WDT_LEVEL
|
||||||
@ -67,3 +67,4 @@ CPU 1 interrupt status:
|
|||||||
30 * * Free
|
30 * * Free
|
||||||
31 * * Free
|
31 * * Free
|
||||||
Interrupts available for general use: 47
|
Interrupts available for general use: 47
|
||||||
|
Shared interrupts: 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user