SemiDrive SSDK Appication Program Interface PTG3.0
Data Structures | Functions
sdrv_i2s.h File Reference
#include <debug.h>
#include <reg.h>
#include <stdbool.h>
#include <types.h>
#include "sdrv_ckgen.h"
#include "sdrv_common.h"
#include "sdrv_dma.h"

Go to the source code of this file.

Data Structures

struct  sdrv_i2s_dma_buf
 
struct  sdrv_i2s_transfer
 
struct  sdrv_i2s_params
 
struct  sdrv_i2s_config
 
struct  sdrv_i2s_dma_data
 
struct  sdrv_i2s_stream
 
struct  sdrv_i2s
 

Functions

sdrv_i2s_status_t sdrv_i2s_init (sdrv_i2s_t *i2s, sdrv_i2s_config_t *cfg)
 
sdrv_i2s_status_t sdrv_i2s_get_default_params (sdrv_i2s_t *i2s, sdrv_i2s_params_t *params, sdrv_i2s_stream_type_t type)
 
sdrv_i2s_status_t sdrv_i2s_set_params (sdrv_i2s_t *i2s, sdrv_i2s_params_t *params, sdrv_i2s_stream_type_t type)
 
sdrv_i2s_status_t sdrv_i2s_create_transfer (sdrv_i2s_t *i2s, sdrv_i2s_callback callback, void *context, sdrv_i2s_stream_type_t type)
 
sdrv_i2s_status_t sdrv_i2s_submit_transfer (sdrv_i2s_t *i2s, sdrv_i2s_transfer_t *transfer, sdrv_i2s_stream_type_t type)
 
sdrv_i2s_status_t sdrv_i2s_start (sdrv_i2s_t *i2s, sdrv_i2s_stream_type_t type)
 
sdrv_i2s_status_t sdrv_i2s_stop (sdrv_i2s_t *i2s, sdrv_i2s_stream_type_t type)
 

Detailed Description

Macro Definition Documentation

◆ SDRV_I2S_CHNNELS_BYTES

#define SDRV_I2S_CHNNELS_BYTES   (SDRV_I2S_SAMPLE_WIDTH_16BITS / 8)

◆ SDRV_I2S_CHNNELS_COUNT

#define SDRV_I2S_CHNNELS_COUNT   2

◆ SDRV_I2S_DAIFMT_CODEC_MASTER

#define SDRV_I2S_DAIFMT_CODEC_MASTER   (2 << 4)

◆ SDRV_I2S_DAIFMT_CODEC_SLAVE

#define SDRV_I2S_DAIFMT_CODEC_SLAVE   (1 << 4)

◆ SDRV_I2S_DAIFMT_DSP_A

#define SDRV_I2S_DAIFMT_DSP_A   4

◆ SDRV_I2S_DAIFMT_DSP_B

#define SDRV_I2S_DAIFMT_DSP_B   5

◆ SDRV_I2S_DAIFMT_FORMAT_MASK

#define SDRV_I2S_DAIFMT_FORMAT_MASK   0x0f

◆ SDRV_I2S_DAIFMT_IB_IF

#define SDRV_I2S_DAIFMT_IB_IF   (4 << SDRV_I2S_DAIFMT_INV_OFFSET)

◆ SDRV_I2S_DAIFMT_IB_NF

#define SDRV_I2S_DAIFMT_IB_NF   (3 << SDRV_I2S_DAIFMT_INV_OFFSET)

◆ SDRV_I2S_DAIFMT_INV_MASK

#define SDRV_I2S_DAIFMT_INV_MASK   0x0f00

◆ SDRV_I2S_DAIFMT_INV_OFFSET

#define SDRV_I2S_DAIFMT_INV_OFFSET   8

◆ SDRV_I2S_DAIFMT_LEFT_JUSTIFIED

#define SDRV_I2S_DAIFMT_LEFT_JUSTIFIED   2

◆ SDRV_I2S_DAIFMT_MASTER_MASK

