44 #include "issdk_hal.h" 50 #define I2C_COUNT (sizeof(i2cBases) / sizeof(void *)) 65 void I2C0_SignalEvent_t(uint32_t event)
67 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
77 void I2C1_SignalEvent_t(uint32_t event)
79 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
89 void I2C2_SignalEvent_t(uint32_t event)
91 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
101 void I2C3_SignalEvent_t(uint32_t event)
103 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
113 void I2C4_SignalEvent_t(uint32_t event)
115 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
125 void I2C5_SignalEvent_t(uint32_t event)
127 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
137 void I2C6_SignalEvent_t(uint32_t event)
139 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
149 void I2C7_SignalEvent_t(uint32_t event)
151 if (event != ARM_I2C_EVENT_TRANSFER_DONE)
162 uint16_t slaveAddress,
164 const uint8_t *pBuffer,
165 uint8_t bytesToWrite)
171 memcpy(buffer + 1, pBuffer, bytesToWrite);
175 status = pCommDrv->MasterTransmit(slaveAddress, buffer, bytesToWrite + 1,
false);
176 if (ARM_DRIVER_OK == status)
192 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
196 status = ARM_DRIVER_ERROR;
206 uint16_t slaveAddress,
213 uint8_t config[] = {offset, 0x00};
221 status = pCommDrv->MasterTransmit(slaveAddress, &config[0], 1,
true);
222 if (ARM_DRIVER_OK == status)
238 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
242 return ARM_DRIVER_ERROR;
252 status = pCommDrv->MasterReceive(slaveAddress, &config[1], 1,
false);
253 if (ARM_DRIVER_OK == status)
269 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
273 return ARM_DRIVER_ERROR;
281 config[1] = (config[1] & ~mask) | value;
292 status = pCommDrv->MasterTransmit(slaveAddress, config,
sizeof(config), repeatedStart);
293 if (ARM_DRIVER_OK == status)
309 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
313 status = ARM_DRIVER_ERROR;
323 uint16_t slaveAddress,
332 status = pCommDrv->MasterTransmit(slaveAddress, &offset, 1,
true);
333 if (ARM_DRIVER_OK == status)
349 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
353 return ARM_DRIVER_ERROR;
364 status = pCommDrv->MasterReceive(slaveAddress, pOutBuffer, length,
false);
365 if (ARM_DRIVER_OK == status)
381 pCommDrv->Control(ARM_I2C_ABORT_TRANSFER, 0);
385 status = ARM_DRIVER_ERROR;
The register_io_i2c.h file declares low-level interface functions for reading and writing sensor regi...
volatile bool b_I2C_CompletionFlag[I2C_COUNT]
registeridlefunction_t idleFunction
#define SENSOR_MAX_REGISTER_COUNT
volatile uint32_t g_I2C_ErrorEvent[I2C_COUNT]
I2C_Type *const i2cBases[]
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.
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.
This structure defines the device specific info required by register I/O.