quasar_audio.h

Initialize audio related peripherals.

Copyright

Copyright (C) 2023 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

QUASAR_SAI_NB_OF_SLOTS 2

Typedefs

typedef enum quasar_sai_mono_stereo quasar_sai_mono_stereo_t

SAI blocks mono/stereo mode enum.

typedef enum quasar_sai_bit_depth quasar_sai_bit_depth_t

SAI bit depth enum.

typedef struct quasar_sai_config quasar_sai_config_t

SAI global configuration structure.

typedef void (*irq_callback)(void)

IRQ function pointer callback type.

Enums

enum quasar_sai_mono_stereo

SAI blocks mono/stereo mode enum.

Values:

enumerator QUASAR_SAI_MODE_MONO = 1
enumerator QUASAR_SAI_MODE_STEREO = 2
enum quasar_sai_bit_depth

SAI bit depth enum.

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

Functions

void quasar_audio_init(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(void)

Deinitialize the Audio’s peripheral.

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_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(irq_callback callback)

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(irq_callback callback)

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