#define SDRV_I2S_DAIFMT_MASTER_MASK   (0x0f0)

◆ SDRV_I2S_DAIFMT_NB_IF

#define SDRV_I2S_DAIFMT_NB_IF   (SDRV_I2S_DAIFMT_INV_OFFSET)

◆ SDRV_I2S_DAIFMT_NB_NF

#define SDRV_I2S_DAIFMT_NB_NF   (0 << SDRV_I2S_DAIFMT_INV_OFFSET)

◆ SDRV_I2S_DAIFMT_RIGHT_JUSTIFIED

#define SDRV_I2S_DAIFMT_RIGHT_JUSTIFIED   3

◆ SDRV_I2S_DAIFMT_STANDARD_PHILLIPS

#define SDRV_I2S_DAIFMT_STANDARD_PHILLIPS   1

◆ SDRV_I2S_DMA_BUF_TOTAL_SIZE

#define SDRV_I2S_DMA_BUF_TOTAL_SIZE    SDRV_I2S_DMA_PERIOD_SIZE *SDRV_I2S_DMA_PERIOD_COUNT

◆ SDRV_I2S_DMA_PERIOD_BYTES

#define SDRV_I2S_DMA_PERIOD_BYTES
Value:
#define SDRV_I2S_CHNNELS_BYTES
Definition: sdrv_i2s.h:53
#define SDRV_I2S_DMA_PERIOD_FRAME_SIZE
Definition: sdrv_i2s.h:54
#define SDRV_I2S_CHNNELS_COUNT
Definition: sdrv_i2s.h:52

◆ SDRV_I2S_DMA_PERIOD_COUNT

#define SDRV_I2S_DMA_PERIOD_COUNT   2

◆ SDRV_I2S_DMA_PERIOD_FRAME_SIZE

#define SDRV_I2S_DMA_PERIOD_FRAME_SIZE   1024 * 4

◆ SDRV_I2S_SEL_CHNULL

#define SDRV_I2S_SEL_CHNULL   0x00

◆ SDRV_I2S_SEL_DATALINE0

#define SDRV_I2S_SEL_DATALINE0   (0x01 << 0)

◆ SDRV_I2S_SEL_DATALINE1

#define SDRV_I2S_SEL_DATALINE1   (0x01 << 1)

◆ SDRV_I2S_SEL_DATALINE2

#define SDRV_I2S_SEL_DATALINE2   (0x01 << 2)

◆ SDRV_I2S_SEL_DATALINE3

#define SDRV_I2S_SEL_DATALINE3   (0x01 << 3)

◆ SDRV_I2S_SEL_DATALINE4

#define SDRV_I2S_SEL_DATALINE4   (0x01 << 4)

◆ SDRV_I2S_SEL_DATALINE5

#define SDRV_I2S_SEL_DATALINE5   (0x01 << 5)

◆ SDRV_I2S_SEL_DATALINE6

#define SDRV_I2S_SEL_DATALINE6   (0x01 << 6)

◆ SDRV_I2S_SEL_DATALINE7

#define SDRV_I2S_SEL_DATALINE7   (0x01 << 7)

◆ SDRV_I2S_XFER_NUM_BUFFERS

#define SDRV_I2S_XFER_NUM_BUFFERS   (4U)

Typedef Documentation

◆ sdrv_i2s_callback

typedef void(* sdrv_i2s_callback) (sdrv_i2s_transfer_t *transfer, void *context, sdrv_i2s_status_t state)

◆ sdrv_i2s_channel_t

i2s channel num

◆ sdrv_i2s_clk_sync_type_t

sdrv i2s sync mode ,select sck and ws source

◆ sdrv_i2s_config_t

i2s controller configurations

◆ sdrv_i2s_dma_buf_t

i2s dma buff descriptions,which is used to transfer data in dma mod

◆ sdrv_i2s_dma_data_t

i2s dma fifo descriptions

◆ sdrv_i2s_mclk_dir_t

i2s mclk direction selection in or out

◆ sdrv_i2s_mclk_sel_t

