HPM SDK
HPMicro Software Development Kit
hpm_i2s_over_spi.h File Reference
#include "hpm_common.h"
#include "hpm_i2s_common.h"
#include "hpm_gptmr_drv.h"
#include "hpm_spi_drv.h"
#include "hpm_clock_drv.h"
#include "hpm_dma_mgr.h"

Go to the source code of this file.

Data Structures

struct  hpm_i2s_gptmr_context_t
 
struct  hpm_i2s_spi_context_t
 
struct  hpm_i2s_dma_context_t
 
struct  hpm_i2s_over_spi
 

Typedefs

typedef void(* i2s_rx_data_tc) (uint32_t cb_data_ptr)
 
typedef struct hpm_i2s_over_spi hpm_i2s_over_spi_t
 

Functions

void hpm_i2s_master_over_spi_transfer_complete_callback (hpm_i2s_over_spi_t *i2s)
 Transfer complete callback for i2s master over spi. More...
 
hpm_stat_t hpm_i2s_master_over_spi_init (hpm_i2s_over_spi_t *i2s)
 Initialization for i2s master over spi. More...
 
bool hpm_i2s_master_over_spi_tx_is_busy (hpm_i2s_over_spi_t *i2s)
 Check if i2s master over spiis busy. More...
 
hpm_stat_t hpm_i2s_master_over_spi_tx_buffer_nonblocking (hpm_i2s_over_spi_t *i2s, uint8_t protocol, uint32_t lrck_hz, uint8_t audio_depth, uint8_t *data, uint32_t size)
 
hpm_stat_t hpm_i2s_master_over_spi_tx_buffer (hpm_i2s_over_spi_t *i2s, uint8_t protocol, uint32_t lrck_hz, uint8_t audio_depth, uint8_t *data, uint32_t size)
 Transmit for i2s master over spi. More...
 
hpm_stat_t hpm_i2s_master_over_spi_tx_stop (hpm_i2s_over_spi_t *i2s)
 Stop Transmission for i2s master over spi. More...
 
hpm_stat_t hpm_i2s_master_over_spi_rx_config (hpm_i2s_over_spi_t *i2s, uint8_t protocol, uint32_t lrck_hz, uint32_t audio_depth, uint8_t *buffer0, uint8_t *buffer1, uint32_t size)
 Receiving configuration for i2s master over spi. More...
 
hpm_stat_t hpm_i2s_master_over_spi_rx_start (hpm_i2s_over_spi_t *i2s, i2s_rx_data_tc callback)
 Start receiving for i2s master over spi. More...
 
hpm_stat_t hpm_i2s_master_over_spi_rx_stop (hpm_i2s_over_spi_t *i2s)
 Stop receiving for i2s master over spi. More...
 

Typedef Documentation

◆ hpm_i2s_over_spi_t

◆ i2s_rx_data_tc

typedef void(* i2s_rx_data_tc) (uint32_t cb_data_ptr)

Function Documentation

◆ hpm_i2s_master_over_spi_init()

hpm_stat_t hpm_i2s_master_over_spi_init ( hpm_i2s_over_spi_t i2s)

Initialization for i2s master over spi.

Parameters
[in]i2si2s over spi context
Return values
status_successif no error occurred

◆ hpm_i2s_master_over_spi_rx_config()

hpm_stat_t hpm_i2s_master_over_spi_rx_config ( hpm_i2s_over_spi_t i2s,
uint8_t  protocol,
uint32_t  lrck_hz,
uint32_t  audio_depth,
uint8_t *  buffer0,
uint8_t *  buffer1,
uint32_t  size 
)

Receiving configuration for i2s master over spi.

Parameters
[in]i2si2s over spi context
[in]protocoli2s protocol, only support I2S_PROTOCOL_MSB_JUSTIFIED I2S_PROTOCOL_LSB_JUSTIFIED
[in]lrck_hzswitch left and right channels frequency, unit: hz
[in]audio_depthaudio depth only support 16bits and 32bits
[in]buffer0buffer0 pointer
[in]buffer1buffer1 pointer
[in]sizereceive size
Return values
status_successif no error occurred

