Skip to content

Commit a4a2938

Browse files
committed
Update temperature sensor driver
1 parent 2736575 commit a4a2938

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

cores/esp32/esp32-hal-misc.c

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@
4040
#include "esp32/rom/rtc.h"
4141
#elif CONFIG_IDF_TARGET_ESP32S2
4242
#include "esp32s2/rom/rtc.h"
43-
#include "driver/temp_sensor.h"
43+
#include "driver/temperature_sensor.h"
4444
#elif CONFIG_IDF_TARGET_ESP32S3
4545
#include "esp32s3/rom/rtc.h"
46-
#include "driver/temp_sensor.h"
46+
#include "driver/temperature_sensor.h"
4747
#elif CONFIG_IDF_TARGET_ESP32C3
4848
#include "esp32c3/rom/rtc.h"
49-
#include "driver/temp_sensor.h"
49+
#include "driver/temperature_sensor.h"
5050
#else
5151
#error Target CONFIG_IDF_TARGET is not supported
5252
#endif
@@ -64,14 +64,38 @@ float temperatureRead()
6464
return (temprature_sens_read() - 32) / 1.8;
6565
}
6666
#else
67+
static temperature_sensor_handle_t temp_sensor = NULL;
68+
69+
static bool temperatureReadInit()
70+
{
71+
static volatile bool initialized = false;
72+
if(!initialized){
73+
initialized = true;
74+
//Install temperature sensor, expected temp ranger range: 10~50 ℃
75+
temperature_sensor_config_t temp_sensor_config = TEMPERATURE_SENSOR_CONFIG_DEFAULT(10, 50);
76+
if(temperature_sensor_install(&temp_sensor_config, &temp_sensor) != ESP_OK){
77+
initialized = false;
78+
temp_sensor = NULL;
79+
log_e("temperature_sensor_install failed");
80+
}
81+
else if(temperature_sensor_enable(temp_sensor) != ESP_OK){
82+
temperature_sensor_uninstall(temp_sensor);
83+
initialized = false;
84+
temp_sensor = NULL;
85+
log_e("temperature_sensor_enable failed");
86+
}
87+
}
88+
return initialized;
89+
}
90+
6791
float temperatureRead()
6892
{
6993
float result = NAN;
70-
temp_sensor_config_t tsens = TSENS_CONFIG_DEFAULT();
71-
temp_sensor_set_config(tsens);
72-
temp_sensor_start();
73-
temp_sensor_read_celsius(&result);
74-
temp_sensor_stop();
94+
if(temperatureReadInit()){
95+
if(temperature_sensor_get_celsius(temp_sensor, &result) != ESP_OK){
96+
log_e("temperature_sensor_get_celsius failed");
97+
}
98+
}
7599
return result;
76100
}
77101
#endif

0 commit comments

Comments
 (0)