i2s mclk selection mclk0 or mclk1

◆ sdrv_i2s_params_t

sdrv i2s configurations params,

◆ sdrv_i2s_sample_rate_t

i2s sample rate

◆ sdrv_i2s_sample_width_t

sample width

◆ sdrv_i2s_slot_width_t

slot width

◆ sdrv_i2s_status_t

◆ sdrv_i2s_stream_t

playback capture descriptions

◆ sdrv_i2s_t

typedef struct sdrv_i2s sdrv_i2s_t

i2s controller descriptions

◆ sdrv_i2s_transfer_t

sdrv i2s transfer descriptions

Enumeration Type Documentation

◆ i2s_channel

i2s channel num

Enumerator
SDRV_I2S_CHANNEL_NUM_MONO 
SDRV_I2S_CHANNEL_NUM_STEREO 
SDRV_I2S_CHANNEL_NUM_3CHANS 
SDRV_I2S_CHANNEL_NUM_4CHANS 
SDRV_I2S_CHANNEL_NUM_5CHANS 
SDRV_I2S_CHANNEL_NUM_6CHANS 
SDRV_I2S_CHANNEL_NUM_7CHANS 
SDRV_I2S_CHANNEL_NUM_8CHANS 
SDRV_I2S_CHANNEL_NUM_9CHANS 
SDRV_I2S_CHANNEL_NUM_10CHANS 
SDRV_I2S_CHANNEL_NUM_11CHANS 
SDRV_I2S_CHANNEL_NUM_12CHANS 
SDRV_I2S_CHANNEL_NUM_13CHANS 
SDRV_I2S_CHANNEL_NUM_14CHANS 
SDRV_I2S_CHANNEL_NUM_15CHANS 
SDRV_I2S_CHANNEL_NUM_16CHANS 

◆ sdrv_i2s_clk_sync_type

sdrv i2s sync mode ,select sck and ws source

Enumerator
SDRV_I2S_CLK_TX_SYNC 

tx clk synchronization, rx will shares tx clk rx clk synchronization, tx will shares rx clk

SDRV_I2S_CLK_RX_SYNC 

async mode,tx and rx work on their respective clocks

SDRV_I2S_CLK_TX_RX_ASYNC 

◆ sdrv_i2s_mclk_dir

i2s mclk direction selection in or out

Enumerator
SDRV_I2S_MCLK_IN 

i2s mclk in

SDRV_I2S_MCLK_OUT 

i2s mclk out,default out

◆ sdrv_i2s_mclk_sel

i2s mclk selection mclk0 or mclk1

Enumerator
SDRV_I2S_MCLK_NULL 
SDRV_I2S_MCLK_0 
SDRV_I2S_MCLK_1 

◆ sdrv_i2s_sample_rate

i2s sample rate

Enumerator
SDRV_I2S_SR_NO_INIT 
SDRV_I2S_SR_5512 
SDRV_I2S_SR_8000 
SDRV_I2S_SR_11025 
SDRV_I2S_SR_16000 
SDRV_I2S_SR_22050 
SDRV_I2S_SR_32000 
SDRV_I2S_SR_44100 
SDRV_I2S_SR_48000 
SDRV_I2S_SR_64000 
SDRV_I2S_SR_88200 
SDRV_I2S_SR_96000 
SDRV_I2S_SR_176400 
SDRV_I2S_SR_192000 

◆ sdrv_i2s_sample_width

sample width

Enumerator
SDRV_I2S_SAMPLE_WIDTH_8BITS 
SDRV_I2S_SAMPLE_WIDTH_16BITS 
SDRV_I2S_SAMPLE_WIDTH_24BITS 
SDRV_I2S_SAMPLE_WIDTH_32BITS 

◆ sdrv_i2s_slot_width

slot width

Enumerator
SDRV_I2S_SLOT_WIDTH_8BITS 
SDRV_I2S_SLOT_WIDTH_16BITS 
SDRV_I2S_SLOT_WIDTH_24BITS 
SDRV_I2S_SLOT_WIDTH_32BITS 

