PebbleOS
Loading...
Searching...
No Matches
Data Structures | Macros | Functions
SF32LB52 audio

Audio playback implementation for the SF32LB52 audio codec (AUDCODEC) DAC. More...

Data Structures

struct  AudioDevice
 DA7212 audio device. More...
 

Macros

#define CFG_AUDIO_PLAYBACK_PIPE_SIZE   (1024)
 Size, in bytes, of each half of the DAC DMA buffer.
 
#define CIRCULAR_BUF_SIZE_MS   (128)
 Length of the queue between audio_write() and DMA, in milliseconds.
 
#define CIRCULAR_BUF_SIZE_SAMPLES   ((AUDIO_PLAYBACK_SAMPLE_RATE * CIRCULAR_BUF_SIZE_MS) / 1000)
 Length of the queue between audio_write() and DMA, in samples.
 
#define CIRCULAR_BUF_SIZE_BYTES   (CIRCULAR_BUF_SIZE_SAMPLES * sizeof(int16_t))
 Size of the queue between audio_write() and DMA, in bytes.
 

Functions

void audec_dac0_dma_irq_handler (AudioDevice *audio_device)
 AUDCODEC DAC DMA interrupt handler.
 
bool audec_init (AudioDevice *audio_device)
 Initialize the AUDCODEC DAC path.
 
void audec_start (AudioDevice *audio_device, AudioTransCB cb)
 Start DAC playback, backing audio_start().
 
uint32_t audec_write (AudioDevice *audio_device, void *writeBuf, uint32_t size)
 Queue PCM data, backing audio_write().
 
void audec_set_vol (AudioDevice *audio_device, int volume)
 Set the DAC volume, backing audio_set_volume().
 
void audec_stop (AudioDevice *audio_device)
 Stop DAC playback, backing audio_stop().
 

Detailed Description

Audio playback implementation for the SF32LB52 audio codec (AUDCODEC) DAC.


Data Structure Documentation

◆ AudioDevice

struct AudioDevice

DA7212 audio device.

SF32LB52 audio device.

QEMU audio device.

Data Fields
DMA_Channel_TypeDef * audec_dma_channel AUDCODEC DAC DMA channel.
IRQn_Type audec_dma_irq AUDCODEC DAC DMA interrupt.
uint32_t audec_dma_request AUDCODEC DAC DMA request.
DMA_Channel_TypeDef * audprc_dma_channel AUDPRC DMA channel; not used by the driver.
IRQn_Type audprc_dma_irq AUDPRC DMA interrupt; not used by the driver.
uint32_t audprc_dma_request AUDPRC DMA request; not used by the driver.
uint32_t base_addr Base address of the device registers.
uint32_t channels Number of channels.
I2CSlavePort * codec Codec control port.
uint8_t data_format Sample width in bits; not used by the driver.
uint8_t data_mode Data mode; not used by the driver.
nrfx_i2s_t i2s_instance I2S instance.
uint8_t irq_priority I2S interrupt priority.
uint32_t irq_priority DAC DMA interrupt priority.
int irqn Device interrupt number.
uint32_t lrck_pin I2S LRCK pin, to the codec WCLK.
uint32_t mck_pin I2S MCK pin, to the codec MCLK.
OutputConfig pa_ctrl Power amplifier enable output.
const BoardPowerOps * power_ops Board power hooks, or NULL.
uint32_t samplerate Sample rate in Hz.
uint32_t sck_pin I2S SCK pin, to the codec BCLK.
uint32_t sdin_pin I2S SDIN pin, or NRF_I2S_PIN_NOT_CONNECTED.
uint32_t sdout_pin I2S SDOUT pin, to the codec DATA_IN.
AudioDeviceState * state Driver runtime state.

Macro Definition Documentation

◆ CFG_AUDIO_PLAYBACK_PIPE_SIZE

#define CFG_AUDIO_PLAYBACK_PIPE_SIZE   (1024)

Size, in bytes, of each half of the DAC DMA buffer.

◆ CIRCULAR_BUF_SIZE_BYTES

#define CIRCULAR_BUF_SIZE_BYTES   (CIRCULAR_BUF_SIZE_SAMPLES * sizeof(int16_t))

Size of the queue between audio_write() and DMA, in bytes.

◆ CIRCULAR_BUF_SIZE_MS

#define CIRCULAR_BUF_SIZE_MS   (128)

Length of the queue between audio_write() and DMA, in milliseconds.

◆ CIRCULAR_BUF_SIZE_SAMPLES

#define CIRCULAR_BUF_SIZE_SAMPLES   ((AUDIO_PLAYBACK_SAMPLE_RATE * CIRCULAR_BUF_SIZE_MS) / 1000)

Length of the queue between audio_write() and DMA, in samples.

Function Documentation

◆ audec_dac0_dma_irq_handler()

void audec_dac0_dma_irq_handler ( AudioDevice *  audio_device)
extern

AUDCODEC DAC DMA interrupt handler.

Parameters
audio_deviceAudio device.

◆ audec_init()

bool audec_init ( AudioDevice *  audio_device)
extern

Initialize the AUDCODEC DAC path.

Parameters
audio_deviceAudio device.
Returns
True on success.

◆ audec_set_vol()

void audec_set_vol ( AudioDevice *  audio_device,
int  volume 
)
extern

Set the DAC volume, backing audio_set_volume().

Parameters
audio_deviceAudio device.
volumeVolume from 0 to 100, clamped.

◆ audec_start()

void audec_start ( AudioDevice *  audio_device,
AudioTransCB  cb 
)
extern

Start DAC playback, backing audio_start().

Parameters
audio_deviceAudio device.
cbCalled on the system task whenever the device wants more data.

◆ audec_stop()

void audec_stop ( AudioDevice *  audio_device)
extern

Stop DAC playback, backing audio_stop().

Parameters
audio_deviceAudio device.

◆ audec_write()

uint32_t audec_write ( AudioDevice *  audio_device,
void *  writeBuf,
uint32_t  size 
)
extern

Queue PCM data, backing audio_write().

Parameters
audio_deviceAudio device.
writeBuf16-bit PCM samples.
sizeSize of writeBuf in bytes; data that does not fit is dropped.
Returns
Free queue space in bytes after the write, 0 if not started.