19 #include "issdk_hal.h" 25 #define I2C_COUNT (sizeof(i2cBases) / sizeof(void *)) 40 void I2C0_SignalEvent_t(uint32_t event)
42 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
52 void I2C1_SignalEvent_t(uint32_t event)
54 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
64 void I2C2_SignalEvent_t(uint32_t event)
66 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
76 void I2C3_SignalEvent_t(uint32_t event)
78 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
88 void I2C4_SignalEvent_t(uint32_t event)
90 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
100 void I2C5_SignalEvent_t(uint32_t event)
102 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
112 void I2C6_SignalEvent_t(uint32_t event)
114 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
124 void I2C7_SignalEvent_t(uint32_t event)
126 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
134 #ifdef MIMXRT500_AGM01 137 void I2C11_SignalEvent_t(uint32_t event)
139 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
151 uint16_t slaveAddress,
153 const uint8_t *pBuffer,
154 uint8_t bytesToWrite)
160 memcpy(buffer + 1, pBuffer, bytesToWrite);
164 status = pCommDrv->MasterTransmit(slaveAddress, buffer, bytesToWrite + 1,
false);
165 if (ARM_DRIVER_OK == status)
181 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
185 status = ARM_DRIVER_ERROR;
195 uint16_t slaveAddress,
202 uint8_t config[] = {offset, 0x00};
210 status = pCommDrv->MasterTransmit(slaveAddress, &config[0], 1,
true);
211 if (ARM_DRIVER_OK == status)
227 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
231 return ARM_DRIVER_ERROR;
241 status = pCommDrv->MasterReceive(slaveAddress, &config[1], 1,
false);
242 if (ARM_DRIVER_OK == status)
258 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
262 return ARM_DRIVER_ERROR;
270 config[1] = (config[1] & ~mask) | value;
281 status = pCommDrv->MasterTransmit(slaveAddress, config,
sizeof(config), repeatedStart);
282 if (ARM_DRIVER_OK == status)
298 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
302 status = ARM_DRIVER_ERROR;
312 uint16_t slaveAddress,
321 status = pCommDrv->MasterTransmit(slaveAddress, &offset, 1,
true);
322 if (ARM_DRIVER_OK == status)
338 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
342 return ARM_DRIVER_ERROR;
353 status = pCommDrv->MasterReceive(slaveAddress, pOutBuffer, length,
false);
354 if (ARM_DRIVER_OK == status)
370 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
374 status = ARM_DRIVER_ERROR;
This structure defines the device specific info required by register I/O.
int32_t Register_I2C_Read(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, uint8_t length, uint8_t *pOutBuffer)
The interface function to read a sensor register.
int32_t Register_I2C_Write(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, uint8_t value, uint8_t mask, bool repeatedStart)
The interface function to write a sensor register.
typedef int32_t(DATA_FORMAT_Append_t))(void *pData
The interface function to append the data on the formated stream.
The register_io_i2c.h file declares low-level interface functions for reading and writing sensor regi...
volatile bool b_I2C_CompletionFlag[I2C_COUNT]
#define SENSOR_MAX_REGISTER_COUNT
int32_t Register_I2C_BlockWrite(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, const uint8_t *pBuffer, uint8_t bytesToWrite)
The interface function to write a sensor register.
volatile uint32_t g_I2C_ErrorEvent[I2C_COUNT]
registeridlefunction_t idleFunction
I2C_Type *const i2cBases[]