Do you remember the widely used DS3231 RTC Module ?As you might rememeber we have identified onboard an EEPROM chip, a 32k AT24C32 one and have written some driver examples for LUA
I was looking a few days ago for a I2C EEPROM to do some tests with ESPBasic and the results…can be seen below 🙂
1. MAIN Program
cls i2c.setup(4,5)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 'choose your I2C bus pins let eeprom_address = 0 Â Â 'EEPROM memory start address i2c_address = 87 Â Â Â Â Â Â Â Â ' 0x57 - AT24C32 I2C address let i = 0 stw = "87654321" Â Â Â Â Â Â 'string that we want to save in EEPROM button "i2c Read",[I2C_read] button "i2c Write",[I2C_Write] wait
2. EEPROM READ Function
[I2C_read]  stwl = len(stw)  print "Reading from I2C address " & i2c_address  adrh = eeprom_address >> 8  adrl = eeprom_address and 255  i2c.begin(i2c_address)  i2c.write(adrh)  i2c.write(adrl)  i2c.end()  i2c.begin(i2c_address)  i2c.requestfrom(i2c_address,stwl)  tr = i2c.available()  print "Available bytes :" & tr  do      i2c_read = i2c.read()      readt = i2c_read-48      print "Read value : " & readt      i = i + 1  loop while i < tr  i = 0  i2c.end()  print "Read complete" wait
3. EEPPROM WRITE function
[I2C_Write]  print "Writing to I2C address " & i2c_address  stwl = len(stw)  print "String : " & stw  print "String Lenght : " & stwl  adrh = eeprom_address >> 8  adrl = eeprom_address and 255  i2c.begin(i2c_address)  i2c.write(adrh)  i2c.write(adrl)  i = 1  do     stru = mid(stw,i,1)     print "Value to Write: " & asc(stru)     i2c.write(asc(stru))     i = i + 1  loop while i < stwl+1  i = 0  i2c.end()  print "Write complete" wait
Of course, this is just a proof of concept driver example for the I2C 24C32 EEPROM but I think might help you with a good start 🙂
Happy breadboarding,
TJ.