mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
2fceec4d85
1. Support built-in ADC for I2S. 2. Modify code of ADC, made no change to the original APIs. 3. Add APIs in I2S: esp_err_t i2s_set_adc_mode(adc_unit_t adc_unit, adc1_channel_t adc_channel); 4. Add I2S ADC/DAC example code. 5. add old-fashion definition to make it more compatible 6. replase spi_flash_ APIs with esp_partition_ APIs 7. add example of generating audio table from wav 8. change example sound
1.7 KiB
Executable File
1.7 KiB
Executable File
I2S built-in ADC/DAC Example
- This is an example of:
- Recording sound from ADC
- Replay the recorded sound via DAC
- Play an audio file in flash
- Run this example
- Set partition table to "partitions_adc_dac_example.csv" in menuconfig, or rename sdkconfig.default to sdkconfig directly.
- Set IDF_PATH and run "make flash"
- This example will execute the following steps:
- Erase flash
- Record audio from ADC and save in flash
- Read flash and replay the sound via DAC
- Play an example audio file(file format: 8bit/8khz/single channel)
- Loop back to step 3
- Hardware connection:
ESP32 Microphone + amplifier amplifier + speaker GPIO36(ADC1CH0 input) data output pin GPIO25(DAC1 output) right channel speaker input GPIO26(DAC2 output) left channel speaker input
-
How to generate audio files:
- tools/generate_audio_file.py is an example of generate audio table from .wav files.
- In this example, the wav file must be in 16k/16bit mono format.
- generate_audio_file.py will bundle the wav files into a single table named audio_example_file.h
- Since the ADC can only play 8-bit data, the script will scale each 16-bit value to a 8-bit value.
- Since the ADC can only output positive value, the script will turn a signed value into an unsigned value.
- Note:
- DAC can only play 8-bit data, so the wav file data are scaled to 8-bit data.
- I2S DMA can only output 16-bit/32-bit data to DAC, DAC will only take the highest 8-bit data and output accordingly.
- Before I2S DMA can output data stream to DAC, the data format should be converted to 16-bit or 32-bit by padding zeros.