5. EEPROM(电擦除存储器)
#include <Wire.h>
#define EEPROM_ADDRESS 0x54
#define EEPROM_CAPACITY 8192 // 64Kbit
#define EEPROM_TESTBYTES 16
// write 1 byte EEPROM by address
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data )
{
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(data);
Wire.endTransmission();
delay(5);
}
// read 1 byte EEPROM by address
byte readEEPROM(int deviceaddress, unsigned int eeaddress )
{
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 testI2CEEPROM(){
byte tmpData = 0;
Serial.println("EEPROM Testing...");
// write EEPROM from 0 to EEPROM_TESTBYTES
for(int i = 0; i < EEPROM_TESTBYTES; i++){
writeEEPROM(EEPROM_ADDRESS, i, i % 256);
delay(1);
}
Serial.println();
// read from 0 to EEPROM_TESTBYTES
for(int i = 0; i < EEPROM_TESTBYTES; i++){
tmpData = (int)readEEPROM(EEPROM_ADDRESS, i);
Serial.print(tmpData);
Serial.print("\t");
}
}
void setup(){
Serial.begin(115200);
Wire.begin();
testI2CEEPROM();
}
void loop(){
}Last updated
Was this helpful?