BirdNet-goMikrofon/Arduino-audio-tools-main/arduino-audio-tools-main/examples/README_ESP32.md
2026-09-26 01:20:55 +02:00

163 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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