/* * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */#include<stdint.h>#include<stdbool.h>#include"esp_err.h"#include"driver/ana_cmpr_types.h"#ifdef__cplusplusextern"C"{#endif/** * @brief Analog comparator unit configuration * *//* ... */typedefstruct{ana_cmpr_unit_tunit;/*!< Analog comparator unit */ana_cmpr_clk_src_tclk_src;/*!< The clock source of the analog comparator, * which decide the resolution of the comparator *//* ... */ana_cmpr_ref_source_tref_src;/*!< Reference signal source of the comparator, * select using ANA_CMPR_REF_SRC_INTERNAL or ANA_CMPR_REF_SRC_EXTERNAL. * For internal reference, the reference voltage should be set to `internal_ref_volt`, * for external reference, the reference signal should be connect to `ANA_CMPRx_EXT_REF_GPIO` *//* ... */ana_cmpr_cross_type_tcross_type;/*!< The crossing types that can trigger interrupt */intintr_priority;/*!< The interrupt priority, range 0~7, if set to 0, the driver will try to allocate an interrupt with a relative low priority (1,2,3) * otherwise the larger the higher, 7 is NMI *//* ... */struct{uint32_tio_loop_back:1;/*!< Enable this field when the other signals that output on the comparison pins are supposed to be fed back. * Normally used for debug/test scenario *//* ... */}{ ... }flags;/*!< Analog comparator driver flags */}{ ... }ana_cmpr_config_t;/** * @brief Analog comparator internal reference configuration * *//* ... */typedefstruct{ana_cmpr_ref_voltage_tref_volt;/*!< The internal reference voltage. It can be specified to a certain fixed percentage of * the VDD power supply, currently supports 0%~70% VDD with a step 10% *//* ... */}{ ... }ana_cmpr_internal_ref_config_t;/** * @brief Analog comparator debounce filter configuration * *//* ... */typedefstruct{uint32_twait_us;/*!< The wait time of re-enabling the interrupt after the last triggering, * it is used to avoid the spurious triggering while the source signal crossing the reference signal. * The value should regarding how fast the source signal changes, e.g., a rapid signal requires * a small wait time, otherwise the next crosses may be missed. * (Unit: micro second) *//* ... */}{ ... }ana_cmpr_debounce_config_t;/** * @brief Group of Analog Comparator callbacks * @note The callbacks are all running under ISR environment * @note When CONFIG_ANA_CMPR_ISR_IRAM_SAFE is enabled, the callback itself and functions called by it should be placed in IRAM. * The variables used in the function should be in the SRAM as well. *//* ... */typedefstruct{ana_cmpr_cross_cb_ton_cross;/*!< The callback function on cross interrupt */}{ ... }ana_cmpr_event_callbacks_t;/** * @brief Allocating a new analog comparator unit handle * * @param[in] config The config of the analog comparator unit * @param[out] ret_cmpr The returned analog comparator unit handle * @return * - ESP_OK Allocate analog comparator unit handle success * - ESP_ERR_NO_MEM No memory for the analog comparator structure * - ESP_ERR_INVALID_ARG NULL pointer of the parameters or wrong unit number * - ESP_ERR_INVALID_STATE The unit has been allocated or the clock source has been occupied *//* ... */esp_err_tana_cmpr_new_unit(constana_cmpr_config_t*config,ana_cmpr_handle_t*ret_cmpr);/** * @brief Delete the analog comparator unit handle * * @param[in] cmpr The handle of analog comparator unit * @return * - ESP_OK Delete analog comparator unit handle success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters or wrong unit number * - ESP_ERR_INVALID_STATE The analog comparator is not disabled yet *//* ... */esp_err_tana_cmpr_del_unit(ana_cmpr_handle_tcmpr);/** * @brief Set internal reference configuration * @note This function only need to be called when `ana_cmpr_config_t::ref_src` * is ANA_CMPR_REF_SRC_INTERNAL. * @note This function is allowed to run within ISR context including intr callbacks * @note This function will be placed into IRAM if `CONFIG_ANA_CMPR_CTRL_FUNC_IN_IRAM` is on, * so that it's allowed to be executed when Cache is disabled * * @param[in] cmpr The handle of analog comparator unit * @param[in] ref_cfg Internal reference configuration * @return * - ESP_OK Set denounce configuration success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters * - ESP_ERR_INVALID_STATE The reference source is not `ANA_CMPR_REF_SRC_INTERNAL` *//* ... */esp_err_tana_cmpr_set_internal_reference(ana_cmpr_handle_tcmpr,constana_cmpr_internal_ref_config_t*ref_cfg);/** * @brief Set debounce configuration to the analog comparator * @note This function is allowed to run within ISR context including intr callbacks * @note This function will be placed into IRAM if `CONFIG_ANA_CMPR_CTRL_FUNC_IN_IRAM` is on, * so that it's allowed to be executed when Cache is disabled * * @param[in] cmpr The handle of analog comparator unit * @param[in] dbc_cfg Debounce configuration * @return * - ESP_OK Set denounce configuration success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters *//* ... */esp_err_tana_cmpr_set_debounce(ana_cmpr_handle_tcmpr,constana_cmpr_debounce_config_t*dbc_cfg);/** * @brief Set the source signal cross type * @note The initial cross type is configured in `ana_cmpr_new_unit`, this function can update the cross type * @note This function is allowed to run within ISR context including intr callbacks * @note This function will be placed into IRAM if `CONFIG_ANA_CMPR_CTRL_FUNC_IN_IRAM` is on, * so that it's allowed to be executed when Cache is disabled * * @param[in] cmpr The handle of analog comparator unit * @param[in] cross_type The source signal cross type that can trigger the interrupt * @return * - ESP_OK Set denounce configuration success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters *//* ... */esp_err_tana_cmpr_set_cross_type(ana_cmpr_handle_tcmpr,ana_cmpr_cross_type_tcross_type);/** * @brief Register analog comparator interrupt event callbacks * @note This function can only be called before enabling the unit * * @param[in] cmpr The handle of analog comparator unit * @param[in] cbs Group of callback functions * @param[in] user_data The user data that will be passed to callback functions directly * @return * - ESP_OK Register callbacks success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters * - ESP_ERR_INVALID_STATE The analog comparator has been enabled *//* ... */esp_err_tana_cmpr_register_event_callbacks(ana_cmpr_handle_tcmpr,constana_cmpr_event_callbacks_t*cbs,void*user_data);/** * @brief Enable the analog comparator unit * * @param[in] cmpr The handle of analog comparator unit * @return * - ESP_OK Enable analog comparator unit success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters * - ESP_ERR_INVALID_STATE The analog comparator has been enabled *//* ... */esp_err_tana_cmpr_enable(ana_cmpr_handle_tcmpr);/** * @brief Disable the analog comparator unit * * @param[in] cmpr The handle of analog comparator unit * @return * - ESP_OK Disable analog comparator unit success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters * - ESP_ERR_INVALID_STATE The analog comparator has disabled already *//* ... */esp_err_tana_cmpr_disable(ana_cmpr_handle_tcmpr);/** * @brief Get the specific GPIO number of the analog comparator unit * * @param[in] unit The handle of analog comparator unit * @param[in] chan_type The channel type of analog comparator, like source channel or reference channel * @param[out] gpio_num The output GPIO number of this channel * @return * - ESP_OK Get GPIO success * - ESP_ERR_INVALID_ARG NULL pointer of the parameters or wrong unit number or wrong channel type *//* ... */esp_err_tana_cmpr_get_gpio(ana_cmpr_unit_tunit,ana_cmpr_channel_type_tchan_type,int*gpio_num);#ifdef__cplusplus}{...}#endif
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.