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+
6791float 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