mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-11 01:32:09 +03:00
fix(tsens): fix temp_sensor affect by adc reset
This commit is contained in:
@@ -11,12 +11,25 @@
|
||||
#include "hal/rng_ll.h"
|
||||
#include "esp_private/regi2c_ctrl.h"
|
||||
#include "soc/lpperi_reg.h"
|
||||
#include "hal/temperature_sensor_ll.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#define I2C_SAR_ADC_INIT_CODE_VAL 2150
|
||||
|
||||
void bootloader_random_enable(void)
|
||||
{
|
||||
#ifndef BOOTLOADER_BUILD
|
||||
sar_periph_ctrl_adc_reset();
|
||||
#else
|
||||
// Save temperature sensor related register values before ADC reset
|
||||
tsens_ll_reg_values_t saved_tsens_regs = {};
|
||||
tsens_ll_backup_registers(&saved_tsens_regs);
|
||||
adc_ll_reset_register();
|
||||
// Restore temperature sensor related register values after ADC reset
|
||||
temperature_sensor_ll_reset_module();
|
||||
tsens_ll_restore_registers(&saved_tsens_regs);
|
||||
#endif
|
||||
|
||||
adc_ll_enable_bus_clock(true);
|
||||
adc_ll_enable_func_clock(true);
|
||||
adc_ll_digi_clk_sel(ADC_DIGI_CLK_SRC_XTAL);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -9,12 +9,24 @@
|
||||
#include "hal/adc_ll.h"
|
||||
#include "hal/adc_types.h"
|
||||
#include "esp_private/regi2c_ctrl.h"
|
||||
#include "hal/temperature_sensor_ll.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#define I2C_SAR_ADC_INIT_CODE_VAL 2150
|
||||
|
||||
void bootloader_random_enable(void)
|
||||
{
|
||||
#ifndef BOOTLOADER_BUILD
|
||||
sar_periph_ctrl_adc_reset();
|
||||
#else
|
||||
tsens_ll_reg_values_t saved_tsens_regs = {};
|
||||
tsens_ll_backup_registers(&saved_tsens_regs);
|
||||
adc_ll_reset_register();
|
||||
// Restore temperature sensor related register values after ADC reset
|
||||
temperature_sensor_ll_reset_module();
|
||||
tsens_ll_restore_registers(&saved_tsens_regs);
|
||||
#endif
|
||||
|
||||
adc_ll_enable_bus_clock(true);
|
||||
adc_ll_enable_func_clock(true);
|
||||
adc_ll_digi_clk_sel(ADC_DIGI_CLK_SRC_XTAL);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -9,12 +9,25 @@
|
||||
#include "hal/adc_ll.h"
|
||||
#include "hal/adc_types.h"
|
||||
#include "esp_private/regi2c_ctrl.h"
|
||||
#include "hal/temperature_sensor_ll.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#define I2C_SAR_ADC_INIT_CODE_VAL 2150
|
||||
|
||||
void bootloader_random_enable(void)
|
||||
{
|
||||
#ifndef BOOTLOADER_BUILD
|
||||
sar_periph_ctrl_adc_reset();
|
||||
#else
|
||||
// Save temperature sensor related register values before ADC reset
|
||||
tsens_ll_reg_values_t saved_tsens_regs = {};
|
||||
tsens_ll_backup_registers(&saved_tsens_regs);
|
||||
adc_ll_reset_register();
|
||||
// Restore temperature sensor related register values after ADC reset
|
||||
temperature_sensor_ll_reset_module();
|
||||
tsens_ll_restore_registers(&saved_tsens_regs);
|
||||
#endif
|
||||
|
||||
adc_ll_enable_bus_clock(true);
|
||||
adc_ll_enable_func_clock(true);
|
||||
adc_ll_digi_clk_sel(ADC_DIGI_CLK_SRC_XTAL);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -9,12 +9,25 @@
|
||||
#include "hal/adc_ll.h"
|
||||
#include "hal/adc_types.h"
|
||||
#include "esp_private/regi2c_ctrl.h"
|
||||
#include "hal/temperature_sensor_ll.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#define I2C_SAR_ADC_INIT_CODE_VAL 2150
|
||||
|
||||
void bootloader_random_enable(void)
|
||||
{
|
||||
#ifndef BOOTLOADER_BUILD
|
||||
sar_periph_ctrl_adc_reset();
|
||||
#else
|
||||
// Save temperature sensor related register values before ADC reset
|
||||
tsens_ll_reg_values_t saved_tsens_regs = {};
|
||||
tsens_ll_backup_registers(&saved_tsens_regs);
|
||||
adc_ll_reset_register();
|
||||
// Restore temperature sensor related register values after ADC reset
|
||||
temperature_sensor_ll_reset_module();
|
||||
tsens_ll_restore_registers(&saved_tsens_regs);
|
||||
#endif
|
||||
|
||||
adc_ll_enable_bus_clock(true);
|
||||
adc_ll_enable_func_clock(true);
|
||||
adc_ll_digi_clk_sel(ADC_DIGI_CLK_SRC_XTAL);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "esp_private/periph_ctrl.h"
|
||||
#include "esp_private/adc_share_hw_ctrl.h"
|
||||
#include "esp_private/sar_periph_ctrl.h"
|
||||
|
||||
#if HAL_CONFIG(CHIP_SUPPORT_MIN_REV) >= 300
|
||||
#include "hal/trng_ll.h"
|
||||
@@ -24,7 +25,12 @@
|
||||
|
||||
void bootloader_random_enable(void)
|
||||
{
|
||||
#ifndef BOOTLOADER_BUILD
|
||||
sar_periph_ctrl_adc_reset();
|
||||
#else
|
||||
_adc_ll_reset_register();
|
||||
#endif
|
||||
|
||||
_adc_ll_enable_bus_clock(true);
|
||||
|
||||
adc_ll_digi_clk_sel(ADC_DIGI_CLK_SRC_XTAL);
|
||||
|
||||
Reference in New Issue
Block a user