esp_adc: added adc digital filter feature
This commit is contained in:
committed by
Armando (Dou Yiwen)
parent
648b1a41c6
commit
3afa671069
@@ -16,7 +16,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if SOC_ADC_DMA_SUPPORTED
|
||||
|
||||
/**
|
||||
* @brief Driver Backgrounds
|
||||
@@ -130,7 +129,7 @@ esp_err_t adc_continuous_config(adc_continuous_handle_t handle, const adc_contin
|
||||
/**
|
||||
* @brief Register callbacks
|
||||
*
|
||||
* @note User can deregister a previously registered callback by calling this function and setting the to-be-deregistered callback member int
|
||||
* @note User can deregister a previously registered callback by calling this function and setting the to-be-deregistered callback member in
|
||||
* the `cbs` structure to NULL.
|
||||
* @note When CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is enabled, the callback itself and functions called by it should be placed in IRAM.
|
||||
* Involved variables (including `user_data`) should be in internal RAM as well.
|
||||
@@ -224,8 +223,6 @@ esp_err_t adc_continuous_io_to_channel(int io_num, adc_unit_t *unit_id, adc_chan
|
||||
*/
|
||||
esp_err_t adc_continuous_channel_to_io(adc_unit_t unit_id, adc_channel_t channel, int *io_num);
|
||||
|
||||
#endif // #if SOC_ADC_DMA_SUPPORTED
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include "sdkconfig.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_adc/adc_continuous.h"
|
||||
#include "hal/adc_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Type of adc iir filter handle
|
||||
*/
|
||||
typedef struct adc_iir_filter_t *adc_iir_filter_handle_t;
|
||||
|
||||
/**
|
||||
* @brief Filter Configuration
|
||||
*/
|
||||
typedef struct {
|
||||
adc_unit_t unit; ///< ADC unit
|
||||
adc_channel_t channel; ///< An ADC channel to be filtered. Note for ESP32S2, you should only set only one channel in pattern table, per ADC unit. See programming guide for more details.
|
||||
adc_digi_iir_filter_coeff_t coeff; ///< ADC filter coefficient
|
||||
} adc_continuous_iir_filter_config_t;
|
||||
|
||||
|
||||
/**
|
||||
* @brief New a ADC continuous mode IIR filter
|
||||
*
|
||||
* @param[in] handle ADC continuous mode driver handle
|
||||
* @param[in] config Filter configuration
|
||||
* @param[out] ret_hdl Returned IIR filter handle
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_INVALID_ARG: Invalid argument
|
||||
* - ESP_ERR_INVALID_STATE: Invalid state
|
||||
* - ESP_ERR_NO_MEM: No memory
|
||||
*/
|
||||
esp_err_t adc_new_continuous_iir_filter(adc_continuous_handle_t handle, const adc_continuous_iir_filter_config_t *config, adc_iir_filter_handle_t *ret_hdl);
|
||||
|
||||
/**
|
||||
* @brief Enable an IIR filter
|
||||
*
|
||||
* @param[in] filter_hdl ADC IIR filter handle
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_INVALID_ARG: Invalid argument
|
||||
* - ESP_ERR_INVALID_STATE: Invalid state
|
||||
*/
|
||||
esp_err_t adc_continuous_iir_filter_enable(adc_iir_filter_handle_t filter_hdl);
|
||||
|
||||
/**
|
||||
* @brief Disable an IIR filter
|
||||
*
|
||||
* @param[in] filter_hdl ADC IIR filter handle
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_INVALID_ARG: Invalid argument
|
||||
* - ESP_ERR_INVALID_STATE: Invalid state
|
||||
*/
|
||||
esp_err_t adc_continuous_iir_filter_disable(adc_iir_filter_handle_t filter_hdl);
|
||||
|
||||
/**
|
||||
* @brief Delete the IIR filter
|
||||
*
|
||||
* @param[in] filter_hdl ADC IIR filter handle
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_INVALID_ARG: Invalid argument
|
||||
* - ESP_ERR_INVALID_STATE: Invalid state
|
||||
*/
|
||||
esp_err_t adc_del_continuous_iir_filter(adc_iir_filter_handle_t filter_hdl);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user