3#include "AudioToolsConfig.h"
4#if (defined(ESP32) && defined(USE_ANALOG) && !USE_LEGACY_I2S) || defined(DOXYGEN)
6#include "AudioTools/CoreAudio/AudioTypes.h"
7#include "esp_adc/adc_cali_scheme.h"
8#include "esp_adc/adc_continuous.h"
10#include "esp32-hal-periman.h"
13#if CONFIG_IDF_TARGET_ESP32
14#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
15#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE1
17 {ADC_CHANNEL_0, ADC_CHANNEL_3, ADC_CHANNEL_4, \
18 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7}
19#define NUM_ADC_CHANNELS 6
20#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type1.channel)
21#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type1.data)
23#define ADC_CHANNEL_TYPE uint16_t
24#define ADC_DATA_TYPE uint16_t
25#elif CONFIG_IDF_TARGET_ESP32S2
26#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
27#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
28#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
29#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
31 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4, \
32 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7, ADC_CHANNEL_8, ADC_CHANNEL_9}
33#define NUM_ADC_CHANNELS 10
35#define ADC_CHANNEL_TYPE uint16_t
36#define ADC_DATA_TYPE uint16_t
37#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32H2 || \
38 CONFIG_IDF_TARGET_ESP32C2
39#define ADC_CONV_MODE ADC_CONV_ALTER_UNIT
40#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
41#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
42#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
44 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4}
45#define NUM_ADC_CHANNELS 5
46#define ADC_CHANNEL_TYPE uint32_t
47#define ADC_DATA_TYPE uint32_t
48#elif CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6
49#define ADC_CONV_MODE ADC_CONV_ALTER_UNIT
50#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
51#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
52#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
54 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, \
55 ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_6}
56#define NUM_ADC_CHANNELS 7
57#define ADC_CHANNEL_TYPE uint32_t
58#define ADC_DATA_TYPE uint32_t
59#elif CONFIG_IDF_TARGET_ESP32S3
60#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
61#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
62#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
63#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
65 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4, \
66 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7, ADC_CHANNEL_8, ADC_CHANNEL_9}
67#define NUM_ADC_CHANNELS 10
68#define ADC_CHANNEL_TYPE uint32_t
69#define ADC_DATA_TYPE uint32_t
70#elif CONFIG_IDF_TARGET_ESP32P4
71#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
72#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
73#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
74#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
76 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, \
77 ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7}
78#define NUM_ADC_CHANNELS 8
79#define ADC_CHANNEL_TYPE uint32_t
80#define ADC_DATA_TYPE uint32_t
85#define ADC_UNIT ADC_UNIT_1
86#if defined(HAS_ESP32_DAC) && !USE_LEGACY_I2S
87#include "driver/dac_continuous.h"
104 int buffer_count = ANALOG_BUFFER_COUNT;
105 int buffer_size = ANALOG_BUFFER_SIZE;
107 TickType_t timeout = portMAX_DELAY;
110 bool is_blocking_write =
true;
111 bool use_apll =
false;
113 dac_channel_mask_t dac_mono_channel = DAC_CHANNEL_MASK_CH0;
117 bool adc_calibration_active =
false;
118 bool is_auto_center_read =
false;
119 adc_digi_convert_mode_t adc_conversion_mode = ADC_CONV_MODE;
120 adc_digi_output_format_t adc_output_type = ADC_OUTPUT_TYPE;
121 uint8_t adc_attenuation = ADC_ATTEN_DB_12;
122 uint8_t adc_bit_width = SOC_ADC_DIGI_MAX_BITWIDTH;
124 adc_unit_t adc_unit = ADC_UNIT;
125 adc_channel_t adc_channels[NUM_ADC_CHANNELS] = ADC_CHANNELS;
132 rx_tx_mode = rxtxMode;
133 switch (rx_tx_mode) {
139 LOGI(
"I2S_MODE_ADC_BUILT_IN");
145 LOGI(
"I2S_MODE_DAC_BUILT_IN");
150 LOGE(
"RxTxMode not supported: %d", rx_tx_mode);
159 AudioInfo::logInfo();
161 if (rx_tx_mode == TX_MODE) {
162 LOGI(
"analog left output pin: %d", 25);
163 LOGI(
"analog right output pin: %d", 26);
167 LOGI(
"use_apll: %d", use_apll);
174using AnalogConfig = AnalogConfigESP32V1;
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:28