Initial commit
This commit is contained in:
41
external/CMSIS_5/CMSIS/DoxyGen/Driver/src/I2C_SlaveDemo.c
vendored
Normal file
41
external/CMSIS_5/CMSIS/DoxyGen/Driver/src/I2C_SlaveDemo.c
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
#include "Driver_I2C.h"
|
||||
|
||||
/* I2C driver instance */
|
||||
extern ARM_DRIVER_I2C Driver_I2C0;
|
||||
static ARM_DRIVER_I2C *I2Cdrv = &Driver_I2C0;
|
||||
|
||||
static volatile uint32_t I2C_Event;
|
||||
|
||||
/* I2C Signal Event function callback */
|
||||
static void I2C_SignalEvent (uint32_t event) {
|
||||
I2C_Event |= event;
|
||||
}
|
||||
|
||||
int main (void) {
|
||||
uint8_t cnt = 0;
|
||||
|
||||
/* Initialize I2C peripheral */
|
||||
I2Cdrv->Initialize(I2C_SignalEvent);
|
||||
|
||||
/* Power-on I2C peripheral */
|
||||
I2Cdrv->PowerControl(ARM_POWER_FULL);
|
||||
|
||||
/* Configure I2C bus */
|
||||
I2Cdrv->Control(ARM_I2C_OWN_ADDRESS, 0x78);
|
||||
|
||||
I2C_Event = 0;
|
||||
|
||||
while (1) {
|
||||
/* Receive chunk */
|
||||
I2Cdrv->SlaveReceive(&cnt, 1);
|
||||
while ((I2C_Event & ARM_I2C_EVENT_TRANSFER_DONE) == 0);
|
||||
/* Clear transfer done flag */
|
||||
I2C_Event &= ~ARM_I2C_EVENT_TRANSFER_DONE;
|
||||
|
||||
/* Transmit chunk back */
|
||||
I2Cdrv->SlaveTransmit(&cnt, 1);
|
||||
while ((I2C_Event & ARM_I2C_EVENT_TRANSFER_DONE) == 0);
|
||||
/* Clear transfer done flag */
|
||||
I2C_Event &= ~ARM_I2C_EVENT_TRANSFER_DONE;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user