SemiDrive SSDK Appication Program Interface PTG3.0
Data Structures | Functions
sdrv_i2c.h File Reference
#include <types.h>
#include <sdrv_common.h>

Go to the source code of this file.

Data Structures

struct  sdrv_i2c_cfg
 
struct  sdrv_i2cdrv_mctrl
 
struct  sdrv_i2c
 

Functions

static status_t sdrv_i2c_set_transmode (sdrv_i2c_t *ctrl, sdrv_i2cdrv_tsmode_t tsmode)
 
static status_t sdrv_i2c_set_speedmode (sdrv_i2c_t *ctrl, sdrv_i2cdrv_speed_t speed)
 
status_t sdrv_i2c_init_ctrl (sdrv_i2c_t *ctrl)
 
status_t sdrv_i2c_write (sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *wbuf, uint16_t wlen, uint32_t timeout, bool need_stop)
 
status_t sdrv_i2c_read (sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *rbuf, uint16_t rlen, uint32_t timeout, bool need_stop)
 
status_t sdrv_i2c_write_async (sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *wbuf, uint16_t wlen, bool need_stop, sdrv_i2c_cb_t cb, void *cb_param)
 
status_t sdrv_i2c_read_async (sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *rbuf, uint16_t rlen, bool need_stop, sdrv_i2c_cb_t cb, void *cb_param)
 
status_t sdrv_i2c_get_trans_stat (sdrv_i2c_t *ctrl)
 
sdrv_i2cdrv_bus_stat_t sdrv_i2c_get_bus_stat (sdrv_i2c_t *ctrl)
 
status_t sdrv_i2c_set_bus_stat (sdrv_i2c_t *ctrl, sdrv_i2cdrv_bus_stat_t bus_stat)
 
status_t sdrv_i2c_lock_bus (sdrv_i2c_t *ctrl)
 
status_t sdrv_i2c_unlock_bus (sdrv_i2c_t *ctrl)
 

Detailed Description

Typedef Documentation

◆ sdrv_i2c_cb_t

typedef void(* sdrv_i2c_cb_t) (sdrv_i2c_t *ctrl, void *param, sdrv_i2cdrv_trans_stat_t stat)

◆ sdrv_i2c_cfg_t

typedef struct sdrv_i2c_cfg sdrv_i2c_cfg_t

◆ sdrv_i2c_t

typedef struct sdrv_i2c sdrv_i2c_t

◆ sdrv_i2cdrv_mctrl_t

◆ sdrv_i2cdrv_trans_stat_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

i2c controller supported errcode

Enumerator
SDRV_I2CDRV_TRANS_OK 
SDRV_I2CDRV_TRANS_GO 
SDRV_I2CDRV_TRANS_NAK 
SDRV_I2CDRV_TRANS_ERR 
SDRV_I2CDRV_TRANS_ABORT 
SDRV_I2CDRV_TRANS_TIMEOUT 

◆ sdrv_i2cdrv_bus_stat_t

i2c bus stat(only applicable for master mode)

Enumerator
SDRV_I2CDRV_BUS_IDLE 

i2c bus is idle

SDRV_I2CDRV_BUS_BUSY 

i2c bus is busy

◆ sdrv_i2cdrv_opmode_t

i2c controller supported operation mode

Enumerator
SDRV_I2CDRV_MASTER 

i2c controller master mode

SDRV_I2CDRV_SLAVE 

i2c controller slave mode

◆ sdrv_i2cdrv_speed_t

i2c controller supported speed mode

Enumerator
SDRV_I2CDRV_SSPEED 

100kHz

SDRV_I2CDRV_FSPEED 

400kHz

SDRV_I2CDRV_PSPEED 

1MHz

SDRV_I2CDRV_HSPEED 

3.4MHz

SDRV_I2CDRV_USPEED 

5MHz

◆ sdrv_i2cdrv_tsmode_t

i2c controller supported transfer mode (only applicable for master mode)

Enumerator
SDRV_I2CDRV_POLL 

polling mode

SDRV_I2CDRV_INTP 

interrupt mode

Function Documentation

◆ sdrv_i2c_get_bus_stat()

sdrv_i2cdrv_bus_stat_t sdrv_i2c_get_bus_stat ( sdrv_i2c_t ctrl)

Get bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2c_unlock_bus instead.

Parameters
[in]ctrli2c controller instance pointer
Returns
SDRV_I2CDRV_BUS_IDLE/SDRV_I2CDRV_BUS_BUSY

◆ sdrv_i2c_get_trans_stat()

status_t sdrv_i2c_get_trans_stat ( sdrv_i2c_t ctrl)

Get transfer stat(only applicable for master).

Parameters
[in]ctrli2c controller instance pointer
Returns
SDRV_I2CDRV_TRANS_OK SDRV_I2CDRV_TRANS_GO SDRV_I2CDRV_TRANS_ERR SDRV_I2CDRV_TRANS_NAK SDRV_I2CDRV_TRANS_ABORT SDRV_I2CDRV_TRANS_TIMEOUT

