VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions
vsf_template_i2c.h File Reference
#include "./vsf_template_hal_driver.h"
#include "hal/arch/vsf_arch.h"
#include "hal/driver/common/i2c/i2c_request.h"

Go to the source code of this file.

Data Structures

struct  vsf_i2c_status_t
 
struct  vsf_i2c_capability_t
 
struct  vsf_i2c_isr_t
 i2c interrupt configuration More...
 
struct  vsf_i2c_cfg_t
 i2c configuration More...
 
struct  vsf_i2c_op_t
 
struct  vsf_i2c_t
 

Macros

#define VSF_I2C_CFG_MULTI_CLASS   ENABLED
 
#define VSF_I2C_CFG_PREFIX   vsf
 
#define VSF_I2C_CFG_FUNCTION_RENAME   ENABLED
 
#define VSF_I2C_CFG_REQUEST_TEMPLATE   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG   DISABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED
 
#define VSF_I2C_CFG_INHERT_HAL_CAPABILITY   ENABLED
 
#define VSF_I2C_APIS(__PREFIX_NAME)
 
#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP
 
#define __vsf_i2c_t   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_t)
 
#define vsf_i2c_init(__I2C, ...)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_init) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
 
#define vsf_i2c_fini(__I2C)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_fini) ((__vsf_i2c_t *)(__I2C))
 
#define vsf_i2c_enable(__I2C)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_enable) ((__vsf_i2c_t *)(__I2C))
 
#define vsf_i2c_disable(__I2C)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_disable) ((__vsf_i2c_t *)(__I2C))
 
#define vsf_i2c_irq_enable(__I2C, ...)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_enable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
 
#define vsf_i2c_irq_disable(__I2C, ...)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_disable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
 
#define vsf_i2c_status(__I2C)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_status) ((__vsf_i2c_t *)(__I2C))
 
#define vsf_i2c_capability(__I2C)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_capability) ((__vsf_i2c_t *)(__I2C))
 
#define vsf_i2c_master_request(__I2C, ...)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_master_request) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
 
#define vsf_i2c_get_transferred_count(__I2C, ...)   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_get_transferred_count) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
 

Typedefs

typedef enum vsf_i2c_mode_t vsf_i2c_mode_t
 
typedef enum vsf_i2c_cmd_t vsf_i2c_cmd_t
 
typedef enum vsf_i2c_irq_mask_t vsf_i2c_irq_mask_t
 
typedef struct vsf_i2c_status_t vsf_i2c_status_t
 
typedef struct vsf_i2c_capability_t vsf_i2c_capability_t
 
typedef struct vsf_i2c_t vsf_i2c_t
 
