From 8ce60fa50abb52ddb2e94917aaf0bea7fcad08a2 Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Fri, 1 Sep 2023 11:06:02 +0800 Subject: [PATCH] bugfix(temperature_sensor): Fix issue that get the value is negative --- components/driver/esp32c3/rtc_tempsensor.c | 4 ++-- components/driver/esp32s2/rtc_tempsensor.c | 4 ++-- components/driver/esp32s3/rtc_tempsensor.c | 4 ++-- components/esp_hw_support/port/esp32s2/sar_periph_ctrl.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/driver/esp32c3/rtc_tempsensor.c b/components/driver/esp32c3/rtc_tempsensor.c index e5c4bd4366..7d8fb316c8 100644 --- a/components/driver/esp32c3/rtc_tempsensor.c +++ b/components/driver/esp32c3/rtc_tempsensor.c @@ -126,7 +126,7 @@ static void read_delta_t_from_efuse(void) ESP_LOGD(TAG, "s_deltaT = %f", s_deltaT); } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -141,7 +141,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range."); diff --git a/components/driver/esp32s2/rtc_tempsensor.c b/components/driver/esp32s2/rtc_tempsensor.c index eb217cc026..1f0adf87ce 100644 --- a/components/driver/esp32s2/rtc_tempsensor.c +++ b/components/driver/esp32s2/rtc_tempsensor.c @@ -148,7 +148,7 @@ static void read_delta_t_from_efuse(void) ESP_LOGD(TAG, "s_deltaT = %f\n", s_deltaT); } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -163,7 +163,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range."); diff --git a/components/driver/esp32s3/rtc_tempsensor.c b/components/driver/esp32s3/rtc_tempsensor.c index 277b4c3bd4..7dfb54285a 100644 --- a/components/driver/esp32s3/rtc_tempsensor.c +++ b/components/driver/esp32s3/rtc_tempsensor.c @@ -128,7 +128,7 @@ static void read_delta_t_from_efuse(void) ESP_LOGD(TAG, "s_deltaT = %f", s_deltaT); } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -143,7 +143,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range."); diff --git a/components/esp_hw_support/port/esp32s2/sar_periph_ctrl.c b/components/esp_hw_support/port/esp32s2/sar_periph_ctrl.c index e3b494f6f3..9bad631193 100644 --- a/components/esp_hw_support/port/esp32s2/sar_periph_ctrl.c +++ b/components/esp_hw_support/port/esp32s2/sar_periph_ctrl.c @@ -210,4 +210,4 @@ int16_t temp_sensor_get_raw_value(bool *range_changed) portEXIT_CRITICAL(&rtc_spinlock); return degree; -} \ No newline at end of file +}