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.