quasar_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.

Typedefs

typedef enum quasar_sai_mono_stereo quasar_sai_mono_stereo_t

The SAI mono/stereo modes.

typedef enum quasar_sai_bit_depth quasar_sai_bit_depth_t

The supported SAI bit depth.

typedef enum quasar_sai_mode quasar_sai_mode_t

SAI modes.

typedef enum quasar_i2s_mux_select quasar_i2s_mux_select_t

I2S MUX selections.

typedef enum quasar_sai_frequency quasar_sai_frequency_t

The supported SAI audio frequencies.

typedef enum quasar_sai_protocol quasar_sai_protocol_t

The supported SAI audio protocols.

typedef struct quasar_sai_config quasar_sai_config_t

SAI global configuration structure.

Enums

enum quasar_sai_mono_stereo

The SAI mono/stereo modes.

Values:

enumerator QUASAR_SAI_MODE_MONO = 1

SAI is in mono mode.

enumerator QUASAR_SAI_MODE_STEREO = 2

SAI is in stereo mode.

enum quasar_sai_bit_depth

The supported SAI bit depth.

Values:

enumerator QUASAR_SAI_BIT_DEPTH_16BITS = SAI_PROTOCOL_DATASIZE_16BIT

16-bit audio depth.

enumerator QUASAR_SAI_BIT_DEPTH_16BITS_EXT = SAI_PROTOCOL_DATASIZE_16BITEXTENDED

16-bit extended audio depth.

enumerator QUASAR_SAI_BIT_DEPTH_24BITS = SAI_PROTOCOL_DATASIZE_24BIT

24-bit audio depth.

enumerator QUASAR_SAI_BIT_DEPTH_32BITS = SAI_PROTOCOL_DATASIZE_32BIT

32-bit audio depth.

enum quasar_sai_mode

SAI modes.

Values:

enumerator QUASAR_SAI_MASTER_MODE

SAI is master.

enumerator QUASAR_SAI_SLAVE_MODE

SAI is slave.

enumerator QUASAR_SAI_SLAVE_MODE_MCLK

SAI is slave and the SAI clock is output on the MCLK to drive an external peripheral.

enum quasar_i2s_mux_select

I2S MUX selections.

Values:

enumerator QUASAR_SELECT_ON_BOARD_CODEC

On-board codec selection.

enumerator QUASAR_SELECT_EXT_CODEC

External codec selection.

enum quasar_sai_frequency

The supported SAI audio frequencies.

Values:

enumerator QUASAR_SAI_AUDIO_FREQUENCY_96K = SAI_AUDIO_FREQUENCY_96K

96 kHz audio frequency.

enumerator QUASAR_SAI_AUDIO_FREQUENCY_48K = SAI_AUDIO_FREQUENCY_48K

48 kHz audio frequency.

enumerator QUASAR_SAI_AUDIO_FREQUENCY_32K = SAI_AUDIO_FREQUENCY_32K

32 kHz audio frequency.

enumerator QUASAR_SAI_AUDIO_FREQUENCY_16K = SAI_AUDIO_FREQUENCY_16K

16 kHz audio frequency.

enumerator QUASAR_SAI_AUDIO_FREQUENCY_8K = SAI_AUDIO_FREQUENCY_8K

8 kHz audio frequency.

enumerator QUASAR_SAI_AUDIO_FREQUENCY_MCKDIV = SAI_AUDIO_FREQUENCY_MCKDIV

Use the master clock divider to set audio frequency.

enum quasar_sai_protocol

The supported SAI audio protocols.

Values:

enumerator QUASAR_SAI_PROTOCOL_I2S_STANDARD = SAI_I2S_STANDARD

I2S standard protocol.

enumerator QUASAR_SAI_PROTOCOL_I2S_MSBJUSTIFIED = SAI_I2S_MSBJUSTIFIED

I2S MSB justified protocol.

enumerator QUASAR_SAI_PROTOCOL_I2S_LSBJUSTIFIED = SAI_I2S_LSBJUSTIFIED

I2S LSB justified protocol.

Functions

void quasar_audio_init_sai(quasar_sai_config_t sai_config, quasar_bsp_status_t *err)

Configure the Audio’s SAI peripheral and initialize it.

Note

This function configures and initializes multiple peripherals sequentially.

  1. Enable SAI clocks.

  2. Initialize SAI GPIOs.

  3. Configure SAI mono stereo mode.

  4. Initialize SAI block configuration.

  5. Initialize SAI DMA NVIC.

  6. Initialize SAI DMA peripherals.

Parameters:
  • sai_config[in] SAI global configuration structure.

  • err[out] Pointer to store error status.

void quasar_audio_deinit_sai(quasar_bsp_status_t *err)

Deinitialize the SAI peripheral used for audio.

Parameters:

err[out] Pointer to store error status.

void quasar_audio_init_i2c(void)

Configure the CODEC I2C peripheral and initialize it.

Note

The following steps are performed.

  1. Enable I2C clock.

  2. Initialize I2C GPIOs.

  3. Initialize I2C peripheral.

void quasar_audio_deinit_i2c(void)

Deinitialize the CODEC I2C peripheral.

void quasar_audio_set_i2s_mux_selection(quasar_i2s_mux_select_t mux_select)

Set audio i2s mux selection.

Parameters:

mux_select[in] Mux selection.

void quasar_audio_i2c_write_byte_blocking(uint8_t dev_addr, uint8_t mem_addr, uint8_t data, quasar_bsp_status_t *err)

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.

  • err[out] Pointer to store error status.

void quasar_audio_i2c_read_byte_blocking(uint8_t dev_addr, uint8_t mem_addr, uint8_t *data, quasar_bsp_status_t *err)

Audio’s I2C read single byte blocking function.

Parameters:
  • dev_addr[in] Device address.

  • mem_addr[in] Target memory address.

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

  • err[out] Pointer to store error status.

void quasar_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 quasar_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 quasar_audio_set_sai_tx_dma_cplt_callback(void (*callback)(void))

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

Parameters:

callback[in] External interrupt callback function pointer.

void quasar_audio_set_sai_rx_dma_cplt_callback(void (*callback)(void))

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

Parameters:

callback[in] External interrupt callback function pointer.

void quasar_audio_sai_start_write_non_blocking(void)

Start SAI transmit with DMA peripheral.

void quasar_audio_sai_start_read_non_blocking(void)

Start SAI receive with DMA peripheral.

void quasar_audio_sai_stop_write_non_blocking(void)

Stop SAI writing with DMA peripheral.

void quasar_audio_sai_stop_read_non_blocking(void)

Stop SAI reading with DMA peripheral.

struct quasar_sai_config
#include <quasar_audio.h>

SAI global configuration structure.

Public Members

quasar_sai_mono_stereo_t rx_sai_mono_stereo

RX SAI mono/stereo mode.

quasar_sai_mono_stereo_t tx_sai_mono_stereo

TX SAI mono/stereo mode.

quasar_sai_bit_depth_t sai_bit_depth

SAI bit depth.

quasar_sai_mode_t sai_mode

SAI mode.

quasar_sai_frequency_t sai_audio_frequency

SAI audio frequency.

quasar_sai_protocol_t sai_protocol

SAI protocol.