◆ sdrv_i2c_init_ctrl()

status_t sdrv_i2c_init_ctrl ( sdrv_i2c_t ctrl)

Init the i2c controller.

Parameters
[in]ctrli2c controller instance pointer
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL

◆ sdrv_i2c_lock_bus()

status_t sdrv_i2c_lock_bus ( sdrv_i2c_t ctrl)

Lock bus stat(only applicable for master).

Parameters
[in]ctrli2c controller instance pointer
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL

◆ sdrv_i2c_read()

status_t sdrv_i2c_read ( sdrv_i2c_t ctrl,
uint16_t  addr,
uint8_t *  rbuf,
uint16_t  rlen,
uint32_t  timeout,
bool  need_stop 
)

Read data from slave device use poll blocking format.

Parameters
[in]ctrli2c controller instance pointer
[in]addrslave device 7bit addr not include LSB read/write bit
[out]rbufpoint to data buf for receive
[in]rlendata buf len
[in]timeouttimeout in milliseconds to wait (0 = wait forever)
[in]need_stopwhether send stop signal or hold sda after finish read
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL

◆ sdrv_i2c_read_async()

status_t sdrv_i2c_read_async ( sdrv_i2c_t ctrl,
uint16_t  addr,
uint8_t *  rbuf,
uint16_t  rlen,
bool  need_stop,
sdrv_i2c_cb_t  cb,
void *  cb_param 
)

Read data from slave device use interrupt non-blocking format.

Parameters
[in]ctrli2c controller instance pointer
[in]addrslave device 7bit addr not include LSB read/write bit
[out]rbufpoint to data buf for receive
[in]rlendata buf len
[in]need_stopwhether send stop signal or hold sda after complete read
[in]cbcallback function pointer
[in]cb_paramcallback user parameter
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL

◆ sdrv_i2c_set_bus_stat()

status_t sdrv_i2c_set_bus_stat ( sdrv_i2c_t ctrl,
sdrv_i2cdrv_bus_stat_t  bus_stat 
)

Set bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2c_unlock_bus instead.

Parameters
[in]ctrli2c controller instance pointer
[in]bus_statbus stat to be set
Returns
SDRV_STATUS_OK

◆ sdrv_i2c_set_speedmode()

static status_t sdrv_i2c_set_speedmode ( sdrv_i2c_t ctrl,
sdrv_i2cdrv_speed_t  speed 
)
inlinestatic

Set i2c controller speed mode.

Note
This API is deprecated.
Parameters
[in]ctrli2c controller instance pointer
[in]speedspeed mode to be set
Returns
SDRV_STATUS_OK

◆ sdrv_i2c_set_transmode()

static status_t sdrv_i2c_set_transmode ( sdrv_i2c_t ctrl,
sdrv_i2cdrv_tsmode_t  tsmode 
)
inlinestatic

Set i2c controller transfer mode.

Note
This API is deprecated.
Parameters
[in]ctrli2c controller instance pointer
[in]tsmodetransmode to be set
Returns
SDRV_STATUS_OK

◆ sdrv_i2c_unlock_bus()

status_t sdrv_i2c_unlock_bus ( sdrv_i2c_t ctrl)

Unlock bus stat(only applicable for master).

Parameters
[in]ctrli2c controller instance pointer
Returns
SDRV_STATUS_OK

◆ sdrv_i2c_write()

status_t sdrv_i2c_write ( sdrv_i2c_t ctrl,
uint16_t  addr,
uint8_t *  wbuf,
uint16_t  wlen,
uint32_t  timeout,
bool  need_stop 
)

Write data to slave device use poll blocking format.

Parameters
[in]ctrli2c controller instance pointer
[in]addrslave device 7bit addr not include LSB read/write bit
[in]wbufpoint to data buf for send
[in]wlendata buf len
[in]timeouttimeout in milliseconds to wait (0 = wait forever)
[in]need_stopwhether send stop signal or hold sda after finish write
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL

◆ sdrv_i2c_write_async()

status_t sdrv_i2c_write_async ( sdrv_i2c_t ctrl,
uint16_t  addr,
uint8_t *  wbuf,
uint16_t  wlen,
bool  need_stop,
sdrv_i2c_cb_t  cb,
void *  cb_param 
)

Write data to slave device use interrupt non-blocking format.

Parameters
[in]ctrli2c controller instance pointer
[in]addrslave device 7bit addr not include LSB read/write bit
[in]wbufpoint to data buf for send
[in]wlendata buf len
[in]need_stopwhether send stop signal or hold sda after finish write
[in]cbcallback function pointer
[in]cb_paramcallback user parameter
Returns
SDRV_STATUS_OK/SDRV_STATUS_FAIL