BirdNet-goMikrofon/Arduino-audio-tools-main/arduino-audio-tools-main/examples/README_ESP32.md

164 lines
4.2 KiB
Markdown
Raw Normal View History

2026-09-26 01:20:55 +02:00
# ESP32 Configuration
If you are using ESP32 by Espressif Systems version 3.0.0 and later, audio tools will use the new adc_continuous API.
For the adc_continuous API, audio tools provides the following options:
- **sample_rate** (per channel), the effective ADC sampling rate is the number of channels x sample rate and can be:
- ESP32: 20kHz to 2MHz
- ESP32 S2, S3, H2, C6, C3: 611Hz to 83.333kHz
for example:
- 306
- 4,000
- 5,000
- 8,000
- 10,000
- 11,025
- 16,000
- 20,000
- 22,050
- 40,000
- 44,100
- 48,000
- 88,200
- 96,000
- 176,400
- 192,200
- 352,800
- 384,000
- 500,000
- 1,000,000
- **adc_bit_width**
- 9, 10, 11, 12 depending on ESP32 model
- audio stream is int16_t
- **adc_calibration_active**: values measured are in mV
- **is_auto_center_read**: subtraction of current estimated average from samples
- **adc_attenuation**:
| attenuation | range | accurate range |
| ------------ | --------| -------------- |
| ADC_ATTEN_DB_0 | 0..1.1V | 100-950mV |
| ADC_ATTEN_DB_2_5| 0..1.5V | 100-1250mV |
| ADC_ATTEN_DB_6 | 0..2.2V | 150-1750mV |
| ADC_ATTEN_DB_12 | 0..3.9V | 150-2450mV |
- **channels**:
- mono = 1
- stereo = 2
- **adc_channels**: defining the channels (only channels on ADC unit 1 are supported) e.g.:
- A3 on Sparkfun ESP32 Thing Plus is ADC_CHANNEL_3
- A4 on Sparkfun ESP32 Thing Plus is ADC_CHANNEL_0
- D5 on Adafruit ESP32-S3 is ADC_CHANNEL_4
- D6 on Adafruit ESP32-S3 is ADC_CHANNEL_5
- **buffer_size**
- number of ADC conversion results per DMA frame, not the application processing block size
- effective per-channel samples per frame are `buffer_size / channels`
- maximum frame payload is 4092 bytes
- practical maximum results per frame are `floor(4092 / SOC_ADC_DIGI_RESULT_BYTES)`
- on ESP32 / ESP32-S2 the byte size is rounded up to a multiple of `SOC_ADC_DIGI_DATA_BYTES_PER_CONV`, so choose values that keep the aligned frame within 4092 bytes
- minimum is number of channels
- number needs to be divisible by number of channels
- care must be taken because some streams in audio tools can not exceed 1024 bytes
- **buffer_count**
- number of DMA frames retained in the RX driver pool
- increasing this adds tolerance for delayed reads but also increases RAM use
## Example Configuration
```
auto adcConfig = adc.defaultConfig(RX_MODE);
adcConfig.sample_rate = 44100;
adcConfig.adc_bit_width = 12;
adcConfig.adc_calibration_active = true;
adcConfig.is_auto_center_read = false;
adcConfig.adc_attenuation = ADC_ATTEN_DB_12;
adcConfig.channels = 2;
adcConfig.adc_channels[0] = ADC_CHANNEL_4;
adcConfig.adc_channels[1] = ADC_CHANNEL_5;
adcConfig.buffer_size = 512; // conversion results per DMA frame
adcConfig.buffer_count = 4; // number of queued DMA frames in the RX pool
```
## ADC unit 1 channels on common ESP32 boards
Audio tools continuous ADC framework supports ADC Unit 1 only.
### Sparkfun ESP32 Thing Plus (ESP32)
- A2, ADC1_CH6
- A3, ADC1_CH3
- A4, ADC1_CH0
- 32, ADC1_CH4
- 33, ADC1_CH5
### Sparkfun ESP32 Thing Plus C (ESP32)
- A2, ADC1_CH6
- A3, ADC1_CH3
- A4, ADC1_CH0
- A5, ADC1_CH7
- 32/6, ADC1_CH4
- 33/10, ADC1_CH5
### Sparkfun ESP32 Qwiic Pocket Development (ESP32C6)
- 2, ADC1_CH2
- 3, ADC1_CH3
- 4, ADC1_CH4
- 5, ADC1_CH5
### ESP32-C6-DevKit
- 4, ADC1_CH4
- 5, ADC1_CH5
- 6, ADC1_CH6
- 7, ADC1_CH0
- 0, ADC1_CH1
- 2, ADC1_CH2
- 3, ADC1_CH3
### ESP32-H2-DevKit
- 1, ADC1_CH0
- 2, ADC1_CH1
- 3, ADC1_CH2
- 4, ADC1_CH3
- 5, ADC1_CH4
### ESP32­-S3­-DevKit
- 1, ADC1_CH0
- 2, ADC1_CH1
- 4, ADC1_CH3
- 5, ADC1_CH4
- 6, ADC1_CH5
- 7, ADC1_CH6
- 8, ADC1_CH7
- 3, ADC1_CH2
- 9, ADC1_CH8
- 10, ADC1_CH9
### ESP32-C3-DevKit
- 4, IO2, ADC1_CH2
- 5, IO3, ADC1_CH3
- 9, IO0, ADC1_CH0
- 10, IO1, ADC1_CH1
- 11, IO4, ADC1_CH4
### Adafruit ESP32 Feather V2
- D32, ADC1_CH4
- D33, ADC1_CH5
- A2, ADC1_CH6
- A3, ADC1_CH3
- A4, ADC1_CH0
- D37, ADC1_CH1
### Adafruit ESP32-S3 Feather
- D5, ADC1_CH4
- D6, ADC1_CH5
- D9, ADC1_CH8
- D10, ADC1_CH9
- A5, ADC1_CH7
### Adafruit QT Py ESP32-C3
- A0, ADC1-CH4
- A1, ADC1-CH3
- A2, ADC1-CH1
- A3, ADC1-CH0