Step-by step introduction to I2C EEPROM
Dependencies: mbed
main.cpp
- Committer:
- kaliczp
- Date:
- 2016-01-13
- Revision:
- 3:58bd0878bb0f
- Parent:
- 2:41fccbb2e863
File content as of revision 3:58bd0878bb0f:
/***
**** ST M24512 512-Kbit I2C EEPROM
**** E0-E2 pulled low
**** 10k pull up resistors on SDA and SCL lines
***/
#include "mbed.h"
#define EEPROM_ADDR (0b10100000) // EEPROM address
I2C i2c(I2C_SDA, I2C_SCL);
DigitalIn mybutton(USER_BUTTON); // Activate button
Serial pc(SERIAL_TX, SERIAL_RX); // Initialize UART connection
// Use a terminal program (eg. putty)!
int main()
{
pc.printf("Read data from EEPROM sequentially\r\n");
char data[1];
char data_write[3]; //Array for address and data
// Type in address
data_write[0] = 0;
data_write[1] = 0;
// Type data
data_write[2] = 1;
uint8_t i;
for( i=0; i < 255; i++ ) {
data_write[1] = i;
data_write[2] = i;
i2c.write(EEPROM_ADDR, data_write, 3);
wait_ms(6); // Wait eeprom internal write cycle (5ms) + 1ms
}
// Reset eeprom pointer address
char eeprom_address[2] = {0, 0};
i2c.write(EEPROM_ADDR, eeprom_address, 2, true);
i2c.read(EEPROM_ADDR, data, 1, false);
pc.printf("Written data: %d\n\r",data[0]);
while (1) {
if (mybutton == 0) { // Button is pressed
i2c.read(EEPROM_ADDR, data, 1);
pc.printf("%d\n\r",data[0]);
wait_ms(500);
}
}
}