I2S configuration structure. More...
#include <i2s.h>
Data Fields | |
| i2s_data_format_en | data_format |
| i2s_clock_mode_en | clock_mode |
| i2s_word_size_en | word_size |
| uint8_t | channels |
| uint32_t | sample_rate |
| i2s_clock_mode_t | clock_config |
| bool | mclk_present |
| bool | mclk_required |
| uint16_t | mclk_ratio |
| size_t | block_size |
| uint8_t | num_blocks |
| bool | enable_dma |
I2S configuration structure.
This structure contains complete configuration parameters for an I2S channel. All fields must be properly initialized before passing to i2s_configure.
Multi-buffer Queue Mode (Driver-managed):
Contiguous Buffer Mode (Application-managed):
| i2s_data_format_en i2s_config_t::data_format |
Data format (I2S, Left/Right Justified, TDM)
| i2s_clock_mode_en i2s_config_t::clock_mode |
Clock mode (Master or Slave)
| i2s_word_size_en i2s_config_t::word_size |
Number of bits per word (sample)
| uint8_t i2s_config_t::channels |
Number of channels (1=mono, 2=stereo, >2=TDM)
| uint32_t i2s_config_t::sample_rate |
Sample rate in Hz (e.g., 8000, 16000, 48000)
| i2s_clock_mode_t i2s_config_t::clock_config |
Clock-specific configuration (gating, polarity)
| bool i2s_config_t::mclk_present |
true if MCLK (master clock) output is available
| bool i2s_config_t::mclk_required |
true if external device requires MCLK (ignored if not present)
| uint16_t i2s_config_t::mclk_ratio |
MCLK to sample rate ratio (e.g., 256, 384, 512). Set 0 for auto or unused.
| size_t i2s_config_t::block_size |
Block/buffer size for DMA transfers (in bytes)
| uint8_t i2s_config_t::num_blocks |
Number of blocks to allocate (0=app-managed)
| bool i2s_config_t::enable_dma |
Enable DMA-backed transfers (false=interrupt-driven)