typedef void vsf_i2c_isr_handler_t(void *target_ptr, vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 i2c interrupt callback function prototype.
 
typedef struct vsf_i2c_isr_t vsf_i2c_isr_t
 i2c interrupt configuration
 
typedef struct vsf_i2c_cfg_t vsf_i2c_cfg_t
 i2c configuration
 
typedef struct vsf_i2c_op_t vsf_i2c_op_t
 

Enumerations

enum  vsf_i2c_mode_t {
  VSF_I2C_MODE_MASTER = (0x1ul << 28) ,
  VSF_I2C_MODE_SLAVE = (0x0ul << 28) ,
  VSF_I2C_SPEED_STANDARD_MODE = (0x0ul << 29) ,
  VSF_I2C_SPEED_FAST_MODE = (0x1ul << 29) ,
  VSF_I2C_SPEED_FAST_MODE_PLUS = (0x2ul << 29) ,
  VSF_I2C_SPEED_HIGH_SPEED_MODE = (0x3ul << 29) ,
  VSF_I2C_ADDR_7_BITS = (0x0ul << 31) ,
  VSF_I2C_ADDR_10_BITS = (0x1ul << 31)
}
 
enum  {
  VSF_I2C_MODE_COUNT = 2 ,
  VSF_I2C_MODE_MASK ,
  VSF_I2C_SPEED_COUNT = 4 ,
  VSF_I2C_SPEED_MASK ,
  VSF_I2C_ADDR_COUNT = 3 ,
  VSF_I2C_ADDR_MASK ,
  VSF_I2C_MODE_MASK_COUNT = 3 ,
  VSF_I2C_MODE_ALL_BITS_MASK
}
 
enum  vsf_i2c_cmd_t {
  VSF_I2C_CMD_WRITE = (0x00ul << 0) ,
  VSF_I2C_CMD_READ = (0x01ul << 0) ,
  VSF_I2C_CMD_START = (0x00ul << 28) ,
  VSF_I2C_CMD_NO_START = (0x01ul << 28) ,
  VSF_I2C_CMD_STOP = (0x00ul << 29) ,
  VSF_I2C_CMD_RESTART = (0x01ul << 30) ,
  VSF_I2C_CMD_NO_STOP_RESTART = (0x01ul << 30) ,
  VSF_I2C_CMD_7_BITS = (0x00ul << 31) ,
  VSF_I2C_CMD_10_BITS = (0x01ul << 31)
}
 
enum  {
  VSF_I2C_CMD_RW_COUNT = 2 ,
  VSF_I2C_CMD_RW_MASK = VSF_I2C_CMD_WRITE | VSF_I2C_CMD_READ ,
  VSF_I2C_CMD_BITS_COUNT = 2 ,
  VSF_I2C_CMD_BITS_MASK ,
  VSF_I2C_CMD_START_COUNT = 2 ,
  VSF_I2C_CMD_START_MASK = VSF_I2C_CMD_START | VSF_I2C_CMD_NO_START ,
  VSF_I2C_CMD_STOP_RESTART_COUNT = 3 ,
  VSF_I2C_CMD_STOP_RESTART_MASK ,
  VSF_I2C_CMD_MASK_COUNT = 5 ,
  VSF_I2C_CMD_ALL_BITS_MASK
}
 
enum  vsf_i2c_irq_mask_t {
  VSF_I2C_IRQ_MASK_MASTER_STARTED = (0x1ul << 0) ,
  VSF_I2C_IRQ_MASK_MASTER_STOPPED = (0x1ul << 1) ,
  VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT = (0x1ul << 2) ,
  VSF_I2C_IRQ_MASK_MASTER_NACK_DETECT = (0x1ul << 4) ,
  VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST = (0x1ul << 5) ,
  VSF_I2C_IRQ_MASK_MASTER_TX_EMPTY = (0x1ul << 6) ,
  VSF_I2C_IRQ_MASK_MASTER_ERROR = (0x1ul << 7) ,
  VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE = (0x1ul << 8) ,
  VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK = (0x1ul << 9)
}
 
enum  {
  VSF_I2C_IRQ_COUNT = 8 ,
  VSF_I2C_IRQ_ALL_BITS_MASK
}
 

Functions

vsf_err_t vsf_i2c_init (vsf_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr)
 initialize a i2c instance.
 
void vsf_i2c_fini (vsf_i2c_t *i2c_ptr)
 termination a i2c instance.
 
fsm_rt_t vsf_i2c_enable (vsf_i2c_t *i2c_ptr)
 enable i2c instance.
 
fsm_rt_t vsf_i2c_disable (vsf_i2c_t *i2c_ptr)
 disable i2c instance.
 
void vsf_i2c_irq_enable (vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 enable interrupt masks of i2c instance.
 
void vsf_i2c_irq_disable (vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 disable interrupt masks of i2c instance.
 
vsf_i2c_status_t vsf_i2c_status (vsf_i2c_t *i2c_ptr)
 get the status of i2c instance.
 
vsf_i2c_capability_t vsf_i2c_capability (vsf_i2c_t *i2c_ptr)
 get the capability of i2c instance.
 
vsf_err_t vsf_i2c_master_request (vsf_i2c_t *i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint16_t count, uint8_t *buffer_ptr)
 i2c instance as master mode request a transfer
 
uint_fast32_t vsf_i2c_get_transferred_count (vsf_i2c_t *i2c_ptr)
 get the counter of transfers for current request by the i2c master
 

Macro Definition Documentation

◆ VSF_I2C_CFG_MULTI_CLASS

#define VSF_I2C_CFG_MULTI_CLASS   ENABLED

◆ VSF_I2C_CFG_PREFIX

#define VSF_I2C_CFG_PREFIX   vsf

◆ VSF_I2C_CFG_FUNCTION_RENAME

#define VSF_I2C_CFG_FUNCTION_RENAME   ENABLED

◆ VSF_I2C_CFG_REQUEST_TEMPLATE

#define VSF_I2C_CFG_REQUEST_TEMPLATE   DISABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE   DISABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD   DISABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG   DISABLED

Redefine struct vsf_i2c_cfg_t. The vsf_i2c_isr_handler_t type also needs to be redefined For compatibility, members should not be deleted when struct vsf_i2c_cfg_t redefining.

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED

Redefine struct vsf_i2c_capability_t. For compatibility, members should not be deleted when struct vsf_i2c_capability_t redefining.

◆ VSF_I2C_CFG_INHERT_HAL_CAPABILITY

#define VSF_I2C_CFG_INHERT_HAL_CAPABILITY   ENABLED

◆ VSF_I2C_APIS

#define VSF_I2C_APIS (   __PREFIX_NAME)
Value:
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, vsf_err_t, i2c, init, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, void, i2c, fini, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, fsm_rt_t, i2c, enable, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, fsm_rt_t, i2c, disable, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, void, i2c, irq_enable, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, void, i2c, irq_disable, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, vsf_i2c_status_t, i2c, status, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, vsf_i2c_capability_t, i2c, capability, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, uint_fast32_t, i2c, get_transferred_count, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr) \
__VSF_HAL_TEMPLATE_API(__PREFIX_NAME, vsf_err_t, i2c, master_request, VSF_MCONNECT(__PREFIX_NAME, _i2c_t) *i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint16_t count, uint8_t* buffer_ptr)
vsf_err_t
Definition __type.h:42
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
vsf_i2c_cmd_t
Definition i2c.h:32
__le16 capability
Definition ieee80211.h:134
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned short uint16_t
Definition stdint.h:7
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_i2c.h:231
i2c configuration
Definition vsf_template_i2c.h:314
Definition vsf_template_i2c.h:222
fsm_rt_t
Definition vsf_fsm.h:315
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_i2c.h:328
vsf_i2c_irq_mask_t
Definition vsf_template_i2c.h:194
uint8_t status
Definition vsf_tgui.h:122

◆ __VSF_HAL_TEMPLATE_API

#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP

◆ __vsf_i2c_t

#define __vsf_i2c_t   VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_t)

◆ vsf_i2c_init

#define vsf_i2c_init (   __I2C,
  ... 
)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_init) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)

