HPM SDK
HPMicro Software Development Kit
I2S driver APIs

I2S driver APIs. More...

Data Structures

struct  i2s_config
 I2S config. More...
 
struct  i2s_transfer_config
 I2S transfer config. More...
 
struct  i2s_multiline_transfer_config
 I2S multiline transfer config. More...
 

Typedefs

typedef struct i2s_config i2s_config_t
 I2S config. More...
 
typedef struct i2s_transfer_config i2s_transfer_config_t
 I2S transfer config. More...
 
typedef struct i2s_multiline_transfer_config i2s_multiline_transfer_config_t
 I2S multiline transfer config. More...
 

Enumerations

enum  i2s_line_num_t {
  I2S_DATA_LINE_0 = 0 , I2S_DATA_LINE_1 , I2S_DATA_LINE_2 , I2S_DATA_LINE_3 ,
  I2S_DATA_LINE_MAX = I2S_DATA_LINE_3
}
 
enum  i2s_irq_mask_t { i2s_tx_fifo_threshold_irq_mask = I2S_CTRL_TXDNIE_MASK , i2s_rx_fifo_threshold_irq_mask = I2S_CTRL_RXDAIE_MASK , i2s_fifo_error_irq_mask = I2S_CTRL_ERRIE_MASK }
 
enum  i2s_data_line_stat_t { i2s_data_line_rx_fifo_avail = 1U , i2s_data_line_tx_fifo_avail = 2U , i2s_data_line_rx_fifo_overrun = 4U , i2s_data_line_tx_fifo_underrun = 8U }
 

Functions

static void i2s_enable_tdm (I2S_Type *ptr)
 enable TDM More...
 
static void i2s_disable_tdm (I2S_Type *ptr)
 disable TDM More...
 
static void i2s_update_rx_fifo_threshold (I2S_Type *ptr, uint8_t threshold)
 update rx fifo threshold More...
 
static void i2s_update_tx_fifo_threshold (I2S_Type *ptr, uint8_t threshold)
 update tx fifo threshold More...
 
static void i2s_ungate_bclk (I2S_Type *ptr)
 open BCLK More...
 
static void i2s_gate_bclk (I2S_Type *ptr)
 gete off BCLK More...
 
static void i2s_ungate_mclk (I2S_Type *ptr)
 open MCLK More...
 
static void i2s_gate_mclk (I2S_Type *ptr)
 gate off MCLK More...
 
static void i2s_enable_tx_dma_request (I2S_Type *ptr)
 enable TX dma request More...
 
static void i2s_disable_tx_dma_request (I2S_Type *ptr)
 disable TX dma request More...
 
static void i2s_enable_rx_dma_request (I2S_Type *ptr)
 enable RX dma request More...
 
static void i2s_disable_rx_dma_request (I2S_Type *ptr)
 disable RX dma request More...
 
static void i2s_enable_irq (I2S_Type *ptr, uint32_t mask)
 enable IRQ More...
 
static void i2s_disable_irq (I2S_Type *ptr, uint32_t mask)
 disable IRQ More...
 
static void i2s_enable (I2S_Type *ptr)
 I2S enable. More...
 
static void i2s_disable (I2S_Type *ptr)
 I2S disable. More...
 
static void i2s_start (I2S_Type *ptr)
 I2S start. More...
 
static void i2s_stop (I2S_Type *ptr)
 I2S stop. More...
 
static void i2s_enable_rx (I2S_Type *ptr, uint8_t rx_mask)
 I2S enable rx function. More...
 
static void i2s_disable_rx (I2S_Type *ptr, uint8_t rx_mask)
 I2S disable rx function. More...
 
static void i2s_enable_rx_line (I2S_Type *ptr, i2s_line_num_t line)
 I2S enable rx line function. More...
 
static void i2s_disable_rx_line (I2S_Type *ptr, i2s_line_num_t line)
 I2S disable rx line function. More...
 
static void i2s_enable_tx (I2S_Type *ptr, uint8_t tx_mask)
 I2S enable tx function. More...
 
static void i2s_disable_tx (I2S_Type *ptr, uint8_t tx_mask)
 I2S disbale tx function. More...
 
static void i2s_enable_tx_line (I2S_Type *ptr, i2s_line_num_t line)
 I2S enable tx function. More...
 
static void i2s_disable_tx_line (I2S_Type *ptr, i2s_line_num_t line)
 I2S disbale tx function. More...
 
