fix(soc): Fix wrong efuse register on esp32c61

This commit is contained in:
C.S.M
2025-06-16 10:58:53 +08:00
parent caf1a18188
commit bdf4dafe56
12 changed files with 60 additions and 89 deletions
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -22,7 +22,6 @@
#include "clk_ctrl_os.h"
#include "freertos/FreeRTOS.h"
#include "driver/temperature_sensor.h"
#include "esp_efuse_rtc_calib.h"
#include "esp_private/periph_ctrl.h"
#include "temperature_sensor_private.h"
#include "hal/temperature_sensor_ll.h"
@@ -36,7 +35,7 @@
static const char *TAG = "temperature_sensor";
static float s_deltaT = NAN; // unused number
static int s_deltaT = INT_MIN; // unused number
#if SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
static int8_t s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval);
@@ -274,19 +273,20 @@ esp_err_t temperature_sensor_disable(temperature_sensor_handle_t tsens)
static esp_err_t read_delta_t_from_efuse(void)
{
if (temperature_sensor_ll_calib_get_tsens_val(&s_deltaT) != true) {
ESP_LOGW(TAG, "Calibration failed");
s_deltaT = temperature_sensor_ll_load_calib_param();
if (s_deltaT == 0) {
ESP_LOGW(TAG, "No calibration param in eFuse");
}
ESP_LOGD(TAG, "s_deltaT = %f", s_deltaT);
ESP_LOGD(TAG, "s_deltaT = %d", s_deltaT);
return ESP_OK;
}
static float parse_temp_sensor_raw_value(int16_t tsens_raw)
{
if (isnan(s_deltaT)) { //suggests that the value is not initialized
if (s_deltaT == INT_MIN) { //suggests that the value is not initialized
read_delta_t_from_efuse();
}
float result = tsens_raw - s_deltaT / 10.0;
float result = tsens_raw - (float)s_deltaT / 10.0;
return result;
}