1 #include "Driver_I2C.h" 2 3 /* I2C driver instance */ 4 extern ARM_DRIVER_I2C Driver_I2C0; 5 static ARM_DRIVER_I2C *I2Cdrv = &Driver_I2C0; 6 7 static volatile uint32_t I2C_Event; 8 9 /* I2C Signal Event function callback */ I2C_SignalEvent(uint32_t event)10static void I2C_SignalEvent (uint32_t event) { 11 I2C_Event |= event; 12 } 13 main(void)14int main (void) { 15 uint8_t cnt = 0; 16 17 /* Initialize I2C peripheral */ 18 I2Cdrv->Initialize(I2C_SignalEvent); 19 20 /* Power-on I2C peripheral */ 21 I2Cdrv->PowerControl(ARM_POWER_FULL); 22 23 /* Configure I2C bus */ 24 I2Cdrv->Control(ARM_I2C_OWN_ADDRESS, 0x78); 25 26 I2C_Event = 0; 27 28 while (1) { 29 /* Receive chunk */ 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; 34 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; 40 } 41 } 42