## CMSIS I2C Driver Data Structures Type Documentation

### _ARM_I2C_STATUS

Location: Driver_I2C.h:104

I2C Status.

Data Fields

Type | Name | Description
--- | --- | ---
uint32_t | busy | Busy flag.
uint32_t | mode | Mode: 0=Slave, 1=Master.
uint32_t | direction | Direction: 0=Transmitter, 1=Receiver.
uint32_t | general_call | General Call indication (cleared on start of next Slave operation)
uint32_t | arbitration_lost | Master lost arbitration (cleared on start of next Master operation)
uint32_t | bus_error | Bus error detected (cleared on start of next Master/Slave operation)
uint32_t | reserved | (Reserved for future use)

### _ARM_I2C_CAPABILITIES

Location: Driver_I2C.h:204

I2C Driver Capabilities.

Data Fields

Type | Name | Description
--- | --- | ---
uint32_t | address_10_bit | Supports 10-bit addressing.
uint32_t | reserved | Reserved (must be zero)

### _ARM_DRIVER_I2C

Location: Driver_I2C.h:213

Access structure of the I2C Driver.

Data Fields

Type | Name | Description
--- | --- | ---
ARM_DRIVER_VERSION(* | GetVersion)(void) | Pointer to ARM_I2C_GetVersion : Get driver version.
ARM_I2C_CAPABILITIES(* | GetCapabilities)(void) | Pointer to ARM_I2C_GetCapabilities : Get driver capabilities.
int32_t(* | Initialize)(ARM_I2C_SignalEvent_t cb_event) | Pointer to ARM_I2C_Initialize : Initialize I2C Interface.
int32_t(* | Uninitialize)(void) | Pointer to ARM_I2C_Uninitialize : De-initialize I2C Interface.
int32_t(* | PowerControl)(ARM_POWER_STATE state) | Pointer to ARM_I2C_PowerControl : Control I2C Interface Power.
int32_t(* | MasterTransmit)(uint32_t addr, const uint8_t *data, uint32_t num, bool xfer_pending) | Pointer to ARM_I2C_MasterTransmit : Start transmitting data as I2C Master.
int32_t(* | MasterReceive)(uint32_t addr, uint8_t *data, uint32_t num, bool xfer_pending) | Pointer to ARM_I2C_MasterReceive : Start receiving data as I2C Master.
int32_t(* | SlaveTransmit)(const uint8_t *data, uint32_t num) | Pointer to ARM_I2C_SlaveTransmit : Start transmitting data as I2C Slave.
int32_t(* | SlaveReceive)(uint8_t *data, uint32_t num) | Pointer to ARM_I2C_SlaveReceive : Start receiving data as I2C Slave.
int32_t(* | GetDataCount)(void) | Pointer to ARM_I2C_GetDataCount : Get transferred data count.
int32_t(* | Control)(uint32_t control, uint32_t arg) | Pointer to ARM_I2C_Control : Control I2C Interface.
ARM_I2C_STATUS(* | GetStatus)(void) | Pointer to ARM_I2C_GetStatus : Get I2C status.