19 #ifndef FLEXIO_I2C_DRIVER_H
20 #define FLEXIO_I2C_DRIVER_H
68 #define FLEXIO_I2C_MAX_SIZE (((uint32_t)((0xFFU - 1U) / 18U)) - 1U)
73 #define FLEXIO_I2C_DMA_TX_CHAIN_LENGTH (1U)
76 #define FLEXIO_I2C_DMA_RX_CHAIN_LENGTH (5U)
79 #define FLEXIO_I2C_DMA_BUF_SIZE (STCD_SIZE(FLEXIO_I2C_DMA_TX_CHAIN_LENGTH + FLEXIO_I2C_DMA_RX_CHAIN_LENGTH + 1U))
121 flexio_common_state_t flexioCommon;
123 uint32_t txRemainingBytes;
124 uint32_t rxRemainingBytes;
125 uint8_t rxDMAChannel;
126 uint8_t txDMAChannel;
129 uint16_t slaveAddress;
135 semaphore_t idleSemaphore;
140 uint8_t dummyDmaIdle;
141 uint8_t dummyDmaStop;
142 uint8_t dummyDmaReceive;
143 uint8_t dmaReceiveTxStop0;
144 uint8_t dmaReceiveTxStop1;
145 uint8_t dmaReceiveRxStop1;
146 uint8_t stcd[FLEXIO_I2C_DMA_BUF_SIZE];
159 #if defined(__cplusplus)
256 const uint8_t * txBuff,
276 const uint8_t * txBuff,
353 #if defined(__cplusplus)
i2c_master_callback_t callback
status_t FLEXIO_I2C_DRV_MasterInit(uint32_t instance, const flexio_i2c_master_user_config_t *userConfigPtr, flexio_i2c_master_state_t *master)
Initialize the FLEXIO_I2C master mode driver.
status_t FLEXIO_I2C_DRV_MasterGetBaudRate(flexio_i2c_master_state_t *master, uint32_t *baudRate)
Get the currently configured baud rate.
flexio_driver_type_t driverType
void(* i2c_master_callback_t)(i2c_master_event_t event, void *userData)
status_t FLEXIO_I2C_DRV_MasterSetSlaveAddr(flexio_i2c_master_state_t *master, const uint16_t address)
Set the slave address for any subsequent I2C communication.
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
status_t FLEXIO_I2C_DRV_MasterDeinit(flexio_i2c_master_state_t *master)
De-initialize the FLEXIO_I2C master mode driver.
status_t FLEXIO_I2C_DRV_MasterSetBaudRate(flexio_i2c_master_state_t *master, uint32_t baudRate)
Set the baud rate for any subsequent I2C communication.
flexio_driver_type_t
Driver type: interrupts/polling/DMA Implements : flexio_driver_type_t_Class.
Master internal context structure.
Master configuration structure.
status_t FLEXIO_I2C_DRV_MasterSendDataBlocking(flexio_i2c_master_state_t *master, const uint8_t *txBuff, uint32_t txSize, bool sendStop, uint32_t timeout)
Perform a blocking send transaction on the I2C bus.
status_t FLEXIO_I2C_DRV_MasterReceiveDataBlocking(flexio_i2c_master_state_t *master, uint8_t *rxBuff, uint32_t rxSize, bool sendStop, uint32_t timeout)
Perform a blocking receive transaction on the I2C bus.
status_t FLEXIO_I2C_DRV_MasterTransferAbort(flexio_i2c_master_state_t *master)
Aborts a non-blocking I2C master transaction.
status_t FLEXIO_I2C_DRV_MasterReceiveData(flexio_i2c_master_state_t *master, uint8_t *rxBuff, uint32_t rxSize, bool sendStop)
Perform a non-blocking receive transaction on the I2C bus.
status_t FLEXIO_I2C_DRV_MasterGetStatus(flexio_i2c_master_state_t *master, uint32_t *bytesRemaining)
Get the status of the current non-blocking I2C master transaction.
status_t FLEXIO_I2C_DRV_MasterSendData(flexio_i2c_master_state_t *master, const uint8_t *txBuff, uint32_t txSize, bool sendStop)
Perform a non-blocking send transaction on the I2C bus.