For reading the I2C EEPROM at given addresses I’ve written the following code in Arduino IDE language. I’ve added inline comments to help you understand what each line does.
//######### eeprom_read.ino ##########
#include <Wire.h> //I2C library
byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) { // function for reading one byte at given address
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) rdata = Wire.read();
return rdata;
}
void printHex(int num) { // function to convert DEC to HEX
char tmp[16];
char format[128];
sprintf(format, "0x%%.%dX", 2);
sprintf(tmp, format, num);
Serial.print(tmp);
}
void setup()
{
Wire.begin(); // initialise the connection
Serial.begin(9600); // set baud rate
}
void loop()
{
int StartAddr = 0; // address to start read from
int EndAddr = 9; // address to end read at
String OutputString = "Reading EEPROM memory from address ";
OutputString = OutputString + StartAddr + " to " + EndAddr;
Serial.println(OutputString);
for (int addr = StartAddr; addr <= EndAddr; addr++) // memory begin and end address to read from
{
byte b = i2c_eeprom_read_byte(0x50, addr); // read from eeprom
printHex(b); // print as HEX value
Serial.print(" "); // values separator
}
Serial.print("\n");
delay(2000); // wait a bit before reading loop
}
You can either copy the whole code into text editor and save the file with a .ino extension or you can download the file from the link bellow. Save it into folder named eeprom_read because Arduino IDE requires the .ino files to each reside in it’s own directory named same as the file.
eeprom_read.ino (right-click and choose save target as)