Merge branch 'bugfix/fix_temp_sensor_affect_by_adc_v5.2' into 'release/v5.2'

Bugfix/fix temp sensor affect by adc v5.2

See merge request espressif/esp-idf!47031
This commit is contained in:
morris
2026-04-08 10:37:53 +08:00
14 changed files with 513 additions and 72 deletions
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -232,6 +232,42 @@ static inline void temperature_sensor_ll_set_sample_rate(uint16_t rate)
HAL_FORCE_MODIFY_U32_REG_FIELD(APB_SARADC.tsens_sample, saradc_tsens_sample_rate, rate);
}
/**
* @brief Structure for temperature sensor related register values
*/
typedef struct {
uint32_t tsens_ctrl; // Temperature sensor control register (APB_SARADC_APB_TSENS_CTRL_REG)
uint32_t tsens_ctrl2; // Temperature sensor control register 2 (APB_SARADC_TSENS_CTRL2_REG)
uint32_t tsens_wake; // Temperature sensor wake register (APB_TSENS_WAKE_REG)
uint32_t tsens_sample; // Temperature sensor sample register (APB_TSENS_SAMPLE_REG)
} tsens_ll_reg_values_t;
/**
* @brief Read temperature sensor related ADC register values for backup
*
* @param reg_values Output parameter, pointer to structure for storing register values
*/
static inline void tsens_ll_backup_registers(tsens_ll_reg_values_t *reg_values)
{
reg_values->tsens_ctrl = APB_SARADC.saradc_apb_tsens_ctrl.val;
reg_values->tsens_ctrl2 = APB_SARADC.saradc_tsens_ctrl2.val;
reg_values->tsens_wake = APB_SARADC.tsens_wake.val;
reg_values->tsens_sample = APB_SARADC.tsens_sample.val;
}
/**
* @brief Restore temperature sensor related ADC register values from backup
*
* @param reg_values Input parameter, pointer to structure containing register values to restore
*/
static inline void tsens_ll_restore_registers(const tsens_ll_reg_values_t *reg_values)
{
APB_SARADC.saradc_apb_tsens_ctrl.val = reg_values->tsens_ctrl;
APB_SARADC.saradc_tsens_ctrl2.val = reg_values->tsens_ctrl2;
APB_SARADC.tsens_wake.val = reg_values->tsens_wake;
APB_SARADC.tsens_sample.val = reg_values->tsens_sample;
}
#ifdef __cplusplus
}
#endif