◆ hpm_i2s_master_over_spi_rx_start()

hpm_stat_t hpm_i2s_master_over_spi_rx_start ( hpm_i2s_over_spi_t i2s,
i2s_rx_data_tc  callback 
)

Start receiving for i2s master over spi.

Parameters
[in]i2si2s over spi context
[in]callbackcallback after each buffer is received
Return values
status_successif no error occurred

◆ hpm_i2s_master_over_spi_rx_stop()

hpm_stat_t hpm_i2s_master_over_spi_rx_stop ( hpm_i2s_over_spi_t i2s)

Stop receiving for i2s master over spi.

Parameters
[in]i2si2s over spi context
Return values
status_successif no error occurred

◆ hpm_i2s_master_over_spi_transfer_complete_callback()

void hpm_i2s_master_over_spi_transfer_complete_callback ( hpm_i2s_over_spi_t i2s)

Transfer complete callback for i2s master over spi.

Parameters
[in]i2si2s over spi context

◆ hpm_i2s_master_over_spi_tx_buffer()

hpm_stat_t hpm_i2s_master_over_spi_tx_buffer ( hpm_i2s_over_spi_t i2s,
uint8_t  protocol,
uint32_t  lrck_hz,
uint8_t  audio_depth,
uint8_t *  data,
uint32_t  size 
)

Transmit for i2s master over spi.

Parameters
[in]i2si2s over spi context
[in]protocoli2s protocol, only support I2S_PROTOCOL_MSB_JUSTIFIED I2S_PROTOCOL_LSB_JUSTIFIED
[in]lrck_hzswitch left and right channels frequency, unit: hz
[in]audio_depthaudio depth only support 16bits and 32bits
[in]datadata pointer
[in]sizetransmit size
Return values
status_successif no error occurred

◆ hpm_i2s_master_over_spi_tx_buffer_nonblocking()

hpm_stat_t hpm_i2s_master_over_spi_tx_buffer_nonblocking ( hpm_i2s_over_spi_t i2s,
uint8_t  protocol,
uint32_t  lrck_hz,
uint8_t  audio_depth,
uint8_t *  data,
uint32_t  size 
)

Transmit for i2s master over spi in a non-blocking.

This function initializes and starts a transmission operation to send audio data to an I2S Over SPI master mode device via the SPI interface without blocking the current execution flow until the transfer is complete.

Parameters
i2si2s over spi context
protocoli2s protocol, only support I2S_PROTOCOL_MSB_JUSTIFIED I2S_PROTOCOL_LSB_JUSTIFIED
lrck_hzswitch left and right channels frequency, unit: hz
audio_depthaudio depth only support 16bits and 32bits
dataPointer to the audio data to be transmitted.
sizeTotal size of the audio data to be transmitted in bytes.
Returns
status_success if no error occurred

◆ hpm_i2s_master_over_spi_tx_is_busy()

bool hpm_i2s_master_over_spi_tx_is_busy ( hpm_i2s_over_spi_t i2s)

Check if i2s master over spiis busy.

This function determines whether the I2S-over-SPI master device is currently busy transmitting data. It is typically used during I2S communication to ensure that the device is not processing data, thus avoiding data conflicts or overwriting.

Parameters
i2si2s over spi context
Returns
Returns a bool value indicating the transmission status of the I2S-over-SPI master device. Returns true if the device is busy, and false if the device is idle.

◆ hpm_i2s_master_over_spi_tx_stop()

hpm_stat_t hpm_i2s_master_over_spi_tx_stop ( hpm_i2s_over_spi_t i2s)

Stop Transmission for i2s master over spi.

Parameters
[in]i2si2s over spi context
Return values
status_successif no error occurred