Files
brnQuanFW/external/CMSIS_5/CMSIS/DoxyGen/Driver/src/I2C_SlaveDemo.c
2023-09-09 08:03:56 +01:00

42 lines
1010 B
C

#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;
}
}