◆ vsf_i2c_fini

#define vsf_i2c_fini (   __I2C)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_fini) ((__vsf_i2c_t *)(__I2C))

◆ vsf_i2c_enable

#define vsf_i2c_enable (   __I2C)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_enable) ((__vsf_i2c_t *)(__I2C))

◆ vsf_i2c_disable

#define vsf_i2c_disable (   __I2C)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_disable) ((__vsf_i2c_t *)(__I2C))

◆ vsf_i2c_irq_enable

#define vsf_i2c_irq_enable (   __I2C,
  ... 
)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_enable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)

◆ vsf_i2c_irq_disable

#define vsf_i2c_irq_disable (   __I2C,
  ... 
)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_disable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)

◆ vsf_i2c_status

#define vsf_i2c_status (   __I2C)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_status) ((__vsf_i2c_t *)(__I2C))

◆ vsf_i2c_capability

#define vsf_i2c_capability (   __I2C)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_capability) ((__vsf_i2c_t *)(__I2C))

◆ vsf_i2c_master_request

#define vsf_i2c_master_request (   __I2C,
  ... 
)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_master_request) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)

◆ vsf_i2c_get_transferred_count

#define vsf_i2c_get_transferred_count (   __I2C,
  ... 
)    VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_get_transferred_count) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)

Typedef Documentation

◆ vsf_i2c_mode_t

◆ vsf_i2c_cmd_t

◆ vsf_i2c_irq_mask_t

◆ vsf_i2c_status_t

◆ vsf_i2c_capability_t

◆ vsf_i2c_t

typedef struct vsf_i2c_t vsf_i2c_t

◆ vsf_i2c_isr_handler_t

typedef void vsf_i2c_isr_handler_t(void *target_ptr, vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)

i2c interrupt callback function prototype.

Note
It is called after interrupt occurs.
Parameters
target_ptrpointer of user.
i2c_ptrpointer of i2c instance.
irq_maskone or more value of enum vsf_i2c_irq_mask_t
Returns
None.
static void __user_i2c_irqhandler(void *target_ptr, vsf_i2c_t *i2c_ptr, enum irq_mask)
{
// do something
}
// do something
}
}
Definition vsf_template_i2c.h:334
@ VSF_I2C_IRQ_MASK_MASTER_STOPPED
Definition vsf_template_i2c.h:196
@ VSF_I2C_IRQ_MASK_MASTER_STARTED
Definition vsf_template_i2c.h:195

◆ vsf_i2c_isr_t

typedef struct vsf_i2c_isr_t vsf_i2c_isr_t

i2c interrupt configuration

◆ vsf_i2c_cfg_t

typedef struct vsf_i2c_cfg_t vsf_i2c_cfg_t

i2c configuration

◆ vsf_i2c_op_t

typedef struct vsf_i2c_op_t vsf_i2c_op_t

Enumeration Type Documentation

◆ vsf_i2c_mode_t

Enumerator
VSF_I2C_MODE_MASTER 
VSF_I2C_MODE_SLAVE 
VSF_I2C_SPEED_STANDARD_MODE 
VSF_I2C_SPEED_FAST_MODE 
VSF_I2C_SPEED_FAST_MODE_PLUS 
VSF_I2C_SPEED_HIGH_SPEED_MODE 
VSF_I2C_ADDR_7_BITS 
VSF_I2C_ADDR_10_BITS 

◆ anonymous enum

anonymous enum
Enumerator
VSF_I2C_MODE_COUNT 
VSF_I2C_MODE_MASK 
VSF_I2C_SPEED_COUNT 
VSF_I2C_SPEED_MASK 
VSF_I2C_ADDR_COUNT 
VSF_I2C_ADDR_MASK 
VSF_I2C_MODE_MASK_COUNT 
VSF_I2C_MODE_ALL_BITS_MASK 

◆ vsf_i2c_cmd_t

Enumerator
VSF_I2C_CMD_WRITE 
VSF_I2C_CMD_READ 
VSF_I2C_CMD_START 
VSF_I2C_CMD_NO_START 
VSF_I2C_CMD_STOP 
VSF_I2C_CMD_RESTART 
VSF_I2C_CMD_NO_STOP_RESTART 
VSF_I2C_CMD_7_BITS 
VSF_I2C_CMD_10_BITS 

◆ anonymous enum

anonymous enum
Enumerator
VSF_I2C_CMD_RW_COUNT 
VSF_I2C_CMD_RW_MASK 
VSF_I2C_CMD_BITS_COUNT 
VSF_I2C_CMD_BITS_MASK 
VSF_I2C_CMD_START_COUNT 
VSF_I2C_CMD_START_MASK 
VSF_I2C_CMD_STOP_RESTART_COUNT 
VSF_I2C_CMD_STOP_RESTART_MASK 
VSF_I2C_CMD_MASK_COUNT 
VSF_I2C_CMD_ALL_BITS_MASK 

◆ vsf_i2c_irq_mask_t

Enumerator
VSF_I2C_IRQ_MASK_MASTER_STARTED 
VSF_I2C_IRQ_MASK_MASTER_STOPPED 
VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT 
VSF_I2C_IRQ_MASK_MASTER_NACK_DETECT 
VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST 
VSF_I2C_IRQ_MASK_MASTER_TX_EMPTY 
VSF_I2C_IRQ_MASK_MASTER_ERROR 
VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE 
VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK 

◆ anonymous enum

anonymous enum
Enumerator
VSF_I2C_IRQ_COUNT 
VSF_I2C_IRQ_ALL_BITS_MASK 

Function Documentation

◆ vsf_i2c_init()

vsf_err_t vsf_i2c_init ( vsf_i2c_t i2c_ptr,
vsf_i2c_cfg_t cfg_ptr 
)
extern

initialize a i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]cfg_ptra pointer to structure vsf_i2c_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if i2c was initialized, or a negative error code
Note
It is not necessary to call vsf_i2c_fini() to deinitialization. vsf_i2c_init() should be called before any other i2c API except vsf_i2c_capability().

◆ vsf_i2c_fini()

void vsf_i2c_fini ( vsf_i2c_t i2c_ptr)
extern

termination a i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Note
Termination an i2c instance should include turning off the corresponding power gating.

◆ vsf_i2c_enable()

fsm_rt_t vsf_i2c_enable ( vsf_i2c_t i2c_ptr)
extern

enable i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
fsm_rt_t: fsm_rt_cpl if enable complete, else return fsm_rt_onging
Note
vsf_i2c_enable() should be called after vsf_i2c_init(). The clock gating bit only needs to be ensured to be turned on after vsf_i2c_enable().

◆ vsf_i2c_disable()

fsm_rt_t vsf_i2c_disable ( vsf_i2c_t i2c_ptr)
extern

disable i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
fsm_rt_t: fsm_rt_cpl if disable complete, else return fsm_rt_onging
Note
Need to make sure that calling vsf_i2c_enable() after vsf_i2c_disable() is working without calling vsf_i2c_init()

◆ vsf_i2c_irq_enable()

void vsf_i2c_irq_enable ( vsf_i2c_t i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)
extern

enable interrupt masks of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]irq_maskone or more value of enum vsf_i2c_irq_mask_t
Returns
none.
Note
All pending interrupts should be cleared before interrupts are enabled.

◆ vsf_i2c_irq_disable()

void vsf_i2c_irq_disable ( vsf_i2c_t i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)
extern

disable interrupt masks of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]irq_maskone or more value of enum vsf_i2c_irq_mask_t, vsf_i2c_irq_mask_t
Returns
none.

◆ vsf_i2c_status()

vsf_i2c_status_t vsf_i2c_status ( vsf_i2c_t i2c_ptr)
extern

get the status of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
vsf_i2c_status_t: return all status of current i2c

◆ vsf_i2c_capability()

vsf_i2c_capability_t vsf_i2c_capability ( vsf_i2c_t i2c_ptr)
extern

get the capability of i2c instance.

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
vsf_i2c_capability_t: return all capability of current i2c vsf_i2c_capability_t

◆ vsf_i2c_master_request()

vsf_err_t vsf_i2c_master_request ( vsf_i2c_t i2c_ptr,
uint16_t  address,
vsf_i2c_cmd_t  cmd,
uint16_t  count,
uint8_t buffer_ptr 
)
extern

i2c instance as master mode request a transfer

Note
i2c_msg_ptr can be a local variable.
Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
[in]addressaddress of i2c transfer
[in]cmdi2c cmd
[in]counti2c transfer buffer count (in byte)
[in]buffer_ptri2c transfer buffer
Returns
vsf_err_t: VSF_ERR_NONE if i2c was successfully, or a negative error code

◆ vsf_i2c_get_transferred_count()

uint_fast32_t vsf_i2c_get_transferred_count ( vsf_i2c_t i2c_ptr)
extern

get the counter of transfers for current request by the i2c master

Parameters
[in]i2c_ptra pointer to structure vsf_i2c_t
Returns
uint_fast32_t: counter of transferred
Note
This API can be used after the slave NAK and until the next transmission