◆ sdrv_i2s_status

Enumerator
SDRV_I2S_STATUS_SUCCESS 

status for Success. status for Fail.

SDRV_I2S_STATUS_FAIL 

status for invalid argument check

SDRV_I2S_STATUS_INVALID_PARAMS 

status for overrun

SDRV_I2S_STATUS_OVERRUN 

status for underrun

SDRV_I2S_STATUS_UNDERRUN 

◆ sdrv_i2s_stream_type_t

playback capture type

Enumerator
SDRV_I2S_STREAM_PLAYBACK 
SDRV_I2S_STREAM_CAPTURE 
SDRV_I2S_STREAM_MAX 

Function Documentation

◆ sdrv_i2s_create_transfer()

sdrv_i2s_status_t sdrv_i2s_create_transfer ( sdrv_i2s_t i2s,
sdrv_i2s_callback  callback,
void *  context,
sdrv_i2s_stream_type_t  type 
)

create i2s transfer and attach callback

This fuction is used to create transfer and attach transfer callback

Parameters
[in]i2ssdrv i2s controller
[in]callbacksdrv i2s transfer callback function.
[in]contextsdrv i2s transfer callback param.
[in]typeplayback or capture type
Returns
sdrv_i2s_status_t

◆ sdrv_i2s_get_default_params()

sdrv_i2s_status_t sdrv_i2s_get_default_params ( sdrv_i2s_t i2s,
sdrv_i2s_params_t params,
sdrv_i2s_stream_type_t  type 
)

get i2s module default params

This fuction is used to get i2s module default params

Parameters
[in]i2ssdrv i2s controller
[out]paramssdrv i2s params
[in]typeplayback or capture type
Returns
sdrv_i2s_status_t

◆ sdrv_i2s_init()

sdrv_i2s_status_t sdrv_i2s_init ( sdrv_i2s_t i2s,
sdrv_i2s_config_t cfg 
)

initializes i2s module controller

This fuction initializes i2s module function.

Parameters
[in]i2ssdrv i2s controller
[in]cfgsdrv i2s controller configurations
Returns
sdrv_i2s_status_t

◆ sdrv_i2s_set_params()

sdrv_i2s_status_t sdrv_i2s_set_params ( sdrv_i2s_t i2s,
sdrv_i2s_params_t params,
sdrv_i2s_stream_type_t  type 
)

set i2s params

This fuction is used to set i2s module params

Parameters
[in]i2ssdrv i2s controller
[in]paramssdrv i2s params
[in]typeplayback or capture type @ return sdrv_i2s_status_t

◆ sdrv_i2s_start()

sdrv_i2s_status_t sdrv_i2s_start ( sdrv_i2s_t i2s,
sdrv_i2s_stream_type_t  type 
)

start i2s transfer

This fuction is used to start i2s transfer

Parameters
[in]i2ssdrv i2s controller
[in]typeplayback or capture type
Returns
sdrv_i2s_status_t

◆ sdrv_i2s_stop()

sdrv_i2s_status_t sdrv_i2s_stop ( sdrv_i2s_t i2s,
sdrv_i2s_stream_type_t  type 
)

stop i2s transfer

  • This fuction is used to stop i2s transfer
Parameters
[in]i2ssdrv i2s controller
[in]typeplayback or capture type
Returns
sdrv_i2s_status_t

◆ sdrv_i2s_submit_transfer()

sdrv_i2s_status_t sdrv_i2s_submit_transfer ( sdrv_i2s_t i2s,
sdrv_i2s_transfer_t transfer,
sdrv_i2s_stream_type_t  type 
)

submit i2s transfer in queue

This fuction is used to submit transfer, which's max num is SDRV_I2S_XFER_NUM_BUFFERS

Parameters
[in]i2ssdrv i2s controller
[in]transfersdrv i2s transfer
[in]typeplayback or capture type
Returns
sdrv_i2s_status_t