evk_audio.h

Initialize audio related peripherals.

Copyright

Copyright (C) 2026 SPARK Microsystems International Inc. All rights reserved.

License

This source code is proprietary and subject to the SPARK Microsystems Software EULA found in this package in file EULA.txt.

Author

SPARK FW Team.

Defines

EVK_SAI_NB_OF_SLOTS 2

Typedefs

typedef enum evk_sai_mono_stereo evk_sai_mono_stereo_t

SAI blocks mono/stereo mode enum.

typedef enum evk_sai_bit_depth evk_sai_bit_depth_t

SAI bit depth enum.

typedef struct evk_sai_config evk_sai_config_t

SAI global configuration structure.

typedef void (*irq_callback)(void)

IRQ function pointer callback type.

Enums

enum evk_sai_mono_stereo

SAI blocks mono/stereo mode enum.

Values:

enumerator EVK_SAI_MODE_MONO = 1

SAI block mono mode.

enumerator EVK_SAI_MODE_STEREO = 2

SAI block stereo mode.

enum evk_sai_bit_depth

SAI bit depth enum.

Values:

enumerator EVK_SAI_BIT_DEPTH_16BITS = SAI_PROTOCOL_DATASIZE_16BIT

SAI bit depth 16 bits.

enumerator EVK_SAI_BIT_DEPTH_16BITS_EXT = SAI_PROTOCOL_DATASIZE_16BITEXTENDED

SAI bit depth 16 bits extended.

enumerator EVK_SAI_BIT_DEPTH_24BITS = SAI_PROTOCOL_DATASIZE_24BIT

SAI bit depth 24 bits.

enumerator EVK_SAI_BIT_DEPTH_32BITS = SAI_PROTOCOL_DATASIZE_32BIT

SAI bit depth 32 bits.

Functions

void evk_audio_i2c_write_byte_blocking(uint8_t dev_addr, uint8_t mem_addr, uint8_t data)

Audio’s I2C write single byte blocking function.

Parameters:
  • dev_addr[in] Device address.

  • mem_addr[in] Target memory address.

  • data[in] 1 Byte size data to be send.

void evk_audio_i2c_read_byte_blocking(uint8_t dev_addr, uint8_t mem_addr, uint8_t *data)

Audio’s I2C read single byte blocking function.

Parameters:
  • dev_addr[in] Device address.

  • mem_addr[in] Target memory address.

  • data[in] 1 Byte size data to be read.

void evk_audio_sai_configuration(evk_sai_config_t *sai_config)

Configure the Audio’s SAI peripheral and initialize it.

Note

This function configures and initializes multiple peripherals sequentially.

Note

1. Enable SAI clocks.

  1. Initialize SAI GPIOs.

  2. Configure SAI mono stereo mode.

  3. Initialize SAI block configuration.

  4. Initialize SAI DMA NVIC.

  5. Initialize SAI DMA peripherals.

  6. Enable I2C clock.

  7. Initialize I2C GPIOS.

  8. Initialize I2C peripheral.

Parameters:

sai_config[in] SAI global configuration structure.

void evk_audio_sai_deinit(void)

Deinitialize the SAI peripheral.

void evk_audio_sai_write_non_blocking(uint8_t *data, uint16_t size)

Write data on the SAI in non-blocking mode with DMA.

Parameters:
  • data[in] Data buffer to write.

  • size[in] Size of the data to write.

void evk_audio_sai_read_non_blocking(uint8_t *data, uint16_t size)

Read data on the SAI in non-blocking mode with DMA.

Parameters:
  • data[in] Data buffer to write.

  • size[in] Size of the data to write.

void evk_audio_set_sai_tx_dma_cplt_callback(irq_callback callback)

This function sets the function callback for the audio SAI TX complete.

Parameters:

callback[in] External interrupt callback function pointer.

void evk_audio_set_sai_rx_dma_cplt_callback(irq_callback callback)

This function sets the function callback for the audio SAI RX complete.

Parameters:

callback[in] External interrupt callback function pointer.

void evk_audio_sai_start_write_non_blocking(void)

Start SAI transmit with DMA peripheral.

void evk_audio_sai_start_read_non_blocking(void)

Start SAI receive with DMA peripheral.

void evk_audio_sai_stop_write_non_blocking(void)

Stop SAI writing with DMA peripheral.

void evk_audio_sai_stop_read_non_blocking(void)

Stop SAI reading with DMA peripheral.

void evk_audio_i2c_init(void)

Initialize the I2C peripheral.

struct evk_sai_config
#include <evk_audio.h>

SAI global configuration structure.

Public Members

evk_sai_mono_stereo_t rx_sai_mono_stereo

SAI RX mono/stereo mode.

evk_sai_mono_stereo_t tx_sai_mono_stereo

SAI TX mono/stereo mode.

evk_sai_bit_depth_t sai_bit_depth

SAI bit depth.