1 #include "Driver_I2C.h"
3 /* I2C driver instance */
4 extern ARM_DRIVER_I2C Driver_I2C0;
5 static ARM_DRIVER_I2C *I2Cdrv = &Driver_I2C0;
7 static volatile uint32_t I2C_Event;
9 /* I2C Signal Event function callback */
10 static void I2C_SignalEvent (uint32_t event) {
17 /* Initialize I2C peripheral */
18 I2Cdrv->Initialize(I2C_SignalEvent);
20 /* Power-on I2C peripheral */
21 I2Cdrv->PowerControl(ARM_POWER_FULL);
23 /* Configure I2C bus */
24 I2Cdrv->Control(ARM_I2C_OWN_ADDRESS, 0x78);
30 I2Cdrv->SlaveReceive(&cnt, 1);
31 while ((I2C_Event & ARM_I2C_EVENT_TRANSFER_DONE) == 0);
32 /* Clear transfer done flag */
33 I2C_Event &= ~ARM_I2C_EVENT_TRANSFER_DONE;
35 /* Transmit chunk back */
36 I2Cdrv->SlaveTransmit(&cnt, 1);
37 while ((I2C_Event & ARM_I2C_EVENT_TRANSFER_DONE) == 0);
38 /* Clear transfer done flag */
39 I2C_Event &= ~ARM_I2C_EVENT_TRANSFER_DONE;