3#include "AudioToolsConfig.h"
4#if defined(USE_ANALOG) && defined(ESP32) && \
5 ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) || \
8 #include "AudioTools/CoreAudio/AudioTypes.h"
10#include "esp_adc/adc_cali_scheme.h"
11#include "esp_adc/adc_continuous.h"
13#include "esp32-hal-periman.h"
16#if CONFIG_IDF_TARGET_ESP32
17#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
18#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE1
20 {ADC_CHANNEL_0, ADC_CHANNEL_3, ADC_CHANNEL_4, \
21 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7}
22#define NUM_ADC_CHANNELS 6
23#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type1.channel)
24#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type1.data)
26#define ADC_CHANNEL_TYPE uint16_t
27#define ADC_DATA_TYPE uint16_t
28#elif CONFIG_IDF_TARGET_ESP32S2
29#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
30#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
31#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
32#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
34 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4, \
35 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7, ADC_CHANNEL_8, ADC_CHANNEL_9}
36#define NUM_ADC_CHANNELS 10
38#define ADC_CHANNEL_TYPE uint16_t
39#define ADC_DATA_TYPE uint16_t
40#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32H2 || \
41 CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C6
42#define ADC_CONV_MODE ADC_CONV_ALTER_UNIT
43#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
44#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
45#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
47 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4}
48#define NUM_ADC_CHANNELS 5
49#define ADC_CHANNEL_TYPE uint32_t
50#define ADC_DATA_TYPE uint32_t
51#elif CONFIG_IDF_TARGET_ESP32C6
52#define ADC_CONV_MODE ADC_CONV_ALTER_UNIT
53#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
54#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
55#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
57 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, \
58 ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_6}
59#define NUM_ADC_CHANNELS 7
60#define ADC_CHANNEL_TYPE uint32_t
61#define ADC_DATA_TYPE uint32_t
62#elif CONFIG_IDF_TARGET_ESP32S3
63#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
64#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
65#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
66#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
68 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, ADC_CHANNEL_4, \
69 ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7, ADC_CHANNEL_8, ADC_CHANNEL_9}
70#define NUM_ADC_CHANNELS 10
71#define ADC_CHANNEL_TYPE uint32_t
72#define ADC_DATA_TYPE uint32_t
73#elif CONFIG_IDF_TARGET_ESP32P4
74#define ADC_CONV_MODE ADC_CONV_SINGLE_UNIT_1
75#define ADC_OUTPUT_TYPE ADC_DIGI_OUTPUT_FORMAT_TYPE2
76#define AUDIO_ADC_GET_CHANNEL(p_data) ((p_data)->type2.channel)
77#define AUDIO_ADC_GET_DATA(p_data) ((p_data)->type2.data)
79 {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3, \
80 ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_6, ADC_CHANNEL_7}
81#define NUM_ADC_CHANNELS 8
82#define ADC_CHANNEL_TYPE uint32_t
83#define ADC_DATA_TYPE uint32_t
88#define ADC_UNIT ADC_UNIT_1
90#include "driver/dac_continuous.h"
107 int buffer_count = ANALOG_BUFFER_COUNT;
108 int buffer_size = ANALOG_BUFFER_SIZE;
110 TickType_t timeout = portMAX_DELAY;
113 bool is_blocking_write =
true;
114 bool use_apll =
false;
116 dac_channel_mask_t dac_mono_channel = DAC_CHANNEL_MASK_CH0;
120 bool adc_calibration_active =
false;
121 bool is_auto_center_read =
false;
122 adc_digi_convert_mode_t adc_conversion_mode = ADC_CONV_MODE;
123 adc_digi_output_format_t adc_output_type = ADC_OUTPUT_TYPE;
124 uint8_t adc_attenuation = ADC_ATTEN_DB_12;
125 uint8_t adc_bit_width = SOC_ADC_DIGI_MAX_BITWIDTH;
127 adc_unit_t adc_unit = ADC_UNIT;
128 adc_channel_t adc_channels[NUM_ADC_CHANNELS] = ADC_CHANNELS;
135 rx_tx_mode = rxtxMode;
136 switch (rx_tx_mode) {
142 LOGI(
"I2S_MODE_ADC_BUILT_IN");
148 LOGI(
"I2S_MODE_DAC_BUILT_IN");
153 LOGE(
"RxTxMode not supported: %d", rx_tx_mode);
162 AudioInfo::logInfo();
164 if (rx_tx_mode == TX_MODE) {
165 LOGI(
"analog left output pin: %d", 25);
166 LOGI(
"analog right output pin: %d", 26);
170 LOGI(
"use_apll: %d", use_apll);
177using 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