/* * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 *//* ... */#pragmaonce#include<stdint.h>#include<stdbool.h>#include"sdkconfig.h"#include"esp_pm.h"#include"freertos/FreeRTOS.h"#include"freertos/ringbuf.h"#include"hal/adc_types.h"#include"hal/adc_hal.h"8 includes//For DMA#ifSOC_GDMA_SUPPORTED#include"esp_private/gdma.h"#elifCONFIG_IDF_TARGET_ESP32S2#include"hal/spi_types.h"#include"esp_private/spi_common_internal.h"/* ... */#elifCONFIG_IDF_TARGET_ESP32#include"driver/i2s_types.h"#endif#include"esp_adc/adc_filter.h"#include"esp_adc/adc_monitor.h"#include"adc_dma_internal.h"#ifdef__cplusplusextern"C"{#endiftypedefenum{ADC_FSM_INIT,ADC_FSM_STARTED,}{ ... }adc_fsm_t;typedefenum{ADC_MONITOR_FSM_INIT,ADC_MONITOR_FSM_ENABLED,}{ ... }adc_monitor_fsm_t;/*--------------------------------------------------------------- Driver Context---------------------------------------------------------------*//* ... */typedefstructadc_iir_filter_tadc_iir_filter_t;typedefstructadc_monitor_tadc_monitor_t;typedefstructadc_continuous_ctx_tadc_continuous_ctx_t;typedefbool(*adc_dma_intr_func_t)(adc_continuous_ctx_t*adc_digi_ctx);/** * @brief ADC iir filter context *//* ... */structadc_iir_filter_t{adc_digi_iir_filter_tfilter_id;// Filter IDadc_continuous_iir_filter_config_tcfg;//filter configurationadc_continuous_ctx_t*continuous_ctx;//ADC continuous driver context}{ ... };/** * @brief ADC digi monitor context *//* ... */structadc_monitor_t{adc_monitor_id_tmonitor_id;// monitor unit numberadc_monitor_fsm_tfsm;// monitor status indicatoradc_monitor_config_tconfig;// monitor configurationadc_monitor_evt_cbs_tcbs;// monitor thresh callbacksvoid*user_data;// user data pointer to use in cb}{ ... };/** * @brief ADC continuous driver context *//* ... */structadc_continuous_ctx_t{uint8_t*rx_dma_buf;//dma bufferadc_hal_dma_ctx_thal;//hal contextRingbufHandle_tringbuf_hdl;//RX ringbuffer handlervoid*ringbuf_storage;//Ringbuffer storage buffervoid*ringbuf_struct;//Ringbuffer structure buffersize_tringbuf_size;//Ringbuffer sizeintptr_trx_eof_desc_addr;//eof descriptor address of RX channeladc_fsm_tfsm;//ADC continuous mode driver internal statesbooluse_adc1;//1: ADC unit1 will be used; 0: ADC unit1 won't be used.booluse_adc2;//1: ADC unit2 will be used; 0: ADC unit2 won't be used. This determines whether to acquire sar_adc2_mutex lock or not.adc_atten_tadc1_atten;//Attenuation for ADC1. On this chip each ADC can only support one attenuation.adc_atten_tadc2_atten;//Attenuation for ADC2. On this chip each ADC can only support one attenuation.adc_hal_digi_ctrlr_cfg_thal_digi_ctrlr_cfg;//Hal digital controller configurationadc_continuous_evt_cbs_tcbs;//Callbacksvoid*user_data;//User contextesp_pm_lock_handle_tpm_lock;//For power managementstruct{uint32_tflush_pool:1;//Flush the internal pool when the pool is full. With this flag, the `on_pool_ovf` event will not happen.}{ ... }flags;#ifSOC_ADC_DIG_IIR_FILTER_SUPPORTEDadc_iir_filter_t*iir_filter[SOC_ADC_DIGI_IIR_FILTER_NUM];//ADC IIR filter context#endif#ifSOC_ADC_MONITOR_SUPPORTEDadc_monitor_t*adc_monitor[SOC_ADC_DIGI_MONITOR_NUM];// adc monitor context#endifsize_tadc_desc_size;adc_dma_tadc_dma;adc_dma_intr_func_tadc_intr_func;}{ ... };#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.