mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 06:11:06 +00:00 
			
		
		
		
	example: Remove duplicate commands and invalid serial port information Closes IDFGH-3022 See merge request espressif/esp-idf!8295
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Supported Targets | ESP32 |
 | 
						|
| ----------------- | ----- |
 | 
						|
 | 
						|
# I2S Built-in ADC/DAC Example
 | 
						|
 | 
						|
(See the README.md file in the upper level 'examples' directory for more information about examples.)
 | 
						|
 | 
						|
In this example, we configure I2S to work in I2S_ADC and I2S_DAC modes and then:
 | 
						|
* recording sound from ADC,
 | 
						|
* playing the recorded sound,
 | 
						|
* playing an audio file in flash via DAC.
 | 
						|
 | 
						|
#### Note:
 | 
						|
The `tools` directory contains `generate_audio_file.py` script for generating audio files:
 | 
						|
 | 
						|
    * The script provides an example of generating audio tables from `.wav` files.
 | 
						|
    * In this example, the `wav` file must be in 16k/16bit mono format.
 | 
						|
    * The script 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.
 | 
						|
    * The script will covert all signed values into unsigned values because only positive values will be output by the ADC.
 | 
						|
 | 
						|
## How to Use Example
 | 
						|
 | 
						|
### Hardware Required
 | 
						|
 | 
						|
* A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.)
 | 
						|
* A USB cable for power supply and programming
 | 
						|
* A microphone (with amplifier) and one or two speaker(s) for testing.
 | 
						|
 | 
						|
The following is the hardware connection:
 | 
						|
 | 
						|
|hardware|module|GPIO|
 | 
						|
|:---:|:---:|:---:|
 | 
						|
|Microphone|ADC1_CH0|GPIO36|
 | 
						|
|speaker(R)|DAC1|GPIO25|
 | 
						|
|speaker(L)|DAC2|GPIO26|
 | 
						|
 | 
						|
### Configure the Project
 | 
						|
 | 
						|
```
 | 
						|
idf.py menuconfig
 | 
						|
```
 | 
						|
 | 
						|
* Set the flash size to 4 MB under Serial Flasher Options.
 | 
						|
* Select "Custom partition table CSV" and rename "Custom partition CSV file" to "partitions_adc_dac_example.csv".
 | 
						|
 | 
						|
(Note that you can use `sdkconfig.defaults`)
 | 
						|
 | 
						|
### Build and Flash
 | 
						|
 | 
						|
Build the project and flash it to the board, then run monitor tool to view serial output:
 | 
						|
 | 
						|
```
 | 
						|
idf.py -p PORT flash monitor
 | 
						|
```
 | 
						|
 | 
						|
(To exit the serial monitor, type ``Ctrl-]``.)
 | 
						|
 | 
						|
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
 | 
						|
 | 
						|
## Example Output
 | 
						|
 | 
						|
Reset your development board. The application it will first record the sound through the microphone. Then it will play the recorded sound, and finally a piece of audio stored in the flash. The following is the output log:
 | 
						|
 | 
						|
```
 | 
						|
partiton addr: 0x00110000; size: 2097152; label: storage
 | 
						|
Erasing flash
 | 
						|
partiton addr: 0x00110000; size: 2097152; label: storage
 | 
						|
Erase size: 323584 Bytes
 | 
						|
I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21
 | 
						|
Sound recording 5%
 | 
						|
Sound recording 10%
 | 
						|
...
 | 
						|
Sound recording 97%
 | 
						|
Sound recording 102% 
 | 
						|
playing: 0 %
 | 
						|
playing: 1 %
 | 
						|
playing: 2 %
 | 
						|
...
 | 
						|
playing: 96 %
 | 
						|
playing: 97 %
 | 
						|
playing: 98 %
 | 
						|
Playing file example:
 | 
						|
I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21
 | 
						|
```
 | 
						|
 | 
						|
## Troubleshooting
 | 
						|
 | 
						|
* Program upload failure
 | 
						|
 | 
						|
    * Hardware connection is not correct: run `idf.py -p PORT monitor`, and reboot your board to see if there are any output logs.
 | 
						|
    * The baud rate for downloading is too high: lower your baud rate in the `menuconfig` menu, and try again.
 | 
						|
 | 
						|
For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon.
 |