static void i2s_set_txd_slot (I2S_Type *ptr, i2s_line_num_t line, uint32_t slot_mask)
 I2S set tx slot mask. More...
 
static void i2s_set_rxd_slot (I2S_Type *ptr, i2s_line_num_t line, uint32_t slot_mask)
 I2S set rx slot mask. More...
 
static void i2s_reset_clock_gen (I2S_Type *ptr)
 I2S reset clock generator. More...
 
static void i2s_reset_tx (I2S_Type *ptr)
 I2S reset tx function. More...
 
static void i2s_reset_rx (I2S_Type *ptr)
 I2S reset rx function. More...
 
static void i2s_reset_tx_rx (I2S_Type *ptr)
 I2S reset tx and rx function. More...
 
void i2s_reset_all (I2S_Type *ptr)
 I2S reset tx/rx and clock generator module. More...
 
static uint32_t i2s_get_tx_fifo_level (I2S_Type *ptr)
 I2S get tx fifo level. More...
 
static uint32_t i2s_get_tx_line_fifo_level (I2S_Type *ptr, i2s_line_num_t line)
 I2S get data line tx fifo level. More...
 
static uint32_t i2s_get_rx_fifo_level (I2S_Type *ptr)
 I2S get rx fifo level. More...
 
static uint32_t i2s_get_rx_line_fifo_level (I2S_Type *ptr, i2s_line_num_t line)
 I2S get data line rx fifo level. More...
 
static uint32_t i2s_check_data_line_status (I2S_Type *ptr, i2s_line_num_t line)
 Check I2S data line status. More...
 
static uint32_t i2s_get_irq_status (I2S_Type *ptr)
 I2S get IRQ status. More...
 
static void i2s_clear_irq_status (I2S_Type *ptr, uint32_t mask)
 I2S get IRQ status. More...
 
static void i2s_stop_transfer (I2S_Type *ptr)
 I2S stop transfer. More...
 
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...
 
static void i2s_send_data (I2S_Type *ptr, i2s_line_num_t tx_line_index, uint32_t data)
 I2S send data. More...
 
static void i2s_receive_data (I2S_Type *ptr, i2s_line_num_t rx_line_index, uint32_t *data)
 I2S receive data. 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_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...
 
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...
 
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...
 

Detailed Description

I2S driver APIs.

Typedef Documentation

◆ i2s_config_t

typedef struct i2s_config i2s_config_t

#include <drivers/inc/hpm_i2s_drv.h>

I2S config.

◆ i2s_multiline_transfer_config_t

#include <drivers/inc/hpm_i2s_drv.h>

I2S multiline transfer config.

◆ i2s_transfer_config_t

#include <drivers/inc/hpm_i2s_drv.h>

I2S transfer config.

Enumeration Type Documentation

◆ i2s_data_line_stat_t

#include <drivers/inc/hpm_i2s_drv.h>

Enumerator
i2s_data_line_rx_fifo_avail 
i2s_data_line_tx_fifo_avail 
i2s_data_line_rx_fifo_overrun 
i2s_data_line_tx_fifo_underrun 

◆ i2s_irq_mask_t

#include <drivers/inc/hpm_i2s_drv.h>

Enumerator
i2s_tx_fifo_threshold_irq_mask 
i2s_rx_fifo_threshold_irq_mask 
i2s_fifo_error_irq_mask 

◆ i2s_line_num_t

#include <drivers/inc/hpm_i2s_drv.h>

Enumerator
I2S_DATA_LINE_0 
I2S_DATA_LINE_1 
I2S_DATA_LINE_2 
I2S_DATA_LINE_3 
I2S_DATA_LINE_MAX 

Function Documentation

◆ i2s_check_data_line_status()

static uint32_t i2s_check_data_line_status ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

Check I2S data line status.

Parameters
[in]ptrI2S base address
[in]lineI2S data line, i2s_line_num_t
Return values
i2s_data_line_rx_fifo_availdata in rx fifo >= threshold
i2s_data_line_tx_fifo_availdata in tx fifo <= threshold
i2s_data_line_rx_fifo_overrunrx fifo overrun occured
i2s_data_line_tx_fifo_underruntx fifo underrun occured

◆ i2s_clear_irq_status()

