quasar_audio.h

Initialize audio related peripherals.

Copyright

Copyright (C) 2025 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
enumerator QUASAR_SAI_MODE_STEREO = 2
enum quasar_sai_bit_depth

The supported SAI bit depth.

Values:

enumerator QUASAR_SAI_BIT_DEPTH_16BITS = SAI_PROTOCOL_DATASIZE_16BIT
enumerator QUASAR_SAI_BIT_DEPTH_16BITS_EXT = SAI_PROTOCOL_DATASIZE_16BITEXTENDED
enumerator QUASAR_SAI_BIT_DEPTH_24BITS = SAI_PROTOCOL_DATASIZE_24BIT
enumerator QUASAR_SAI_BIT_DEPTH_32BITS = SAI_PROTOCOL_DATASIZE_32BIT
enum quasar_sai_mode

SAI modes.

Values:

enumerator QUASAR_SAI_MASTER_MODE
enumerator QUASAR_SAI_SLAVE_MODE
enumerator QUASAR_SAI_SLAVE_MODE_MCLK
enum quasar_i2s_mux_select

I2S MUX selections.

Values:

enumerator QUASAR_SELECT_ON_BOARD_CODEC
enumerator QUASAR_SELECT_EXT_CODEC
enum quasar_sai_frequency

The supported SAI audio frequencies.

Values:

enumerator QUASAR_SAI_AUDIO_FREQUENCY_96K = SAI_AUDIO_FREQUENCY_96K
enumerator QUASAR_SAI_AUDIO_FREQUENCY_48K = SAI_AUDIO_FREQUENCY_48K
enumerator QUASAR_SAI_AUDIO_FREQUENCY_32K = SAI_AUDIO_FREQUENCY_32K
enumerator QUASAR_SAI_AUDIO_FREQUENCY_16K = SAI_AUDIO_FREQUENCY_16K
enumerator QUASAR_SAI_AUDIO_FREQUENCY_8K = SAI_AUDIO_FREQUENCY_8K
enumerator QUASAR_SAI_AUDIO_FREQUENCY_MCKDIV = SAI_AUDIO_FREQUENCY_MCKDIV
enum quasar_sai_protocol

The supported SAI audio protocols.

Values:

enumerator QUASAR_SAI_PROTOCOL_I2S_STANDARD = SAI_I2S_STANDARD
enumerator QUASAR_SAI_PROTOCOL_I2S_MSBJUSTIFIED = SAI_I2S_MSBJUSTIFIED
enumerator QUASAR_SAI_PROTOCOL_I2S_LSBJUSTIFIED = SAI_I2S_LSBJUSTIFIED

Functions

void quasar_audio_init_sai(quasar_sai_config_t sai_config)

Configure the Audio’s SAI peripheral and initialize it.

This function configures and initialized 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.

void quasar_audio_deinit_sai(void)

Deinitialize the SAI peripheral used for audio.

void quasar_audio_init_i2c(void)

Configure the CODEC I2C peripheral and initialize it.

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)

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 quasar_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 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
quasar_sai_mono_stereo_t tx_sai_mono_stereo
quasar_sai_bit_depth_t sai_bit_depth
quasar_sai_mode_t sai_mode
quasar_sai_frequency_t sai_audio_frequency
quasar_sai_protocol_t sai_protocol