Step-by step introduction to I2C EEPROM

Dependencies:   mbed

Committer:
kaliczp
Date:
Tue Jan 12 22:18:21 2016 +0000
Revision:
2:41fccbb2e863
Parent:
1:c1f476b94bb3
Child:
3:58bd0878bb0f
Write the first byte and read back immediately

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaliczp 0:f7bdc8dfa76d 1 /***
kaliczp 0:f7bdc8dfa76d 2 **** ST M24512 512-Kbit I2C EEPROM
kaliczp 0:f7bdc8dfa76d 3 **** E0-E2 pulled low
kaliczp 0:f7bdc8dfa76d 4 **** 10k pull up resistors on SDA and SCL lines
kaliczp 0:f7bdc8dfa76d 5 ***/
kaliczp 0:f7bdc8dfa76d 6 #include "mbed.h"
kaliczp 0:f7bdc8dfa76d 7
kaliczp 0:f7bdc8dfa76d 8 #define EEPROM_ADDR (0b10100000) // EEPROM address
kaliczp 0:f7bdc8dfa76d 9
kaliczp 0:f7bdc8dfa76d 10 I2C i2c(I2C_SDA, I2C_SCL);
kaliczp 1:c1f476b94bb3 11 DigitalIn mybutton(USER_BUTTON); // Activate button
kaliczp 1:c1f476b94bb3 12 Serial pc(SERIAL_TX, SERIAL_RX); // Initialize UART connection
kaliczp 1:c1f476b94bb3 13 // Use a terminal program (eg. putty)!
kaliczp 0:f7bdc8dfa76d 14
kaliczp 0:f7bdc8dfa76d 15 int main()
kaliczp 0:f7bdc8dfa76d 16 {
kaliczp 2:41fccbb2e863 17 pc.printf("Read data from EEPROM sequentially\r\n");
kaliczp 0:f7bdc8dfa76d 18 char data[1];
kaliczp 2:41fccbb2e863 19 char data_write[3]; //Array for address and data
kaliczp 2:41fccbb2e863 20 // Type in address
kaliczp 2:41fccbb2e863 21 data_write[0] = 0;
kaliczp 2:41fccbb2e863 22 data_write[1] = 0;
kaliczp 2:41fccbb2e863 23 // Type data
kaliczp 2:41fccbb2e863 24 data_write[2] = 1;
kaliczp 2:41fccbb2e863 25 i2c.write(EEPROM_ADDR, data_write, 3);
kaliczp 2:41fccbb2e863 26 wait_ms(6); // Wait eeprom internal write cycle (5ms) + 1ms
kaliczp 2:41fccbb2e863 27 // Reset eeprom pointer address
kaliczp 2:41fccbb2e863 28 char eeprom_address[2] = {0, 0};
kaliczp 2:41fccbb2e863 29 i2c.write(EEPROM_ADDR, eeprom_address, 2, true);
kaliczp 2:41fccbb2e863 30 i2c.read(EEPROM_ADDR, data, 1, false);
kaliczp 2:41fccbb2e863 31 pc.printf("Written data: %d\n\r",data[0]);
kaliczp 2:41fccbb2e863 32
kaliczp 0:f7bdc8dfa76d 33 while (1) {
kaliczp 1:c1f476b94bb3 34 if (mybutton == 0) { // Button is pressed
kaliczp 1:c1f476b94bb3 35 i2c.read(EEPROM_ADDR, data, 1);
kaliczp 1:c1f476b94bb3 36 pc.printf("%d\n\r",data[0]);
kaliczp 1:c1f476b94bb3 37 wait_ms(500);
kaliczp 1:c1f476b94bb3 38 }
kaliczp 0:f7bdc8dfa76d 39 }
kaliczp 0:f7bdc8dfa76d 40
kaliczp 0:f7bdc8dfa76d 41 }