mirror of
https://github.com/esphome/esphome.git
synced 2025-11-17 15:26:01 +00:00
[nrf52] fix boot loop (#11854)
This commit is contained in:
@@ -107,7 +107,6 @@ CONF_REG0 = "reg0"
|
|||||||
CONF_UICR_ERASE = "uicr_erase"
|
CONF_UICR_ERASE = "uicr_erase"
|
||||||
|
|
||||||
VOLTAGE_LEVELS = [1.8, 2.1, 2.4, 2.7, 3.0, 3.3]
|
VOLTAGE_LEVELS = [1.8, 2.1, 2.4, 2.7, 3.0, 3.3]
|
||||||
DEFAULT_VOLTAGE_LEVEL = "default"
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.All(
|
CONFIG_SCHEMA = cv.All(
|
||||||
_detect_bootloader,
|
_detect_bootloader,
|
||||||
@@ -124,12 +123,9 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
),
|
),
|
||||||
cv.Optional(CONF_REG0): cv.Schema(
|
cv.Optional(CONF_REG0): cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_VOLTAGE): cv.Any(
|
cv.Required(CONF_VOLTAGE): cv.All(
|
||||||
cv.All(
|
cv.voltage,
|
||||||
cv.voltage,
|
cv.one_of(*VOLTAGE_LEVELS, float=True),
|
||||||
cv.one_of(*VOLTAGE_LEVELS, float=True),
|
|
||||||
),
|
|
||||||
cv.one_of(*[DEFAULT_VOLTAGE_LEVEL], lower=True),
|
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_UICR_ERASE, default=False): cv.boolean,
|
cv.Optional(CONF_UICR_ERASE, default=False): cv.boolean,
|
||||||
}
|
}
|
||||||
@@ -202,9 +198,7 @@ async def to_code(config: ConfigType) -> None:
|
|||||||
CORE.add_job(_dfu_to_code, dfu_config)
|
CORE.add_job(_dfu_to_code, dfu_config)
|
||||||
|
|
||||||
if reg0_config := config.get(CONF_REG0):
|
if reg0_config := config.get(CONF_REG0):
|
||||||
value = 7 # DEFAULT_VOLTAGE_LEVEL
|
value = VOLTAGE_LEVELS.index(reg0_config[CONF_VOLTAGE])
|
||||||
if reg0_config[CONF_VOLTAGE] in VOLTAGE_LEVELS:
|
|
||||||
value = VOLTAGE_LEVELS.index(reg0_config[CONF_VOLTAGE])
|
|
||||||
cg.add_define("USE_NRF52_REG0_VOUT", value)
|
cg.add_define("USE_NRF52_REG0_VOUT", value)
|
||||||
if reg0_config[CONF_UICR_ERASE]:
|
if reg0_config[CONF_UICR_ERASE]:
|
||||||
cg.add_define("USE_NRF52_UICR_ERASE")
|
cg.add_define("USE_NRF52_UICR_ERASE")
|
||||||
|
|||||||
@@ -69,9 +69,20 @@ static StatusFlags fix_bootloader() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
|
||||||
|
|
||||||
static StatusFlags set_uicr() {
|
static StatusFlags set_uicr() {
|
||||||
StatusFlags status = StatusFlags::OK;
|
StatusFlags status = StatusFlags::OK;
|
||||||
status |= set_regout0();
|
#ifndef USE_BOOTLOADER_MCUBOOT
|
||||||
|
if (BOOTLOADER_VERSION_REGISTER <= 0x902) {
|
||||||
|
#ifdef CONFIG_PRINTK
|
||||||
|
printk("cannot control regout0 for %#x\n", BOOTLOADER_VERSION_REGISTER);
|
||||||
|
#endif
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
status |= set_regout0();
|
||||||
|
}
|
||||||
#ifndef USE_BOOTLOADER_MCUBOOT
|
#ifndef USE_BOOTLOADER_MCUBOOT
|
||||||
status |= fix_bootloader();
|
status |= fix_bootloader();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ nrf52:
|
|||||||
mode:
|
mode:
|
||||||
output: true
|
output: true
|
||||||
reg0:
|
reg0:
|
||||||
voltage: default
|
voltage: 1.8V
|
||||||
|
|||||||
Reference in New Issue
Block a user