void Board_EEPROM_writeByte(uint32_t addr,uint8_t value) { uint32_t addr4 = addr/4; uint32_t pageAddr = addr4/EEPROM_PAGE_SIZE; uint32_t pageOffset = addr4 - pageAddr*EEPROM_PAGE_SIZE; uint32_t *pEepromMem = (uint32_t*)EEPROM_ADDRESS(pageAddr,pageOffset*4); // read 4 bytes in auxValue uint32_t auxValue = pEepromMem[0]; uint8_t* pAuxValue = (uint8_t*)&auxValue; // modify auxValue with new Byte value uint32_t indexInBlock = addr % 4; pAuxValue[indexInBlock] = value; //write auxValue back in eeprom pEepromMem[0] = auxValue; Chip_EEPROM_WaitForIntStatus(LPC_EEPROM, EEPROM_INT_ENDOFPROG); }
/* Write data from page register to non-volatile memory */ void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM) { Chip_EEPROM_ClearIntStatus(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE); Chip_EEPROM_SetCmd(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE); Chip_EEPROM_WaitForIntStatus(pEEPROM, EEPROM_INT_ENDOFPROG); }