]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Driver/src/I2C_SlaveDemo.c
Driver NAND usage examples enhanced
[cmsis] / CMSIS / DoxyGen / Driver / src / I2C_SlaveDemo.c
1 #include "Driver_I2C.h"
2  
3 // I2C driver instance
4 extern ARM_DRIVER_I2C Driver_I2C0; 
5 static ARM_DRIVER_I2C *i2cDev = &Driver_I2C0;
6  
7 static volatile uint32_t event = 0;
8  
9 static void I2C_DrvEvent (uint32_t e) {
10     event |= e;
11 }
12  
13 int main (void) {
14     uint8_t cnt = 0;
15  
16     /* Initialize I2C peripheral */
17     i2cDev->Initialize(I2C_DrvEvent);
18  
19     /* Power-on I2C peripheral */
20     i2cDev->PowerControl(ARM_POWER_FULL);
21  
22     /* Configure I2C bus*/
23     i2cDev->Control(ARM_I2C_OWN_ADDRESS, 0x78);
24  
25     while (1) {
26         /* Receive chunk */
27         i2cDev->SlaveReceive(&cnt, 1);
28         while ((event & ARM_event_TRANSFER_DONE) == 0);
29         event &= ~ARM_event_TRANSFER_DONE;
30  
31         /* Transmit chunk back */
32         i2cDev->SlaveTransmit(&cnt, 1);
33         while ((event & ARM_event_TRANSFER_DONE) == 0);
34         event &= ~ARM_event_TRANSFER_DONE;
35     }
36 }