18#ifndef __VSF_TEMPLATE_I2C_H__
19#define __VSF_TEMPLATE_I2C_H__
38#ifndef VSF_I2C_CFG_MULTI_CLASS
39# define VSF_I2C_CFG_MULTI_CLASS ENABLED
50#if defined(VSF_HW_I2C_COUNT) && !defined(VSF_HW_I2C_MASK)
51# define VSF_HW_I2C_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_I2C_COUNT)
62#if !defined(VSF_HW_I2C_COUNT) && defined(VSF_HW_I2C_MASK)
63# define VSF_HW_I2C_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_I2C_MASK)
76#ifndef VSF_I2C_CFG_PREFIX
77# if VSF_I2C_CFG_MULTI_CLASS == ENABLED
78# define VSF_I2C_CFG_PREFIX vsf
79# elif defined(VSF_HW_I2C_COUNT) && (VSF_HW_I2C_COUNT != 0)
80# define VSF_I2C_CFG_PREFIX vsf_hw
82# define VSF_I2C_CFG_PREFIX vsf
94#ifndef VSF_I2C_CFG_FUNCTION_RENAME
95# define VSF_I2C_CFG_FUNCTION_RENAME ENABLED
106#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE
107# define VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE DISABLED
118#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD
119# define VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD DISABLED
130#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK
131# define VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
144#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS
145# define VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
158#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL
159# define VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
173#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG
174# define VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG DISABLED
186#ifndef VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY
187# define VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
198#ifndef VSF_I2C_CFG_INHERIT_HAL_CAPABILITY
199# define VSF_I2C_CFG_INHERIT_HAL_CAPABILITY ENABLED
210#define VSF_I2C_APIS(__prefix_name) \
211 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2c, init, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
212 __VSF_HAL_TEMPLATE_API(__prefix_name, void, i2c, fini, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
213 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2c, get_configuration, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
214 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2c, enable, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
215 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2c, disable, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
216 __VSF_HAL_TEMPLATE_API(__prefix_name, void, i2c, irq_enable, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
217 __VSF_HAL_TEMPLATE_API(__prefix_name, void, i2c, irq_disable, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
218 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2c_status_t, i2c, status, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
219 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2c_capability_t, i2c, capability, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
220 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2c, master_fifo_transfer, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, uint16_t address, \
221 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) \
222 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2c, master_request, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, uint16_t address, \
223 vsf_i2c_cmd_t cmd, uint_fast16_t count, uint8_t* buffer_ptr) \
224 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast16_t, i2c, master_get_transferred_count, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
225 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast16_t, i2c, slave_fifo_transfer, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, bool transmit_or_receive, \
226 uint_fast16_t count, uint8_t* buffer_ptr) \
227 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2c, slave_request, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, bool transmit_or_receive, \
228 uint_fast16_t count, uint8_t* buffer_ptr) \
229 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast16_t, i2c, slave_get_transferred_count, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr) \
230 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2c, ctrl, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_ctrl_t ctrl, void* param) \
231 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2c_irq_mask_t, i2c, irq_clear, VSF_MCONNECT(__prefix_name, _t) *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
251#if VSF_I2C_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
398#if VSF_I2C_CFG_REIMPLEMENT_TYPE_CMD == DISABLED
554#ifndef VSF_I2C_CMD_ALL_BITS_MASK
596#if VSF_I2C_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
782#ifndef VSF_I2C_IRQ_MASK_MASTER_ERR
796#ifndef VSF_I2C_IRQ_MASK_SLAVE_ERR
808#ifndef VSF_I2C_IRQ_MASK_ERR
813#ifndef VSF_I2C_IRQ_ALL_BITS_MASK
830#if VSF_I2C_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
848#if VSF_I2C_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
858#if VSF_I2C_CFG_INHERIT_HAL_CAPABILITY == ENABLED
887#if VSF_I2C_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
980#if VSF_I2C_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
993 VSF_I2C_CTRL_MASTER_ABORT = (0x1ul << 3),
994 #define VSF_I2C_CTRL_MASTER_ABORT VSF_I2C_CTRL_MASTER_ABORT
1000 VSF_I2C_CTRL_SLAVE_ABORT = (0x1ul << 4),
1001 #define VSF_I2C_CTRL_SLAVE_ABORT VSF_I2C_CTRL_SLAVE_ABORT
1007 VSF_I2C_CTRL_ANALOG_FILTER_ENABLE = (0x0ul << 5),
1010 VSF_I2C_CTRL_ANALOG_FILTER_DISABLE = (0x1ul << 5),
1011 #define VSF_I2C_CTRL_ANALOG_FILTER_ENABLE VSF_I2C_CTRL_ANALOG_FILTER_ENABLE
1012 #define VSF_I2C_CTRL_ANALOG_FILTER_DISABLE VSF_I2C_CTRL_ANALOG_FILTER_DISABLE
1018 VSF_I2C_CTRL_DIGITAL_FILTER_ENABLE = (0x0ul << 7),
1021 VSF_I2C_CTRL_DIGITAL_FILTER_DISABLE = (0x1ul << 7),
1022 #define VSF_I2C_CTRL_DIGITAL_FILTER_ENABLE VSF_I2C_CTRL_DIGITAL_FILTER_ENABLE
1023 #define VSF_I2C_CTRL_DIGITAL_FILTER_DISABLE VSF_I2C_CTRL_DIGITAL_FILTER_DISABLE
1042#undef __VSF_HAL_TEMPLATE_API
1043#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
1049#if VSF_I2C_CFG_MULTI_CLASS == ENABLED
1267 bool transmit_or_receive,
1314 bool transmit_or_receive,
1402#if VSF_I2C_CFG_FUNCTION_RENAME == ENABLED
1403# define __vsf_i2c_t VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_t)
1404# define vsf_i2c_init(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_init) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1405# define vsf_i2c_fini(__I2C) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_fini) ((__vsf_i2c_t *)(__I2C))
1406# define vsf_i2c_get_configuration(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_get_configuration) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1407# define vsf_i2c_enable(__I2C) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_enable) ((__vsf_i2c_t *)(__I2C))
1408# define vsf_i2c_disable(__I2C) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_disable) ((__vsf_i2c_t *)(__I2C))
1409# define vsf_i2c_irq_enable(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_enable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1410# define vsf_i2c_irq_disable(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_disable) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1411# define vsf_i2c_irq_clear(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_irq_clear) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1412# define vsf_i2c_status(__I2C) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_status) ((__vsf_i2c_t *)(__I2C))
1413# define vsf_i2c_capability(__I2C) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_capability) ((__vsf_i2c_t *)(__I2C))
1414# define vsf_i2c_master_fifo_transfer(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_master_fifo_transfer) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1415# define vsf_i2c_master_request(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_master_request) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1416# define vsf_i2c_master_get_transferred_count(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_master_get_transferred_count) ((__vsf_i2c_t *)(__I2C))
1417# define vsf_i2c_slave_fifo_transfer(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_slave_fifo_transfer) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1418# define vsf_i2c_slave_request(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_slave_request) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
1419# define vsf_i2c_slave_get_transferred_count(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_slave_get_transferred_count) ((__vsf_i2c_t *)(__I2C))
1420# define vsf_i2c_ctrl(__I2C, ...) VSF_MCONNECT(VSF_I2C_CFG_PREFIX, _i2c_ctrl) ((__vsf_i2c_t *)(__I2C), ##__VA_ARGS__)
vsf_err_t
Definition __type.h:42
vsf_arch_prio_t
Definition cortex_a_generic.h:88
vsf_i2c_cmd_t
Definition i2c.h:32
vsf_i2c_irq_mask_t
Definition i2c.h:103
vsf_i2c_mode_t
Definition i2c.h:116
vsf_i2c_irq_mask_t
Definition i2c.h:154
void vsf_i2c_isr_handler_t(void *target_ptr, vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
Definition i2c.h:197
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 uint32_t
Definition stdint.h:9
unsigned short uint_fast16_t
Definition stdint.h:25
unsigned char uint8_t
Definition stdint.h:5
Predefined I2C capability structure that can be reimplemented in specific HAL drivers.
Definition vsf_template_i2c.h:857
uint8_t support_restart
Definition vsf_template_i2c.h:875
uint8_t support_no_stop
Definition vsf_template_i2c.h:871
inherit(vsf_peripheral_capability_t) vsf_i2c_irq_mask_t irq_mask
uint_fast16_t max_transfer_size
Definition vsf_template_i2c.h:879
uint_fast16_t min_transfer_size
Definition vsf_template_i2c.h:883
uint8_t support_no_start
Definition vsf_template_i2c.h:867
I2C configuration.
Definition vsf_template_i2c.h:961
vsf_i2c_mode_t mode
Definition vsf_template_i2c.h:964
uint_fast16_t slave_addr
Definition vsf_template_i2c.h:976
vsf_i2c_isr_t isr
Definition vsf_template_i2c.h:972
uint32_t clock_hz
Definition vsf_template_i2c.h:968
I2C interrupt configuration.
Definition vsf_template_i2c.h:940
vsf_i2c_isr_handler_t * handler_fn
Definition vsf_template_i2c.h:943
void * target_ptr
Definition vsf_template_i2c.h:947
vsf_arch_prio_t prio
Definition vsf_template_i2c.h:951
I2C operation function pointers for multi-class support.
Definition vsf_template_i2c.h:1040
Predefined VSF I2C status that can be reimplemented in specific hal drivers.
Definition vsf_template_i2c.h:837
uint32_t value
Definition vsf_template_i2c.h:843
I2C instance structure for multi-class support.
Definition vsf_template_i2c.h:1056
const vsf_i2c_op_t * op
Definition vsf_template_i2c.h:1059
Definition vsf_template_hal_driver.h:204
Definition vsf_template_hal_driver.h:197
fsm_rt_t
Definition vsf_fsm.h:315
void vsf_i2c_irq_disable(vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
I2C instance disables interrupts.
Definition i2c_common.c:92
struct vsf_i2c_cfg_t vsf_i2c_cfg_t
I2C configuration.
struct vsf_i2c_status_t vsf_i2c_status_t
Predefined VSF I2C status that can be reimplemented in specific hal drivers.
fsm_rt_t vsf_i2c_disable(vsf_i2c_t *i2c_ptr)
Disable a I2C instance.
Definition i2c_common.c:74
@ VSF_I2C_MODE_MASK
Mask for master/slave mode selection. Extracts VSF_I2C_MODE_MASTER and VSF_I2C_MODE_SLAVE bits.
Definition vsf_template_i2c.h:352
@ VSF_I2C_ADDR_MASK
Mask for I2C address mode selection. Extracts VSF_I2C_ADDR_7_BITS and VSF_I2C_ADDR_10_BITS bits.
Definition vsf_template_i2c.h:376
@ VSF_I2C_MODE_ALL_BITS_MASK
Combined mask for all I2C mode configuration bits. Includes mode, speed, and address mode masks.
Definition vsf_template_i2c.h:387
@ VSF_I2C_SPEED_MASK
Mask for I2C speed mode configuration. Extracts all speed mode bits (standard, fast,...
Definition vsf_template_i2c.h:363
uint_fast16_t vsf_i2c_slave_get_transferred_count(vsf_i2c_t *i2c_ptr)
get the counter of transfers for current request by the I2C slave
Definition i2c_common.c:187
vsf_i2c_capability_t vsf_i2c_capability(vsf_i2c_t *i2c_ptr)
Get the capabilities of I2C instance.
Definition i2c_common.c:119
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:252
@ VSF_I2C_MODE_MASTER
Select master mode for I2C operation. The device initiates and controls the I2C bus communication.
Definition vsf_template_i2c.h:261
@ VSF_I2C_SPEED_HIGH_SPEED_MODE
High speed mode, up to 3.4 Mbit/s. Highest specified I2C speed for performance-critical applications.
Definition vsf_template_i2c.h:311
@ VSF_I2C_MODE_SLAVE
Select slave mode for I2C operation. The device responds to I2C bus commands from master devices.
Definition vsf_template_i2c.h:271
@ VSF_I2C_SPEED_STANDARD_MODE
Standard mode, up to 100 kbit/s. The lowest I2C speed specification, compatible with most devices.
Definition vsf_template_i2c.h:281
@ VSF_I2C_ADDR_7_BITS
7-bit address mode. Standard addressing mode supporting up to 128 unique devices.
Definition vsf_template_i2c.h:321
@ VSF_I2C_SPEED_FAST_MODE_PLUS
Fast mode plus, up to 1 Mbit/s. Enhanced fast mode for higher throughput applications.
Definition vsf_template_i2c.h:301
@ VSF_I2C_SPEED_FAST_MODE
Fast mode, up to 400 kbit/s. Commonly used medium speed I2C mode.
Definition vsf_template_i2c.h:291
@ VSF_I2C_ADDR_10_BITS
10-bit address mode. Extended addressing mode supporting up to 1024 unique devices.
Definition vsf_template_i2c.h:331
vsf_err_t vsf_i2c_ctrl(vsf_i2c_t *i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param)
Calls the specified I2C command.
Definition i2c_common.c:196
@ VSF_I2C_CMD_RW_MASK
Mask for read/write command selection. Extracts VSF_I2C_CMD_WRITE and VSF_I2C_CMD_READ bits.
Definition vsf_template_i2c.h:533
@ VSF_I2C_CMD_BITS_MASK
Mask for I2C address bits configuration. Extracts VSF_I2C_CMD_7_BITS and VSF_I2C_CMD_10_BITS bits.
Definition vsf_template_i2c.h:543
@ VSF_I2C_CMD_ALL_BITS_MASK
Combined mask for all I2C command bits. Includes read/write, start/stop/restart, no_start/no_stop/no_...
Definition vsf_template_i2c.h:555
struct vsf_i2c_capability_t vsf_i2c_capability_t
Predefined I2C capability structure that can be reimplemented in specific HAL drivers.
struct vsf_i2c_isr_t vsf_i2c_isr_t
I2C interrupt configuration.
vsf_i2c_status_t vsf_i2c_status(vsf_i2c_t *i2c_ptr)
Get the status of I2C instance.
Definition i2c_common.c:110
uint_fast16_t vsf_i2c_master_get_transferred_count(vsf_i2c_t *i2c_ptr)
get the counter of transfers for current request by the I2C master
Definition i2c_common.c:178
vsf_err_t vsf_i2c_get_configuration(vsf_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr)
Get current configuration of a I2C instance.
Definition i2c_common.c:55
vsf_i2c_irq_mask_t vsf_i2c_irq_clear(vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
Clear interrupt flags of I2C instance and return previous state.
Definition i2c_common.c:101
vsf_err_t vsf_i2c_init(vsf_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr)
Initialize a I2C instance.
Definition i2c_common.c:37
vsf_i2c_cmd_t
Predefined VSF I2C commands that can be reimplemented in specific HAL drivers.
Definition vsf_template_i2c.h:399
@ VSF_I2C_CMD_NO_STOP
No stop condition command. Indicates that no STOP condition should be generated for this transfer....
Definition vsf_template_i2c.h:478
@ VSF_I2C_CMD_NO_RESTART
No restart condition command. Indicates that no RESTART condition should be generated for this transf...
Definition vsf_template_i2c.h:492
@ VSF_I2C_CMD_10_BITS
10-bit addressing mode command. Configures the I2C transaction to use 10-bit slave addressing.
Definition vsf_template_i2c.h:512
@ VSF_I2C_CMD_7_BITS
7-bit addressing mode command. Configures the I2C transaction to use 7-bit slave addressing.
Definition vsf_template_i2c.h:502
@ VSF_I2C_CMD_NO_START
No start condition command. Indicates that no START condition should be generated for this transfer....
Definition vsf_template_i2c.h:464
@ VSF_I2C_CMD_STOP
Stop condition command. Generates a STOP condition on the I2C bus to end the current transaction.
Definition vsf_template_i2c.h:438
@ VSF_I2C_CMD_RESTART
Restart condition command. Generates a repeated START condition without releasing the bus....
Definition vsf_template_i2c.h:450
@ VSF_I2C_CMD_WRITE
Write command for I2C data transfer. Used to write data on the I2C bus.
Definition vsf_template_i2c.h:408
@ VSF_I2C_CMD_READ
Read command for I2C data transfer. Used to read data from the I2C bus.
Definition vsf_template_i2c.h:418
@ VSF_I2C_CMD_START
Start condition command. Generates a START condition on the I2C bus to begin a new transaction.
Definition vsf_template_i2c.h:428
void vsf_i2c_fini(vsf_i2c_t *i2c_ptr)
Finalize a I2C instance.
Definition i2c_common.c:46
vsf_err_t vsf_i2c_slave_request(vsf_i2c_t *i2c_ptr, bool transmit_or_receive, uint_fast16_t count, uint8_t *buffer_ptr)
I2C instance as slave mode requests a transfer.
Definition i2c_common.c:167
vsf_err_t vsf_i2c_master_request(vsf_i2c_t *i2c_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint_fast16_t count, uint8_t *buffer_ptr)
I2C instance as master mode requests a transfer.
Definition i2c_common.c:155
vsf_i2c_ctrl_t
I2C control commands for hardware-specific operations.
Definition vsf_template_i2c.h:989
@ __VSF_I2C_CTRL_DUMMP
Definition vsf_template_i2c.h:1028
fsm_rt_t vsf_i2c_enable(vsf_i2c_t *i2c_ptr)
Enable a I2C instance.
Definition i2c_common.c:65
uint_fast16_t vsf_i2c_slave_fifo_transfer(vsf_i2c_t *i2c_ptr, bool transmit_or_receive, uint_fast16_t count, uint8_t *buffer_ptr)
I2C instance as slave mode performs a FIFO transfer.
Definition i2c_common.c:142
void vsf_i2c_irq_enable(vsf_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask)
I2C instance enables interrupts.
Definition i2c_common.c:83
vsf_i2c_irq_mask_t
Predefined VSF I2C interrupt masks that can be reimplemented in specific HAL drivers....
Definition vsf_template_i2c.h:597
@ VSF_I2C_IRQ_MASK_MASTER_STOP_DETECT
Master mode: STOP condition detection interrupt. Triggered when STOP condition is detected while in m...
Definition vsf_template_i2c.h:698
@ VSF_I2C_IRQ_MASK_SLAVE_TX
Slave mode: Transmit FIFO threshold interrupt. Triggered when transmit FIFO level falls below thresho...
Definition vsf_template_i2c.h:737
@ VSF_I2C_IRQ_MASK_MASTER_TRANSFER_COMPLETE
Master mode: Transfer completion interrupt. Triggered when the current transfer operation is complete...
Definition vsf_template_i2c.h:636
@ VSF_I2C_IRQ_MASK_SLAVE_START_OR_RESTART_DETECT
Slave mode: Repeated START condition detection interrupt. Triggered when repeated START condition is ...
Definition vsf_template_i2c.h:711
@ VSF_I2C_IRQ_MASK_MASTER_TX
Master mode: Transmit FIFO threshold interrupt. Triggered when transmit FIFO level falls below thresh...
Definition vsf_template_i2c.h:610
@ VSF_I2C_IRQ_MASK_MASTER_RX
Master mode: Receive FIFO threshold interrupt. Triggered when receive FIFO level exceeds threshold in...
Definition vsf_template_i2c.h:624
@ VSF_I2C_IRQ_MASK_SLAVE_TRANSFER_COMPLETE
Slave mode: Transfer completion interrupt. Triggered when the current transfer operation is completed...
Definition vsf_template_i2c.h:763
@ VSF_I2C_IRQ_MASK_MASTER_START_OR_RESTART_DETECT
Master mode: START or RESTART condition detection interrupt. Triggered when START or RESTART conditio...
Definition vsf_template_i2c.h:685
@ VSF_I2C_IRQ_MASK_MASTER_ADDRESS_NACK
Master mode: Address NACK detection interrupt. Triggered when a NACK is received after sending the ad...
Definition vsf_template_i2c.h:660
@ VSF_I2C_IRQ_MASK_SLAVE_STOP_DETECT
Slave mode: STOP condition detection interrupt. Triggered when STOP condition is detected while in sl...
Definition vsf_template_i2c.h:723
@ VSF_I2C_IRQ_MASK_MASTER_ARBITRATION_LOST
Master mode: Arbitration lost interrupt. Triggered when the master loses arbitration in multi-master ...
Definition vsf_template_i2c.h:648
@ VSF_I2C_IRQ_MASK_MASTER_TX_NACK_DETECT
Master mode: data transmit NACK detection interrupt. Triggered when a NACK is received during master ...
Definition vsf_template_i2c.h:672
@ VSF_I2C_IRQ_MASK_SLAVE_RX
Slave mode: Receive FIFO threshold interrupt. Triggered when receive FIFO level exceeds threshold in ...
Definition vsf_template_i2c.h:751
@ VSF_I2C_IRQ_ALL_BITS_MASK
Definition vsf_template_i2c.h:814
@ VSF_I2C_IRQ_MASK_MASTER_ERR
Combined master error interrupt mask. This mask includes all master mode error interrupts:
Definition vsf_template_i2c.h:783
@ VSF_I2C_IRQ_MASK_ERR
Combined error interrupt mask for both master and slave modes. This mask includes all error interrupt...
Definition vsf_template_i2c.h:809
@ VSF_I2C_IRQ_MASK_SLAVE_ERR
Combined slave error interrupt mask. This mask includes all slave mode error interrupts:
Definition vsf_template_i2c.h:797
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.
Definition vsf_template_i2c.h:929
fsm_rt_t vsf_i2c_master_fifo_transfer(vsf_i2c_t *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)
I2C instance as master mode performs a FIFO transfer.
Definition i2c_common.c:128
#define VSF_I2C_APIS(__prefix_name)
I2C API template, used to generate I2C type, specific prefix function declarations,...
Definition vsf_template_i2c.h:210