#if defined (__USE_LPCOPEN) #if defined(NO_BOARD_LIB) #include "chip.h" #else #include "board.h" #endif #endif #include #include #include #define I2C_FREQUENCY 100000 // I2C frequency #define EEPROM_I2C_ADDRESS 0x50 // Example I2C address for EEPROM volatile uint32_t msTicks; /* counts 1ms timeTicks */ void delay_ms(uint32_t ms) { volatile uint32_t i; for (i = 0; i < ms * 1000; i++) { __NOP(); // This is a dummy instruction for delaying } } void I2C_Init(void) { // Initialize I2C with the specified frequency Chip_I2C_Init(I2C0); Chip_I2C_SetClockRate(I2C0, I2C_FREQUENCY); Chip_I2C_SetMasterEventHandler(I2C0, Chip_I2C_EventHandlerPolling); } // Function to write data to I2C device int I2C_Write(uint8_t slaveAddr, const uint8_t *data, int length) { // I2C transfer structure I2C_XFER_T xfer; xfer.slaveAddr = slaveAddr; xfer.txBuff = data; xfer.txSz = length; xfer.rxBuff = NULL; xfer.rxSz = 0; // Perform the I2C transfer return Chip_I2C_MasterTransfer(I2C0, &xfer); } // Function to read data from I2C device int I2C_Read(uint8_t slaveAddr, uint8_t *buffer, int length) { // I2C transfer structure I2C_XFER_T xfer; xfer.slaveAddr = slaveAddr; xfer.txBuff = NULL; xfer.txSz = 0; xfer.rxBuff = buffer; xfer.rxSz = length; // Perform the I2C transfer return Chip_I2C_MasterTransfer(I2C0, &xfer); } int main(void) { #if defined (__USE_LPCOPEN) #if !defined(NO_BOARD_LIB) SystemCoreClockUpdate(); Board_Init(); #endif #endif I2C_Init(); // Write a byte to EEPROM at address 0x10 uint8_t writeData[2] = {0x10, 0xAA}; // Address and data int writeResult = I2C_Write(EEPROM_I2C_ADDRESS, writeData, 2); // Read back the data from the same address uint8_t readBuffer[1]; int readResult = I2C_Read(EEPROM_I2C_ADDRESS, readBuffer, 1); if (writeResult == I2C_STATUS_DONE && readResult == I2C_STATUS_DONE && readBuffer[0] == 0xAA) { // Successfully wrote and read from the EEPROM while (1) { // Success, toggle an LED or perform some action Board_UARTPutSTR("Successfully executed\r\n!"); } } else { while (1) { // Error, indicate failure Board_UARTPutSTR("ERROR!\r\n"); } } return 0; }