Dhaval Shah
Junior Member level 3
Hi,
I am trying to store data in EEPROM by page write and Read from same address.
But I am not able to read proper data from EEPROM.
I am using ST24c08 interface with LPC2387.
Below is my code. Please check it and let me know where I am wrong..
I2C_BufferCounter = 0;
for ( I2C_Counter = 0; I2C_Counter < 15; I2C_Counter++)
{
I2CWriteLength = 10;
I2CReadLength = 0;
I2CMasterBuffer[0] = I2C_ADDR;
I2CMasterBuffer[1] = I2C_TEMP;
I2CMasterBuffer[2] = I2CDataBuffer[I2C_BufferCounter + 0];
I2CMasterBuffer[3] = I2CDataBuffer[I2C_BufferCounter + 1];
I2CMasterBuffer[4] = I2CDataBuffer[I2C_BufferCounter + 2];
I2CMasterBuffer[5] = I2CDataBuffer[I2C_BufferCounter + 3];
I2CMasterBuffer[6] = I2CDataBuffer[I2C_BufferCounter + 4];
I2CMasterBuffer[7] = I2CDataBuffer[I2C_BufferCounter + 5];
I2CMasterBuffer[8] = I2CDataBuffer[I2C_BufferCounter + 6];
I2CMasterBuffer[9] = I2CDataBuffer[I2C_BufferCounter + 7];
I2CMasterBuffer[10] = I2CDataBuffer[I2C_BufferCounter + 8];
I2CMasterBuffer[11] = I2CDataBuffer[I2C_BufferCounter + 9];
I2CMasterBuffer[12] = I2CDataBuffer[I2C_BufferCounter + 10];
I2CMasterBuffer[13] = I2CDataBuffer[I2C_BufferCounter + 11];
I2CMasterBuffer[14] = I2CDataBuffer[I2C_BufferCounter + 12];
I2CMasterBuffer[15] = I2CDataBuffer[I2C_BufferCounter + 13];
I2CMasterBuffer[16] = I2CDataBuffer[I2C_BufferCounter + 14];
I2CMasterBuffer[17]=2CDataBuffer[I2C_BufferCounter+15];
I2CEngine();
delayMs(0,50);
I2C_TEMP = I2C_TEMP + 32;
I2C_BufferCounter = I2C_BufferCounter + 8;
}
for (I2C_WriteClear = 0; I2C_WriteClear < 20; I2C_WriteClear++)
{
I2CMasterBuffer[I2C_WriteClear] = 0;
}
I2C_TEMP = 0;
for (I2C_ReadCounter = 0; I2C_ReadCounter < 15; I2C_ReadCounter++)
{
I2CWriteLength = 1;
I2CReadLength = 8;
I2CMasterBuffer[0] = I2C_ADDR;
I2CMasterBuffer[1] = I2C_TEMP;
I2CMasterBuffer[2] = I2C_ADDR | RD_BIT;
I2CCmd = I2C_CONFIG;
I2CEngine();
delayMs(0,50);
channelConfiguration[channelData] = I2CMasterBuffer[channelData + 3];
channelData++;
I2C_TEMP = I2C_TEMP + 32;
}
In above code i am trying to write data in multiple pages. So for that I have increment its word address(I2C_TEMP). And I have store data in buffer from which I want to write it to EEPROM and read from it.
Please let me know where I am doing mistake.
Thanks
I am trying to store data in EEPROM by page write and Read from same address.
But I am not able to read proper data from EEPROM.
I am using ST24c08 interface with LPC2387.
Below is my code. Please check it and let me know where I am wrong..
I2C_BufferCounter = 0;
for ( I2C_Counter = 0; I2C_Counter < 15; I2C_Counter++)
{
I2CWriteLength = 10;
I2CReadLength = 0;
I2CMasterBuffer[0] = I2C_ADDR;
I2CMasterBuffer[1] = I2C_TEMP;
I2CMasterBuffer[2] = I2CDataBuffer[I2C_BufferCounter + 0];
I2CMasterBuffer[3] = I2CDataBuffer[I2C_BufferCounter + 1];
I2CMasterBuffer[4] = I2CDataBuffer[I2C_BufferCounter + 2];
I2CMasterBuffer[5] = I2CDataBuffer[I2C_BufferCounter + 3];
I2CMasterBuffer[6] = I2CDataBuffer[I2C_BufferCounter + 4];
I2CMasterBuffer[7] = I2CDataBuffer[I2C_BufferCounter + 5];
I2CMasterBuffer[8] = I2CDataBuffer[I2C_BufferCounter + 6];
I2CMasterBuffer[9] = I2CDataBuffer[I2C_BufferCounter + 7];
I2CMasterBuffer[10] = I2CDataBuffer[I2C_BufferCounter + 8];
I2CMasterBuffer[11] = I2CDataBuffer[I2C_BufferCounter + 9];
I2CMasterBuffer[12] = I2CDataBuffer[I2C_BufferCounter + 10];
I2CMasterBuffer[13] = I2CDataBuffer[I2C_BufferCounter + 11];
I2CMasterBuffer[14] = I2CDataBuffer[I2C_BufferCounter + 12];
I2CMasterBuffer[15] = I2CDataBuffer[I2C_BufferCounter + 13];
I2CMasterBuffer[16] = I2CDataBuffer[I2C_BufferCounter + 14];
I2CMasterBuffer[17]=2CDataBuffer[I2C_BufferCounter+15];
I2CEngine();
delayMs(0,50);
I2C_TEMP = I2C_TEMP + 32;
I2C_BufferCounter = I2C_BufferCounter + 8;
}
for (I2C_WriteClear = 0; I2C_WriteClear < 20; I2C_WriteClear++)
{
I2CMasterBuffer[I2C_WriteClear] = 0;
}
I2C_TEMP = 0;
for (I2C_ReadCounter = 0; I2C_ReadCounter < 15; I2C_ReadCounter++)
{
I2CWriteLength = 1;
I2CReadLength = 8;
I2CMasterBuffer[0] = I2C_ADDR;
I2CMasterBuffer[1] = I2C_TEMP;
I2CMasterBuffer[2] = I2C_ADDR | RD_BIT;
I2CCmd = I2C_CONFIG;
I2CEngine();
delayMs(0,50);
channelConfiguration[channelData] = I2CMasterBuffer[channelData + 3];
channelData++;
I2C_TEMP = I2C_TEMP + 32;
}
In above code i am trying to write data in multiple pages. So for that I have increment its word address(I2C_TEMP). And I have store data in buffer from which I want to write it to EEPROM and read from it.
Please let me know where I am doing mistake.
Thanks