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.
-
enumerator QUASAR_SAI_MODE_MONO = 1
-
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.
-
enumerator QUASAR_SAI_BIT_DEPTH_16BITS = SAI_PROTOCOL_DATASIZE_16BIT
-
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.
-
enumerator QUASAR_SAI_MASTER_MODE
-
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.
-
enumerator QUASAR_SELECT_ON_BOARD_CODEC
-
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.
-
enumerator QUASAR_SAI_AUDIO_FREQUENCY_96K = SAI_AUDIO_FREQUENCY_96K
-
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.
-
enumerator QUASAR_SAI_PROTOCOL_I2S_STANDARD = SAI_I2S_STANDARD
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.
Enable SAI clocks.
Initialize SAI GPIOs.
Configure SAI mono stereo mode.
Initialize SAI block configuration.
Initialize SAI DMA NVIC.
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.
Enable I2C clock.
Initialize I2C GPIOs.
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.
-
quasar_sai_mono_stereo_t rx_sai_mono_stereo