HPM SDK
HPMicro Software Development Kit
hpm_i2s_drv.c File Reference
#include "hpm_i2s_drv.h"

Macros

#define HPM_I2S_DRV_DEFAULT_RETRY_COUNT   5000U
 
#define HPM_I2S_BCLK_TOLERANCE   (4U)
 
#define HPM_I2S_SLOT_MASK   I2S_TXDSLOT_EN_MASK /* TX/RX has same SLOT MASK */
 

Functions

static bool i2s_audio_depth_is_valid (uint8_t bits)
 
static bool i2s_channel_length_is_valid (uint8_t bits)
 
hpm_stat_t i2s_fill_tx_dummy_data (I2S_Type *ptr, i2s_line_num_t data_line, uint8_t data_count)
 I2S fill dummy data into TX fifo. More...
 
void i2s_reset_all (I2S_Type *ptr)
 I2S reset tx/rx and clock generator module. More...
 
void i2s_get_default_config (I2S_Type *ptr, i2s_config_t *config)
 I2S get default config. More...
 
void i2s_init (I2S_Type *ptr, i2s_config_t *config)
 I2S initialization. More...
 
static void i2s_config_cfgr (I2S_Type *ptr, uint32_t bclk_div, i2s_transfer_config_t *config)
 
static void i2s_config_cfgr_slave (I2S_Type *ptr, i2s_transfer_config_t *config)
 
static bool i2s_calculate_bclk_divider (uint32_t mclk_in_hz, uint32_t bclk_in_hz, uint32_t *div_out)
 
hpm_stat_t i2s_config_tx (I2S_Type *ptr, uint32_t mclk_in_hz, i2s_transfer_config_t *config)
 I2S config tx. More...
 
hpm_stat_t i2s_config_tx_slave (I2S_Type *ptr, i2s_transfer_config_t *config)
 I2S config tx for slave. More...
 
hpm_stat_t i2s_config_rx (I2S_Type *ptr, uint32_t mclk_in_hz, i2s_transfer_config_t *config)
 I2S config rx. More...
 
hpm_stat_t i2s_config_rx_slave (I2S_Type *ptr, i2s_transfer_config_t *config)
 I2S config rx for slave. More...
 
hpm_stat_t i2s_config_transfer (I2S_Type *ptr, uint32_t mclk_in_hz, i2s_transfer_config_t *config)
 I2S config transfer. More...
 
hpm_stat_t i2s_config_transfer_slave (I2S_Type *ptr, i2s_transfer_config_t *config)
 I2S config transfer for slave. More...
 
hpm_stat_t i2s_config_multiline_transfer (I2S_Type *ptr, uint32_t mclk_in_hz, i2s_multiline_transfer_config_t *config)
 I2S config multiline transfer. More...
 
uint32_t i2s_send_buff (I2S_Type *ptr, i2s_line_num_t tx_line_index, uint8_t samplebits, uint8_t *src, uint32_t size)
 I2S send data in buff. More...
 
uint32_t i2s_receive_buff (I2S_Type *ptr, i2s_line_num_t rx_line_index, uint8_t samplebits, uint8_t *dst, uint32_t size)
 I2S receive data in buff. More...
 
void i2s_get_default_transfer_config_for_pdm (i2s_transfer_config_t *transfer)
 I2S get default transfer config for pdm. More...
 
void i2s_get_default_transfer_config_for_dao (i2s_transfer_config_t *transfer)
 I2S get default transfer config for dao. More...
 
void i2s_get_default_transfer_config (i2s_transfer_config_t *transfer)
 I2S get default transfer config. More...
 
void i2s_get_default_multiline_transfer_config (i2s_multiline_transfer_config_t *transfer)
 I2S get default multiline transfer config. More...
 

Macro Definition Documentation

◆ HPM_I2S_BCLK_TOLERANCE

#define HPM_I2S_BCLK_TOLERANCE   (4U)

◆ HPM_I2S_DRV_DEFAULT_RETRY_COUNT

#define HPM_I2S_DRV_DEFAULT_RETRY_COUNT   5000U

◆ HPM_I2S_SLOT_MASK

#define HPM_I2S_SLOT_MASK   I2S_TXDSLOT_EN_MASK /* TX/RX has same SLOT MASK */

Function Documentation

◆ i2s_audio_depth_is_valid()

static bool i2s_audio_depth_is_valid ( uint8_t  bits)
static

◆ i2s_calculate_bclk_divider()

static bool i2s_calculate_bclk_divider ( uint32_t  mclk_in_hz,
uint32_t  bclk_in_hz,
uint32_t *  div_out 
)
static

◆ i2s_channel_length_is_valid()

static bool i2s_channel_length_is_valid ( uint8_t  bits)
static

◆ i2s_config_cfgr()

static void i2s_config_cfgr ( I2S_Type ptr,
uint32_t  bclk_div,
i2s_transfer_config_t config 
)
static

◆ i2s_config_cfgr_slave()

static void i2s_config_cfgr_slave ( I2S_Type ptr,
i2s_transfer_config_t config 
)
static