mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 00:51:42 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Copyright 2010-2018 Espressif Systems (Shanghai) PTE LTD
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
 | 
						|
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include "esp_err.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    TSENS_DAC_L0 = 0, /*!< offset = -2, measure range: 50℃ ~ 125℃, error < 3℃. */
 | 
						|
    TSENS_DAC_L1,     /*!< offset = -1, measure range: 20℃ ~ 100℃, error < 2℃. */
 | 
						|
    TSENS_DAC_L2,     /*!< offset =  0, measure range:-10℃ ~  80℃, error < 1℃. */
 | 
						|
    TSENS_DAC_L3,     /*!< offset =  1, measure range:-30℃ ~  50℃, error < 2℃. */
 | 
						|
    TSENS_DAC_L4,     /*!< offset =  2, measure range:-40℃ ~  20℃, error < 3℃. */
 | 
						|
    TSENS_DAC_MAX,
 | 
						|
    TSENS_DAC_DEFAULT = TSENS_DAC_L2,
 | 
						|
} temp_sensor_dac_offset_t;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Configuration for temperature sensor reading
 | 
						|
 */
 | 
						|
typedef struct {
 | 
						|
    temp_sensor_dac_offset_t dac_offset;    /*!< The temperature measurement range is configured with a built-in temperature offset DAC. */
 | 
						|
    uint8_t clk_div;                        /*!< Default: 6 */
 | 
						|
} temp_sensor_config_t;
 | 
						|
 | 
						|
#define TSENS_CONFIG_DEFAULT() {.dac_offset = TSENS_DAC_L2, \
 | 
						|
                                .clk_div = 6}
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Set parameter of temperature sensor.
 | 
						|
 * @param tsens
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_set_config(temp_sensor_config_t tsens);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Get parameter of temperature sensor.
 | 
						|
 * @param tsens
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_get_config(temp_sensor_config_t *tsens);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Start temperature sensor measure.
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 *     - ESP_ERR_INVALID_ARG
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_start(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Stop temperature sensor measure.
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_stop(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Read temperature sensor raw data. 
 | 
						|
 * @param tsens_out Pointer to raw data, Range: 0 ~ 255
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 *     - ESP_ERR_INVALID_ARG `tsens_out` is NULL
 | 
						|
 *     - ESP_ERR_INVALID_STATE temperature sensor dont start
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_read_raw(uint32_t *tsens_out);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Read temperature sensor data that is converted to degrees Celsius.
 | 
						|
 * @note  Should not be called from interrupt.
 | 
						|
 * @param celsius The measure output value.
 | 
						|
 * @return
 | 
						|
 *     - ESP_OK Success
 | 
						|
 *     - ESP_ERR_INVALID_ARG ARG is NULL.
 | 
						|
 *     - ESP_ERR_INVALID_STATE The ambient temperature is out of range.
 | 
						|
 */
 | 
						|
esp_err_t temp_sensor_read_celsius(float *celsius);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 |