temp_sensor: add check to temp_sensor api

This commit is contained in:
Cao Sen Miao
2021-05-06 15:15:32 +08:00
parent a1b5c38218
commit 24356cf7f7
2 changed files with 13 additions and 1 deletions

View File

@@ -54,7 +54,7 @@ esp_err_t temp_sensor_get_config(temp_sensor_config_t *tsens);
* @brief Start temperature sensor measure. * @brief Start temperature sensor measure.
* @return * @return
* - ESP_OK Success * - ESP_OK Success
* - ESP_ERR_INVALID_ARG * - ESP_ERR_INVALID_STATE if temperature sensor is started already.
*/ */
esp_err_t temp_sensor_start(void); esp_err_t temp_sensor_start(void);
@@ -62,6 +62,7 @@ esp_err_t temp_sensor_start(void);
* @brief Stop temperature sensor measure. * @brief Stop temperature sensor measure.
* @return * @return
* - ESP_OK Success * - ESP_OK Success
* - ESP_ERR_INVALID_STATE if temperature sensor is stopped already.
*/ */
esp_err_t temp_sensor_stop(void); esp_err_t temp_sensor_stop(void);

View File

@@ -23,6 +23,7 @@
#include "esp_efuse_rtc_calib.h" #include "esp_efuse_rtc_calib.h"
static const char *TAG = "tsens"; static const char *TAG = "tsens";
static bool temp_sensor_start_flag = false;
#define TSENS_XPD_WAIT_DEFAULT 0xFF /* Set wait cycle time(8MHz) from power up to reset enable. */ #define TSENS_XPD_WAIT_DEFAULT 0xFF /* Set wait cycle time(8MHz) from power up to reset enable. */
#define TSENS_ADC_FACTOR (0.4386) #define TSENS_ADC_FACTOR (0.4386)
@@ -83,16 +84,26 @@ esp_err_t temp_sensor_get_config(temp_sensor_config_t *tsens)
esp_err_t temp_sensor_start(void) esp_err_t temp_sensor_start(void)
{ {
if (temp_sensor_start_flag == true) {
ESP_LOGE(TAG, "Temperature sensor has been started!");
return ESP_ERR_INVALID_STATE;
}
REG_SET_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_TSENS_CLK_EN); REG_SET_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_TSENS_CLK_EN);
APB_SARADC.apb_tsens_ctrl2.tsens_clk_sel = 1; APB_SARADC.apb_tsens_ctrl2.tsens_clk_sel = 1;
APB_SARADC.apb_tsens_ctrl.tsens_pu = 1; APB_SARADC.apb_tsens_ctrl.tsens_pu = 1;
temp_sensor_start_flag = true;
return ESP_OK; return ESP_OK;
} }
esp_err_t temp_sensor_stop(void) esp_err_t temp_sensor_stop(void)
{ {
if (temp_sensor_start_flag == false) {
ESP_LOGE(TAG, "Temperature sensor has been stopped!");
return ESP_ERR_INVALID_STATE;
}
APB_SARADC.apb_tsens_ctrl.tsens_pu = 0; APB_SARADC.apb_tsens_ctrl.tsens_pu = 0;
APB_SARADC.apb_tsens_ctrl2.tsens_clk_sel = 0; APB_SARADC.apb_tsens_ctrl2.tsens_clk_sel = 0;
temp_sensor_start_flag = false;
return ESP_OK; return ESP_OK;
} }