18#ifndef __HAL_DRIVER_DW_APB_I2C_H__
19#define __HAL_DRIVER_DW_APB_I2C_H__
25#if VSF_HAL_USE_I2C == ENABLED
29#if defined(__VSF_HAL_DW_APB_I2C_CLASS_IMPLEMENT)
30# define __VSF_CLASS_IMPLEMENT__
31#elif defined(__VSF_HAL_DW_APB_I2C_CLASS_INHERIT__)
32# define __VSF_CLASS_INHERIT__
43#ifndef VSF_DW_APB_I2C_CFG_MULTI_CLASS
44# define VSF_DW_APB_I2C_CFG_MULTI_CLASS VSF_I2C_CFG_MULTI_CLASS
47#define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE ENABLED
48#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD ENABLED
49#define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK ENABLED
50#define VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL ENABLED
171 #define VSF_I2C_CTRL_GET_MODE VSF_I2C_CTRL_GET_MODE
174 #define VSF_I2C_CTRL_SET_MODE VSF_I2C_CTRL_SET_MODE
177 #define VSF_I2C_CTRL_SLAVE_GET_ADDRESS VSF_I2C_CTRL_SLAVE_GET_ADDRESS
180 #define VSF_I2C_CTRL_SLAVE_SET_ADDRESS VSF_I2C_CTRL_SLAVE_SET_ADDRESS
193#if VSF_DW_APB_I2C_CFG_MULTI_CLASS == ENABLED
vsf_err_t
Definition __type.h:42
Definition vsf_dw_apb_i2c.h:192
vsf_i2c_cmd_t
Definition i2c.h:32
#define vsf_class(__name)
Definition ooc_class.h:48
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 short uint_fast16_t
Definition stdint.h:25
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_dw_apb_i2c_reg.h:62
Predefined I2C capability structure that can be reimplemented in specific HAL drivers.
Definition vsf_template_i2c.h:777
I2C configuration.
Definition vsf_template_i2c.h:881
I2C interrupt configuration.
Definition vsf_template_i2c.h:860
Predefined VSF I2C status that can be reimplemented in specific hal drivers.
Definition vsf_template_i2c.h:757
I2C instance structure for multi-class support.
Definition vsf_template_i2c.h:976
vsf_adc_isr_t isr
Definition adc.h:109
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)
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_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)
#define VSF_I2C_CTRL_SLAVE_GET_ADDRESS
Definition vsf_dw_apb_i2c.h:177
vsf_i2c_mode_t
Definition vsf_dw_apb_i2c.h:55
@ __VSF_DW_APB_I2C_MODE_MASK
Definition vsf_dw_apb_i2c.h:68
@ VSF_I2C_MODE_MASTER
Definition vsf_dw_apb_i2c.h:56
@ VSF_I2C_SPEED_HIGH_SPEED_MODE
Definition vsf_dw_apb_i2c.h:63
@ VSF_I2C_MODE_SLAVE
Definition vsf_dw_apb_i2c.h:57
@ VSF_I2C_SPEED_STANDARD_MODE
Definition vsf_dw_apb_i2c.h:60
@ VSF_I2C_ADDR_7_BITS
Definition vsf_dw_apb_i2c.h:65
@ VSF_I2C_SPEED_FAST_MODE_PLUS
Definition vsf_dw_apb_i2c.h:62
@ VSF_I2C_SPEED_FAST_MODE
Definition vsf_dw_apb_i2c.h:61
@ VSF_I2C_ADDR_10_BITS
Definition vsf_dw_apb_i2c.h:66
vsf_i2c_capability_t vsf_dw_apb_i2c_capability(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_status_t vsf_dw_apb_i2c_status(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
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)
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)
uint_fast32_t vsf_dw_apb_i2c_slave_get_transferred_count(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
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)
void vsf_dw_apb_i2c_irqhandler(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
vsf_i2c_cmd_t
Definition vsf_dw_apb_i2c.h:73
@ VSF_I2C_CMD_10_BITS
Definition vsf_dw_apb_i2c.h:82
@ VSF_I2C_CMD_7_BITS
Definition vsf_dw_apb_i2c.h:81
@ VSF_I2C_CMD_NO_START
Definition vsf_dw_apb_i2c.h:89
@ VSF_I2C_CMD_STOP
Definition vsf_dw_apb_i2c.h:79
@ VSF_I2C_CMD_NO_STOP_RESTART
Definition vsf_dw_apb_i2c.h:90
@ __VSF_DW_APB_I2C_CMD_MASK
Definition vsf_dw_apb_i2c.h:84
@ VSF_I2C_CMD_RESTART
Definition vsf_dw_apb_i2c.h:78
@ VSF_I2C_CMD_WRITE
Definition vsf_dw_apb_i2c.h:74
@ VSF_I2C_CMD_READ
Definition vsf_dw_apb_i2c.h:75
@ VSF_I2C_CMD_START
Definition vsf_dw_apb_i2c.h:77
vsf_i2c_ctrl_t
Definition vsf_dw_apb_i2c.h:169
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)
#define VSF_I2C_CTRL_GET_MODE
Definition vsf_dw_apb_i2c.h:171
#define VSF_I2C_CTRL_SET_MODE
Definition vsf_dw_apb_i2c.h:174
vsf_i2c_irq_mask_t
Definition vsf_dw_apb_i2c.h:93
@ __VSF_DW_APB_I2C_SLAVE_OFFSET
Definition vsf_dw_apb_i2c.h:121
@ VSF_I2C_IRQ_MASK_RX_FULL
Definition vsf_dw_apb_i2c.h:97
@ VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT
Definition vsf_dw_apb_i2c.h:117
@ VSF_I2C_IRQ_MASK_RX_DONE
Definition vsf_dw_apb_i2c.h:102
@ VSF_I2C_IRQ_MASK_TX_EMPTY
Definition vsf_dw_apb_i2c.h:99
@ VSF_DW_APB_I2C_IRQ_MASK_ALL
Definition vsf_dw_apb_i2c.h:146
@ VSF_I2C_IRQ_MASK_SLAVE_TX
Definition vsf_dw_apb_i2c.h:120
@ VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE
Definition vsf_dw_apb_i2c.h:133
@ VSF_I2C_IRQ_MASK_SLAVE_START_OR_RESTART_DETECT
Definition vsf_dw_apb_i2c.h:129
@ VSF_I2C_IRQ_MASK_MASTER_TX
Definition vsf_dw_apb_i2c.h:112
@ VSF_I2C_IRQ_MASK_GEN_CALL
Definition vsf_dw_apb_i2c.h:106
@ __VSF_DW_APB_I2C_ERROR_MASK
Definition vsf_dw_apb_i2c.h:163
@ VSF_I2C_IRQ_MASK_TX_ABORT
Definition vsf_dw_apb_i2c.h:101
@ VSF_I2C_IRQ_MASK_MASTER_ERR
Definition vsf_dw_apb_i2c.h:143
@ VSF_I2C_IRQ_MASK_TX_OVER
Definition vsf_dw_apb_i2c.h:98
@ VSF_I2C_IRQ_MASK_RX_UNDER
Definition vsf_dw_apb_i2c.h:95
@ VSF_I2C_IRQ_MASK_RX_OVER
Definition vsf_dw_apb_i2c.h:96
@ VSF_I2C_IRQ_MASK_MASTER_RX
Definition vsf_dw_apb_i2c.h:114
@ VSF_I2C_IRQ_MASK_START_DET
Definition vsf_dw_apb_i2c.h:105
@ VSF_I2C_IRQ_MASK_SCL_STUCK_AT_LOW
Definition vsf_dw_apb_i2c.h:109
@ VSF_I2C_IRQ_MASK_STOP_DET
Definition vsf_dw_apb_i2c.h:104
@ VSF_I2C_IRQ_MASK_SLAVE_TRANSFER_COMPLETE
Definition vsf_dw_apb_i2c.h:134
@ VSF_I2C_IRQ_MASK_MST_ON_HOLD
Definition vsf_dw_apb_i2c.h:108
@ VSF_I2C_IRQ_MASK_SLAVE_RD_REQ
Definition vsf_dw_apb_i2c.h:100
@ VSF_I2C_IRQ_MASK_RESTART_DET
Definition vsf_dw_apb_i2c.h:107
@ __VSF_DW_APB_I2C_IRQ_MASK
Definition vsf_dw_apb_i2c.h:162
@ VSF_I2C_IRQ_MASK_MASTER_START_OR_RESTART_DETECT
Definition vsf_dw_apb_i2c.h:115
@ VSF_I2C_IRQ_MASK_ACTIVITY
Definition vsf_dw_apb_i2c.h:103
@ VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK
Definition vsf_dw_apb_i2c.h:137
@ VSF_I2C_IRQ_MASK_SLAVE_ERR
Definition vsf_dw_apb_i2c.h:144
@ VSF_I2C_IRQ_MASK_SLAVE_STOP_DETECT
Definition vsf_dw_apb_i2c.h:127
@ VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST
Definition vsf_dw_apb_i2c.h:141
@ __VSF_DW_APB_I2C_SLAVE_IRQ_MASK
Definition vsf_dw_apb_i2c.h:159
@ VSF_I2C_IRQ_MASK_MASTER_TX_NACK_DETECT
Definition vsf_dw_apb_i2c.h:139
@ VSF_I2C_IRQ_MASK_SLAVE_RX
Definition vsf_dw_apb_i2c.h:125
vsf_err_t vsf_dw_apb_i2c_ctrl(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param)
void vsf_dw_apb_i2c_isrhandler(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
uint_fast32_t vsf_dw_apb_i2c_master_get_transferred_count(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
#define VSF_I2C_CTRL_SLAVE_SET_ADDRESS
Definition vsf_dw_apb_i2c.h:180
void vsf_dw_apb_i2c_fini(vsf_dw_apb_i2c_t *dw_apb_i2c_ptr)
fsm_rt_t
Definition vsf_fsm.h:315
vsf_i2c_mode_t
Predefined VSF I2C modes that can be reimplemented in specific HAL drivers.If we want to add optional...
Definition vsf_template_i2c.h:237
vsf_i2c_ctrl_t
I2C control commands for hardware-specific operations.
Definition vsf_template_i2c.h:909
vsf_i2c_irq_mask_t
Predefined VSF I2C interrupt masks that can be reimplemented in specific HAL drivers....
Definition vsf_template_i2c.h:537