Interface configuration options.
Memory slab pointed to by the mem_slab field has to be defined and initialized by the user. For I2S driver to function correctly number of memory blocks in a slab has to be at least 2 per queue. Size of the memory block should be multiple of frame_size where frame_size = (channels * word_size_bytes). As an example 16 bit word will occupy 2 bytes, 24 or 32 bit word will occupy 4 bytes.
Please check Zephyr Kernel Primer for more information on memory slabs.
- Parameters
-
word_size | Number of bits representing one data word. |
channels | Number of words per frame. |
format | Data stream format as defined by I2S_FMT_* constants. |
options | Configuration options as defined by I2S_OPT_* constants. |
frame_clk_freq | Frame clock (WS) frequency, this is sampling rate. |
mem_slab | memory slab to store RX/TX data. |
block_size | Size of one RX/TX memory block (buffer) in bytes. |
timeout | Read/Write timeout. Number of milliseconds to wait in case TX queue is full or RX queue is empty, or 0, or SYS_FOREVER_MS. |