DAC 音频
ESP32 拥有两个独立的 DAC 通道,并可直接使用 I2S 通过 DMA 播放音频。这里在 ESP-IDF 的基础上简化了 API,并对数据进行了重新编码以支持更多类型的采样位宽。
API 参考
Header File
Functions
-
esp_err_t dac_audio_init(dac_audio_config_t *cfg)
initialize i2s built-in dac to play audio with
- Attention
only support ESP32, because i2s of ESP32S2 not have a built-in dac
- 参数
cfg – configurations - see dac_audio_config_t struct
- 返回
ESP_OK Success
ESP_FAIL Encounter error
ESP_ERR_INVALID_ARG Parameter error
ESP_ERR_NO_MEM Out of memory
-
esp_err_t dac_audio_deinit(void)
deinitialize dac
- 返回
ESP_OK Success
ESP_FAIL Encounter error
-
esp_err_t dac_audio_start(void)
Start dac to play.
- 返回
ESP_OK Success
ESP_FAIL Encounter error
-
esp_err_t dac_audio_stop(void)
Stop play.
- 返回
ESP_OK Success
ESP_FAIL Encounter error
-
esp_err_t dac_audio_set_param(int rate, int bits, int ch)
Configuration dac parameter.
- 参数
rate – sample rate (ex: 8000, 44100…)
bits – bit width
ch – channel number
- 返回
ESP_OK Success
ESP_FAIL Encounter error
ESP_ERR_INVALID_ARG Parameter error
-
esp_err_t dac_audio_set_volume(int8_t volume)
Set volume.
- Attention
Using volume greater than 0 may cause variable overflow and distortion Usually you should enter a volume less than or equal to 0
- 参数
volume – Volume to set (-16 ~ 16), see Macro VOLUME_0DB Set to 0 for original output; Set to less then 0 for attenuation, and -16 is mute; Set to more than 0 for enlarge, and 16 is double output
- 返回
ESP_OK Success
ESP_ERR_INVALID_ARG Parameter error
-
esp_err_t dac_audio_write(uint8_t *inbuf, size_t len, size_t *bytes_written, TickType_t ticks_to_wait)
Write data to play.
- 参数
inbuf – Pointer source data to write
len – length of data in bytes
bytes_written – [out] Number of bytes written, if timeout, the result will be less than the size passed in.
ticks_to_wait – TX buffer wait timeout in RTOS ticks. If this many ticks pass without space becoming available in the DMA transmit buffer, then the function will return (note that if the data is written to the DMA buffer in pieces, the overall operation may still take longer than this timeout.) Pass portMAX_DELAY for no timeout.
- 返回
ESP_OK Success
ESP_FAIL Write encounter error
ESP_ERR_INVALID_ARG Parameter error
Structures
-
struct dac_audio_config_t
Configuration parameters for dac_audio_init function.
Public Members
-
i2s_port_t i2s_num
I2S_NUM_0, I2S_NUM_1
-
int sample_rate
I2S sample rate
-
i2s_bits_per_sample_t bits_per_sample
I2S bits per sample
-
i2s_dac_mode_t dac_mode
DAC mode configurations - see i2s_dac_mode_t
-
int dma_buf_count
DMA buffer count, number of buffer
-
int dma_buf_len
DMA buffer length, length of each buffer
-
uint32_t max_data_size
one time max write data size
-
i2s_port_t i2s_num