static void i2s_clear_irq_status ( I2S_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get IRQ status.

Parameters
[in]ptrI2S base address
[in]maskI2S STA.TX_UD or STA.RX_OV mask bits

◆ i2s_config_multiline_transfer()

hpm_stat_t i2s_config_multiline_transfer ( I2S_Type ptr,
uint32_t  mclk_in_hz,
i2s_multiline_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config multiline transfer.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]mclk_in_hzmclk frequency in Hz
[in]configi2s_multiline_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_rx()

hpm_stat_t i2s_config_rx ( I2S_Type ptr,
uint32_t  mclk_in_hz,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config rx.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]mclk_in_hzmclk frequency in Hz
[in]configi2s_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_rx_slave()

hpm_stat_t i2s_config_rx_slave ( I2S_Type ptr,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config rx for slave.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]configi2s_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_transfer()

hpm_stat_t i2s_config_transfer ( I2S_Type ptr,
uint32_t  mclk_in_hz,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config transfer.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]mclk_in_hzmclk frequency in Hz
[in]configi2s_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_transfer_slave()

hpm_stat_t i2s_config_transfer_slave ( I2S_Type ptr,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config transfer for slave.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]configi2s_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_tx()

hpm_stat_t i2s_config_tx ( I2S_Type ptr,
uint32_t  mclk_in_hz,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config tx.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]mclk_in_hzmclk frequency in Hz
[in]configi2s_transfer_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ i2s_config_tx_slave()

hpm_stat_t i2s_config_tx_slave ( I2S_Type ptr,
i2s_transfer_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S config tx for slave.

Note
This API will disable I2S and configure parameters, could call i2s_enable() to enable I2S
Parameters
[in]ptrI2S base address
[in]configi2s_transfer_config_t

◆ i2s_disable()

static void i2s_disable ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S disable.

Note
dropped API, please use i2s_stop
Parameters
[in]ptrI2S base address

◆ i2s_disable_irq()

static void i2s_disable_irq ( I2S_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

disable IRQ

Parameters
[in]ptrI2S base address
[in]maskirq bit mask

◆ i2s_disable_rx()

static void i2s_disable_rx ( I2S_Type ptr,
uint8_t  rx_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S disable rx function.

Parameters
[in]ptrI2S base address
[in]rx_maskrx data line mask

◆ i2s_disable_rx_dma_request()

static void i2s_disable_rx_dma_request ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

disable RX dma request

Parameters
[in]ptrI2S base address

◆ i2s_disable_rx_line()

static void i2s_disable_rx_line ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S disable rx line function.

Parameters
[in]ptrI2S base address
[in]linerx data line, i2s_line_num_t

◆ i2s_disable_tdm()

static void i2s_disable_tdm ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

disable TDM

Parameters
[in]ptrI2S base address

◆ i2s_disable_tx()

static void i2s_disable_tx ( I2S_Type ptr,
uint8_t  tx_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S disbale tx function.

Parameters
[in]ptrI2S base address
[in]tx_masktx data line mask

◆ i2s_disable_tx_dma_request()

static void i2s_disable_tx_dma_request ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

disable TX dma request

Parameters
[in]ptrI2S base address

◆ i2s_disable_tx_line()

static void i2s_disable_tx_line ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S disbale tx function.

Parameters
[in]ptrI2S base address
[in]linetx data line, i2s_line_num_t

◆ i2s_enable()

static void i2s_enable ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S enable.

Note
dropped API, please use i2s_start
Parameters
[in]ptrI2S base address

◆ i2s_enable_irq()

static void i2s_enable_irq ( I2S_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

enable IRQ

Parameters
[in]ptrI2S base address
[in]maskirq bit mask

◆ i2s_enable_rx()

static void i2s_enable_rx ( I2S_Type ptr,
uint8_t  rx_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S enable rx function.

Parameters
[in]ptrI2S base address
[in]rx_maskrx data line mask

◆ i2s_enable_rx_dma_request()

static void i2s_enable_rx_dma_request ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

enable RX dma request

Parameters
[in]ptrI2S base address

◆ i2s_enable_rx_line()

static void i2s_enable_rx_line ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S enable rx line function.

Parameters
[in]ptrI2S base address
[in]linerx data line, i2s_line_num_t

◆ i2s_enable_tdm()

static void i2s_enable_tdm ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

enable TDM

Parameters
[in]ptrI2S base address

◆ i2s_enable_tx()

static void i2s_enable_tx ( I2S_Type ptr,
uint8_t  tx_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S enable tx function.

Parameters
[in]ptrI2S base address
[in]tx_masktx data line mask

◆ i2s_enable_tx_dma_request()

static void i2s_enable_tx_dma_request ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

enable TX dma request

Parameters
[in]ptrI2S base address

◆ i2s_enable_tx_line()

static void i2s_enable_tx_line ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S enable tx function.

Parameters
[in]ptrI2S base address
[in]linetx data line, i2s_line_num_t

◆ i2s_fill_tx_dummy_data()

hpm_stat_t i2s_fill_tx_dummy_data ( I2S_Type ptr,
i2s_line_num_t  data_line,
uint8_t  data_count 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S fill dummy data into TX fifo.

Note
workaround: fill dummy data into TX fifo to avoid TX underflow during tx start The first two data in FIFO will be pre read, which will cause the API to actually fill in 2 more dummy data than expected
Parameters
[in]ptrI2S base address
[in]data_linedata line, i2s_line_num_t
[in]data_countdummy data count, This value should be the same as the number of audio channels
Return values
status_successif no error occurred

◆ i2s_gate_bclk()

static void i2s_gate_bclk ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

gete off BCLK

Parameters
[in]ptrI2S base address

◆ i2s_gate_mclk()

static void i2s_gate_mclk ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

gate off MCLK

Parameters
[in]ptrI2S base address

◆ i2s_get_default_config()

void i2s_get_default_config ( I2S_Type ptr,
i2s_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S get default config.

Parameters
[in]ptrI2S base address
[out]configi2s_config_t

◆ i2s_get_default_multiline_transfer_config()

void i2s_get_default_multiline_transfer_config ( i2s_multiline_transfer_config_t transfer)

#include <drivers/inc/hpm_i2s_drv.h>

I2S get default multiline transfer config.

Parameters
[out]transferi2s_multiline_transfer_config_t

◆ i2s_get_default_transfer_config()

void i2s_get_default_transfer_config ( i2s_transfer_config_t transfer)

#include <drivers/inc/hpm_i2s_drv.h>

I2S get default transfer config.

Parameters
[out]transferi2s_transfer_config_t

◆ i2s_get_default_transfer_config_for_dao()

void i2s_get_default_transfer_config_for_dao ( i2s_transfer_config_t transfer)

#include <drivers/inc/hpm_i2s_drv.h>

I2S get default transfer config for dao.

Parameters
[out]transferi2s_transfer_config_t

◆ i2s_get_default_transfer_config_for_pdm()

void i2s_get_default_transfer_config_for_pdm ( i2s_transfer_config_t transfer)

#include <drivers/inc/hpm_i2s_drv.h>

I2S get default transfer config for pdm.

Parameters
[out]transferi2s_transfer_config_t

◆ i2s_get_irq_status()

static uint32_t i2s_get_irq_status ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get IRQ status.

Parameters
[in]ptrI2S base address
Return values
I2SSTA register value

◆ i2s_get_rx_fifo_level()

static uint32_t i2s_get_rx_fifo_level ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get rx fifo level.

Parameters
[in]ptrI2S base address
Return values
I2Srx fifo level

◆ i2s_get_rx_line_fifo_level()

static uint32_t i2s_get_rx_line_fifo_level ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get data line rx fifo level.

Parameters
[in]ptrI2S base address
[in]lineI2S data line, i2s_line_num_t
Return values
I2Sdata line rx fifo level

◆ i2s_get_tx_fifo_level()

static uint32_t i2s_get_tx_fifo_level ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get tx fifo level.

Parameters
[in]ptrI2S base address
Return values
I2Stx fifo level

◆ i2s_get_tx_line_fifo_level()

static uint32_t i2s_get_tx_line_fifo_level ( I2S_Type ptr,
i2s_line_num_t  line 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S get data line tx fifo level.

Parameters
[in]ptrI2S base address
[in]lineI2S data line, i2s_line_num_t
Return values
I2Sdata line tx fifo level

◆ i2s_init()

void i2s_init ( I2S_Type ptr,
i2s_config_t config 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S initialization.

Parameters
[in]ptrI2S base address
[in]configi2s_config_t

◆ i2s_receive_buff()

uint32_t i2s_receive_buff ( I2S_Type ptr,
i2s_line_num_t  rx_line_index,
uint8_t  samplebits,
uint8_t *  dst,
uint32_t  size 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S receive data in buff.

Parameters
[in]ptrI2S base address
[in]rx_line_indexdata line, i2s_line_num_t
[in]samplebitsaudio data width
[out]dsttarget data buff
[in]sizedata size
Return values
I2Ssent data size in byte

◆ i2s_receive_data()

static void i2s_receive_data ( I2S_Type ptr,
i2s_line_num_t  rx_line_index,
uint32_t *  data 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S receive data.

Parameters
[in]ptrI2S base address
[in]rx_line_indexdata line, i2s_line_num_t
[out]datapoint to store data address

◆ i2s_reset_all()

void i2s_reset_all ( I2S_Type ptr)

#include <drivers/inc/hpm_i2s_drv.h>

I2S reset tx/rx and clock generator module.

Note
This API will disable I2S, reset tx/rx and clock generator module This function uses an internal clock to generate BCLK, then do reset operation, and finally restores the previous clock settings
Parameters
[in]ptrI2S base address

◆ i2s_reset_clock_gen()

static void i2s_reset_clock_gen ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S reset clock generator.

Parameters
[in]ptrI2S base address

◆ i2s_reset_rx()

static void i2s_reset_rx ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S reset rx function.

Note
This API will disable I2S, reset rx function Please ensure that there is a valid BCLK when calling this function
Parameters
[in]ptrI2S base address

◆ i2s_reset_tx()

static void i2s_reset_tx ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S reset tx function.

Note
This API will disable I2S, reset tx function Please ensure that there is a valid BCLK when calling this function
Parameters
[in]ptrI2S base address

◆ i2s_reset_tx_rx()

static void i2s_reset_tx_rx ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S reset tx and rx function.

Note
This API will disable I2S, reset tx/rx function Please ensure that there is a valid BCLK when calling this function
Parameters
[in]ptrI2S base address

◆ i2s_send_buff()

uint32_t i2s_send_buff ( I2S_Type ptr,
i2s_line_num_t  tx_line_index,
uint8_t  samplebits,
uint8_t *  src,
uint32_t  size 
)

#include <drivers/inc/hpm_i2s_drv.h>

I2S send data in buff.

Parameters
[in]ptrI2S base address
[in]tx_line_indexdata line, i2s_line_num_t
[in]samplebitsaudio data width
[in]srcsource data buff
[in]sizedata size
Return values
I2Ssent data size in byte

◆ i2s_send_data()

static void i2s_send_data ( I2S_Type ptr,
i2s_line_num_t  tx_line_index,
uint32_t  data 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S send data.

Parameters
[in]ptrI2S base address
[in]tx_line_indexdata line, i2s_line_num_t
[in]datadata to be written

◆ i2s_set_rxd_slot()

static void i2s_set_rxd_slot ( I2S_Type ptr,
i2s_line_num_t  line,
uint32_t  slot_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S set rx slot mask.

Parameters
[in]ptrI2S base address
[in]linerx data line, i2s_line_num_t
[in]slot_maskslot mask

◆ i2s_set_txd_slot()

static void i2s_set_txd_slot ( I2S_Type ptr,
i2s_line_num_t  line,
uint32_t  slot_mask 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S set tx slot mask.

Parameters
[in]ptrI2S base address
[in]linetx data line, i2s_line_num_t
[in]slot_maskslot mask

◆ i2s_start()

static void i2s_start ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S start.

Parameters
[in]ptrI2S base address

◆ i2s_stop()

static void i2s_stop ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S stop.

Parameters
[in]ptrI2S base address

◆ i2s_stop_transfer()

static void i2s_stop_transfer ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

I2S stop transfer.

Parameters
[in]ptrI2S base address

◆ i2s_ungate_bclk()

static void i2s_ungate_bclk ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

open BCLK

Parameters
[in]ptrI2S base address

◆ i2s_ungate_mclk()

static void i2s_ungate_mclk ( I2S_Type ptr)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

open MCLK

Parameters
[in]ptrI2S base address

◆ i2s_update_rx_fifo_threshold()

static void i2s_update_rx_fifo_threshold ( I2S_Type ptr,
uint8_t  threshold 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

update rx fifo threshold

Parameters
[in]ptrI2S base address
[in]thresholdfifo threshold value

◆ i2s_update_tx_fifo_threshold()

static void i2s_update_tx_fifo_threshold ( I2S_Type ptr,
uint8_t  threshold 
)
inlinestatic

#include <drivers/inc/hpm_i2s_drv.h>

update tx fifo threshold

Parameters
[in]ptrI2S base address
[in]thresholdfifo threshold value