fix(temperature_sensor): Fix the float calculation in temperature sensor isr

This commit is contained in:
C.S.M
2026-03-17 18:41:30 +08:00
committed by BOT
parent e20cf83b09
commit fc3fa2dba5
9 changed files with 37 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -39,7 +39,7 @@ static const char *TAG = "temperature_sensor";
static float s_deltaT = NAN; // unused number
#if SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
static int8_t s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval);
static int s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval);
#endif // SOC_TEMPERATURE_SENSOR_INTR_SUPPORT
static temperature_sensor_attribute_t *s_tsens_attribute_copy;
@@ -316,9 +316,10 @@ static uint8_t s_temperature_celsius_2_regval(temperature_sensor_handle_t tsens,
return (uint8_t)((celsius + TEMPERATURE_SENSOR_LL_OFFSET_FACTOR + TEMPERATURE_SENSOR_LL_DAC_FACTOR * tsens->tsens_attribute->offset) / TEMPERATURE_SENSOR_LL_ADC_FACTOR);
}
IRAM_ATTR static int8_t s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval)
IRAM_ATTR static int s_temperature_regval_2_celsius(temperature_sensor_handle_t tsens, uint8_t regval)
{
return TEMPERATURE_SENSOR_LL_ADC_FACTOR * regval - TEMPERATURE_SENSOR_LL_DAC_FACTOR * tsens->tsens_attribute->offset - TEMPERATURE_SENSOR_LL_OFFSET_FACTOR;
int result = TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT * regval - TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT * tsens->tsens_attribute->offset - TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT;
return (result / TEMPERATURE_SENSOR_LL_DENOMINATOR);
}
esp_err_t temperature_sensor_set_absolute_threshold(temperature_sensor_handle_t tsens, const temperature_sensor_abs_threshold_config_t *abs_cfg)

View File

@@ -33,6 +33,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -33,6 +33,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -37,6 +37,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -37,6 +37,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -36,6 +36,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -36,6 +36,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -30,6 +30,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)

View File

@@ -30,6 +30,10 @@ extern "C" {
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR (20.52)
#define TEMPERATURE_SENSOR_LL_ADC_FACTOR_INT (4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR_INT (278800)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR_INT (205200)
#define TEMPERATURE_SENSOR_LL_DENOMINATOR (10000)
#define TEMPERATURE_SENSOR_LL_MEASURE_MAX (125)
#define TEMPERATURE_SENSOR_LL_MEASURE_MIN (-40)