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
-
enumerator QUASAR_SAI_MODE_STEREO = 2
-
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
-
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
-
enumerator QUASAR_SAI_BIT_DEPTH_16BITS = SAI_PROTOCOL_DATASIZE_16BIT
-
enum quasar_sai_mode
SAI modes.
Values:
-
enumerator QUASAR_SAI_MASTER_MODE
-
enumerator QUASAR_SAI_SLAVE_MODE
-
enumerator QUASAR_SAI_SLAVE_MODE_MCLK
-
enumerator QUASAR_SAI_MASTER_MODE
-
enum quasar_i2s_mux_select
I2S MUX selections.
Values:
-
enumerator QUASAR_SELECT_ON_BOARD_CODEC
-
enumerator QUASAR_SELECT_EXT_CODEC
-
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
-
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
-
enumerator QUASAR_SAI_AUDIO_FREQUENCY_96K = SAI_AUDIO_FREQUENCY_96K
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.
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.
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.
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
-
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
-
quasar_sai_mono_stereo_t rx_sai_mono_stereo