kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'bugfix/deepsleep_disable_brownout_s2_v4.2' into 'release/v4.2'
deep_sleep: on S2 disable the brown out detector before deep sleeping (v4.2) See merge request espressif/esp-idf!12500pull/6847/head
commit
ce2c615bb3
|
@ -16,6 +16,16 @@
|
|||
#ifndef __ESP_BROWNOUT_H
|
||||
#define __ESP_BROWNOUT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void esp_brownout_init(void);
|
||||
|
||||
#endif
|
||||
void esp_brownout_disable(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -22,6 +22,8 @@ extern "C" {
|
|||
|
||||
void esp_brownout_init(void);
|
||||
|
||||
void esp_brownout_disable(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "esp32s2/rom/rtc.h"
|
||||
#include "esp32s2/rom/uart.h"
|
||||
#include "esp32s2/rom/ets_sys.h"
|
||||
#include "esp32s2/brownout.h"
|
||||
#include "soc/cpu.h"
|
||||
#include "soc/rtc.h"
|
||||
#include "soc/spi_periph.h"
|
||||
|
@ -229,6 +230,10 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
|
|||
|
||||
void IRAM_ATTR esp_deep_sleep_start(void)
|
||||
{
|
||||
/* Due to hardware limitations, on S2 the brownout detector sometimes trigger during deep sleep
|
||||
to circumvent this we disable the brownout detector before sleeping */
|
||||
esp_brownout_disable();
|
||||
|
||||
// record current RTC time
|
||||
s_config.rtc_ticks_at_sleep_start = rtc_time_get();
|
||||
esp_sync_counters_rtc_and_frc();
|
||||
|
|
|
@ -73,3 +73,18 @@ void esp_brownout_init(void)
|
|||
|
||||
brownout_hal_intr_enable(true);
|
||||
}
|
||||
|
||||
void esp_brownout_disable(void)
|
||||
{
|
||||
brownout_hal_config_t cfg = {
|
||||
.enabled = false,
|
||||
};
|
||||
|
||||
brownout_hal_config(&cfg);
|
||||
|
||||
#ifndef SOC_BROWNOUT_RESET_SUPPORTED
|
||||
brownout_hal_intr_enable(false);
|
||||
|
||||
rtc_isr_deregister(rtc_brownout_isr_handler, NULL);
|
||||
#endif // not SOC_BROWNOUT_RESET_SUPPORTED
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue