VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions
vsf_dw_apb_i2c.h File Reference
#include "hal/vsf_hal_cfg.h"
#include "./vsf_dw_apb_i2c_reg.h"
#include "utilities/ooc_class.h"
#include "hal/driver/common/template/vsf_template_i2c.h"

Go to the source code of this file.

Data Structures

class  vsf_dw_apb_i2c_t
 

Macros

#define VSF_DW_APB_I2C_CFG_MULTI_CLASS   VSF_I2C_CFG_MULTI_CLASS
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE   ENABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD   ENABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK   ENABLED
 
#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL   ENABLED
 
#define VSF_I2C_CTRL_GET_MODE   VSF_I2C_CTRL_GET_MODE
 
#define VSF_I2C_CTRL_SET_MODE   VSF_I2C_CTRL_SET_MODE
 
#define VSF_I2C_CTRL_SLAVE_GET_ADDRESS   VSF_I2C_CTRL_SLAVE_GET_ADDRESS
 
#define VSF_I2C_CTRL_SLAVE_SET_ADDRESS   VSF_I2C_CTRL_SLAVE_SET_ADDRESS
 

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 enum vsf_i2c_ctrl_t vsf_i2c_ctrl_t
 

Enumerations

enum  vsf_i2c_mode_t {
  VSF_I2C_MODE_MASTER = (0x1ul << 0) | (0x1ul << 6) ,
  VSF_I2C_MODE_SLAVE = (0x0ul << 0) ,
  VSF_I2C_SPEED_STANDARD_MODE = (0x1ul << 1) ,
  VSF_I2C_SPEED_FAST_MODE = (0x2ul << 1) ,
  VSF_I2C_SPEED_FAST_MODE_PLUS = (0x2ul << 1) ,
  VSF_I2C_SPEED_HIGH_SPEED_MODE = (0x3ul << 1) ,
  VSF_I2C_ADDR_7_BITS = (0x0ul << 3) ,
  VSF_I2C_ADDR_10_BITS = (0x3ul << 3) ,
  __VSF_DW_APB_I2C_MODE_MASK
}
 
enum  vsf_i2c_cmd_t {
  VSF_I2C_CMD_WRITE = (0x00ul << 8) ,
  VSF_I2C_CMD_READ = (0x01ul << 8) ,
  VSF_I2C_CMD_START = (0x01ul << 16) ,
  VSF_I2C_CMD_RESTART = (0x01ul << 10) ,
  VSF_I2C_CMD_STOP = (0x01ul << 9) ,
  VSF_I2C_CMD_7_BITS = (0x00ul << 17) ,
  VSF_I2C_CMD_10_BITS = (0x01ul << 17) ,
  __VSF_DW_APB_I2C_CMD_MASK ,
  VSF_I2C_CMD_NO_START = (0x01ul << 24) ,
  VSF_I2C_CMD_NO_STOP_RESTART = (0x01ul << 25)
}
 
enum  vsf_i2c_irq_mask_t {
  VSF_I2C_IRQ_MASK_RX_UNDER = (0x01ul << 0) ,
  VSF_I2C_IRQ_MASK_RX_OVER = (0x01ul << 1) ,
  VSF_I2C_IRQ_MASK_RX_FULL = (0x01ul << 2) ,
  VSF_I2C_IRQ_MASK_TX_OVER = (0x01ul << 3) ,
  VSF_I2C_IRQ_MASK_TX_EMPTY = (0x01ul << 4) ,
  VSF_I2C_IRQ_MASK_SLAVE_RD_REQ = (0x01ul << 5) ,
  VSF_I2C_IRQ_MASK_TX_ABORT = (0x01ul << 6) ,
  VSF_I2C_IRQ_MASK_RX_DONE = (0x01ul << 7) ,
  VSF_I2C_IRQ_MASK_ACTIVITY = (0x01ul << 8) ,
  VSF_I2C_IRQ_MASK_STOP_DET = (0x01ul << 9) ,
  VSF_I2C_IRQ_MASK_START_DET = (0x01ul << 10) ,
  VSF_I2C_IRQ_MASK_GEN_CALL = (0x01ul << 11) ,
  VSF_I2C_IRQ_MASK_RESTART_DET = (0x01ul << 12) ,
  VSF_I2C_IRQ_MASK_MST_ON_HOLD = (0x01ul << 13) ,
  VSF_I2C_IRQ_MASK_SCL_STUCK_AT_LOW = (0x01ul << 14) ,
  VSF_I2C_IRQ_MASK_MASTER_TX = VSF_I2C_IRQ_MASK_TX_EMPTY ,
  VSF_I2C_IRQ_MASK_MASTER_RX = VSF_I2C_IRQ_MASK_RX_FULL ,
  VSF_I2C_IRQ_MASK_MASTER_START_OR_RESTART_DETECT = VSF_I2C_IRQ_MASK_START_DET ,
  VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT = VSF_I2C_IRQ_MASK_STOP_DET ,
  VSF_I2C_IRQ_MASK_SLAVE_TX = VSF_I2C_IRQ_MASK_SLAVE_RD_REQ ,
  __VSF_DW_APB_I2C_SLAVE_OFFSET = 16 ,
  VSF_I2C_IRQ_MASK_SLAVE_RX = VSF_I2C_IRQ_MASK_RX_FULL << __VSF_DW_APB_I2C_SLAVE_OFFSET ,
  VSF_I2C_IRQ_MASK_SLAVE_STOP_DETECT = VSF_I2C_IRQ_MASK_STOP_DET << __VSF_DW_APB_I2C_SLAVE_OFFSET ,
  VSF_I2C_IRQ_MASK_SLAVE_START_OR_RESTART_DETECT = VSF_I2C_IRQ_MASK_START_DET << __VSF_DW_APB_I2C_SLAVE_OFFSET ,
  VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE = (0x01ul << 19) ,
  VSF_I2C_IRQ_MASK_SLAVE_TRANSFER_COMPLETE = (0x01ul << 21) ,
  VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK = (0x01ul << 22) ,
  VSF_I2C_IRQ_MASK_MASTER_TX_NACK_DETECT = (0x01ul << 23) ,
  VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST = (0x01ul << 24) ,
  VSF_I2C_IRQ_MASK_MASTER_ERR = (0x01ul << 27) ,
  VSF_I2C_IRQ_MASK_SLAVE_ERR = (0x01ul << 28) ,
  VSF_DW_APB_I2C_IRQ_MASK_ALL ,
  __VSF_DW_APB_I2C_SLAVE_IRQ_MASK ,
  __VSF_DW_APB_I2C_IRQ_MASK = 0x7FF ,
  __VSF_DW_APB_I2C_ERROR_MASK
}
 
enum  vsf_i2c_ctrl_t {
  VSF_I2C_CTRL_GET_MODE ,
  VSF_I2C_CTRL_GET_MODE ,
  VSF_I2C_CTRL_SET_MODE ,
  VSF_I2C_CTRL_SET_MODE ,
  VSF_I2C_CTRL_SLAVE_GET_ADDRESS ,
  VSF_I2C_CTRL_SLAVE_GET_ADDRESS ,
  VSF_I2C_CTRL_SLAVE_SET_ADDRESS ,
  VSF_I2C_CTRL_SLAVE_SET_ADDRESS
}
 

Functions

vsf_err_t vsf_dw_apb_i2c_init (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, vsf_i2c_cfg_t *cfg_ptr, uint_fast32_t ic_clk_hz)
 
void vsf_dw_apb_i2c_fini (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
fsm_rt_t vsf_dw_apb_i2c_enable (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
fsm_rt_t vsf_dw_apb_i2c_disable (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
vsf_i2c_irq_mask_t vsf_dw_apb_i2c_irq_enable (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 
vsf_i2c_irq_mask_t vsf_dw_apb_i2c_irq_disable (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
 
vsf_i2c_status_t vsf_dw_apb_i2c_status (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
void vsf_dw_apb_i2c_isrhandler (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
void vsf_dw_apb_i2c_master_fifo_transfer (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint_fast16_t count, uint8_t *buffer_ptr, vsf_i2c_cmd_t *cur_cmd_ptr, uint_fast16_t *offset_ptr)
 
uint_fast16_t vsf_dw_apb_i2c_slave_fifo_transfer (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, bool transmit_or_receive, uint_fast16_t count, uint8_t *buffer_ptr)
 
vsf_err_t vsf_dw_apb_i2c_master_request (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint_fast16_t count, uint8_t *buffer)
 
vsf_err_t vsf_dw_apb_i2c_slave_request (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, bool transmit_or_receive, uint_fast16_t count, uint8_t *buffer_ptr)
 
uint_fast32_t vsf_dw_apb_i2c_master_get_transferred_count (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
uint_fast32_t vsf_dw_apb_i2c_slave_get_transferred_count (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
vsf_err_t vsf_dw_apb_i2c_ctrl (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param)
 
vsf_i2c_capability_t vsf_dw_apb_i2c_capability (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 
void vsf_dw_apb_i2c_irqhandler (vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
 

Macro Definition Documentation

◆ VSF_DW_APB_I2C_CFG_MULTI_CLASS

#define VSF_DW_APB_I2C_CFG_MULTI_CLASS   VSF_I2C_CFG_MULTI_CLASS

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE   ENABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD   ENABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK   ENABLED

◆ VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL

#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL   ENABLED

◆ VSF_I2C_CTRL_GET_MODE

#define VSF_I2C_CTRL_GET_MODE   VSF_I2C_CTRL_GET_MODE

◆ VSF_I2C_CTRL_SET_MODE

#define VSF_I2C_CTRL_SET_MODE   VSF_I2C_CTRL_SET_MODE

◆ VSF_I2C_CTRL_SLAVE_GET_ADDRESS

#define VSF_I2C_CTRL_SLAVE_GET_ADDRESS   VSF_I2C_CTRL_SLAVE_GET_ADDRESS

◆ VSF_I2C_CTRL_SLAVE_SET_ADDRESS

#define VSF_I2C_CTRL_SLAVE_SET_ADDRESS   VSF_I2C_CTRL_SLAVE_SET_ADDRESS

Typedef Documentation

◆ vsf_i2c_mode_t

◆ vsf_i2c_cmd_t

◆ vsf_i2c_irq_mask_t

◆ vsf_i2c_ctrl_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 
__VSF_DW_APB_I2C_MODE_MASK 

◆ vsf_i2c_cmd_t

Enumerator
VSF_I2C_CMD_WRITE 
VSF_I2C_CMD_READ 
VSF_I2C_CMD_START 
VSF_I2C_CMD_RESTART 
VSF_I2C_CMD_STOP 
VSF_I2C_CMD_7_BITS 
VSF_I2C_CMD_10_BITS 
__VSF_DW_APB_I2C_CMD_MASK 
VSF_I2C_CMD_NO_START 
VSF_I2C_CMD_NO_STOP_RESTART 

◆ vsf_i2c_irq_mask_t

Enumerator
VSF_I2C_IRQ_MASK_RX_UNDER 
VSF_I2C_IRQ_MASK_RX_OVER 
VSF_I2C_IRQ_MASK_RX_FULL 
VSF_I2C_IRQ_MASK_TX_OVER 
VSF_I2C_IRQ_MASK_TX_EMPTY 
VSF_I2C_IRQ_MASK_SLAVE_RD_REQ 
VSF_I2C_IRQ_MASK_TX_ABORT 
VSF_I2C_IRQ_MASK_RX_DONE 
VSF_I2C_IRQ_MASK_ACTIVITY 
VSF_I2C_IRQ_MASK_STOP_DET 
VSF_I2C_IRQ_MASK_START_DET 
VSF_I2C_IRQ_MASK_GEN_CALL 
VSF_I2C_IRQ_MASK_RESTART_DET 
VSF_I2C_IRQ_MASK_MST_ON_HOLD 
VSF_I2C_IRQ_MASK_SCL_STUCK_AT_LOW 
VSF_I2C_IRQ_MASK_MASTER_TX 
VSF_I2C_IRQ_MASK_MASTER_RX 
VSF_I2C_IRQ_MASK_MASTER_START_OR_RESTART_DETECT 
VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT 
VSF_I2C_IRQ_MASK_SLAVE_TX 
__VSF_DW_APB_I2C_SLAVE_OFFSET 
VSF_I2C_IRQ_MASK_SLAVE_RX 
VSF_I2C_IRQ_MASK_SLAVE_STOP_DETECT 
VSF_I2C_IRQ_MASK_SLAVE_START_OR_RESTART_DETECT 
VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE 
VSF_I2C_IRQ_MASK_SLAVE_TRANSFER_COMPLETE 
VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK 
VSF_I2C_IRQ_MASK_MASTER_TX_NACK_DETECT 
VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST 
VSF_I2C_IRQ_MASK_MASTER_ERR 
VSF_I2C_IRQ_MASK_SLAVE_ERR 
VSF_DW_APB_I2C_IRQ_MASK_ALL 
__VSF_DW_APB_I2C_SLAVE_IRQ_MASK 
__VSF_DW_APB_I2C_IRQ_MASK 
__VSF_DW_APB_I2C_ERROR_MASK 

◆ vsf_i2c_ctrl_t

Enumerator
VSF_I2C_CTRL_GET_MODE 
VSF_I2C_CTRL_GET_MODE 
VSF_I2C_CTRL_SET_MODE 
VSF_I2C_CTRL_SET_MODE 
VSF_I2C_CTRL_SLAVE_GET_ADDRESS 
VSF_I2C_CTRL_SLAVE_GET_ADDRESS 
VSF_I2C_CTRL_SLAVE_SET_ADDRESS 
VSF_I2C_CTRL_SLAVE_SET_ADDRESS 

Function Documentation

◆ vsf_dw_apb_i2c_init()

vsf_err_t vsf_dw_apb_i2c_init ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
vsf_i2c_cfg_t cfg_ptr,
uint_fast32_t  ic_clk_hz 
)
extern

◆ vsf_dw_apb_i2c_fini()

void vsf_dw_apb_i2c_fini ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_enable()

fsm_rt_t vsf_dw_apb_i2c_enable ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_disable()

fsm_rt_t vsf_dw_apb_i2c_disable ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_irq_enable()

vsf_i2c_irq_mask_t vsf_dw_apb_i2c_irq_enable ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)
extern

◆ vsf_dw_apb_i2c_irq_disable()

vsf_i2c_irq_mask_t vsf_dw_apb_i2c_irq_disable ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
vsf_i2c_irq_mask_t  irq_mask 
)
extern

◆ vsf_dw_apb_i2c_status()

vsf_i2c_status_t vsf_dw_apb_i2c_status ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_isrhandler()

void vsf_dw_apb_i2c_isrhandler ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_master_fifo_transfer()

void vsf_dw_apb_i2c_master_fifo_transfer ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
uint16_t  address,
vsf_i2c_cmd_t  cmd,
uint_fast16_t  count,
uint8_t buffer_ptr,
vsf_i2c_cmd_t cur_cmd_ptr,
uint_fast16_t offset_ptr 
)
extern

◆ vsf_dw_apb_i2c_slave_fifo_transfer()

uint_fast16_t vsf_dw_apb_i2c_slave_fifo_transfer ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
bool  transmit_or_receive,
uint_fast16_t  count,
uint8_t buffer_ptr 
)
extern

◆ vsf_dw_apb_i2c_master_request()

vsf_err_t vsf_dw_apb_i2c_master_request ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
uint16_t  address,
vsf_i2c_cmd_t  cmd,
uint_fast16_t  count,
uint8_t buffer 
)
extern

◆ vsf_dw_apb_i2c_slave_request()

vsf_err_t vsf_dw_apb_i2c_slave_request ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
bool  transmit_or_receive,
uint_fast16_t  count,
uint8_t buffer_ptr 
)
extern

◆ vsf_dw_apb_i2c_master_get_transferred_count()

uint_fast32_t vsf_dw_apb_i2c_master_get_transferred_count ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_slave_get_transferred_count()

uint_fast32_t vsf_dw_apb_i2c_slave_get_transferred_count ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_ctrl()

vsf_err_t vsf_dw_apb_i2c_ctrl ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr,
vsf_i2c_ctrl_t  ctrl,
void *  param 
)
extern

◆ vsf_dw_apb_i2c_capability()

vsf_i2c_capability_t vsf_dw_apb_i2c_capability ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern

◆ vsf_dw_apb_i2c_irqhandler()

void vsf_dw_apb_i2c_irqhandler ( vsf_dw_apb_i2c_t dw_apb_i2c_ptr)
extern
Generated from commit: vsfteam/vsf@2b286be