Step-by step introduction to I2C EEPROM

Dependencies:   mbed

Committer:
kaliczp
Date:
Wed Jan 13 09:29:03 2016 +0000
Revision:
3:58bd0878bb0f
Parent:
2:41fccbb2e863
Write more address in a loop

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 3:58bd0878bb0f 25 uint8_t i;
kaliczp 3:58bd0878bb0f 26 for( i=0; i < 255; i++ ) {
kaliczp 3:58bd0878bb0f 27 data_write[1] = i;
kaliczp 3:58bd0878bb0f 28 data_write[2] = i;
kaliczp 3:58bd0878bb0f 29 i2c.write(EEPROM_ADDR, data_write, 3);
kaliczp 3:58bd0878bb0f 30 wait_ms(6); // Wait eeprom internal write cycle (5ms) + 1ms
kaliczp 3:58bd0878bb0f 31 }
kaliczp 2:41fccbb2e863 32 // Reset eeprom pointer address
kaliczp 2:41fccbb2e863 33 char eeprom_address[2] = {0, 0};
kaliczp 2:41fccbb2e863 34 i2c.write(EEPROM_ADDR, eeprom_address, 2, true);
kaliczp 2:41fccbb2e863 35 i2c.read(EEPROM_ADDR, data, 1, false);
kaliczp 2:41fccbb2e863 36 pc.printf("Written data: %d\n\r",data[0]);
kaliczp 2:41fccbb2e863 37
kaliczp 0:f7bdc8dfa76d 38 while (1) {
kaliczp 1:c1f476b94bb3 39 if (mybutton == 0) { // Button is pressed
kaliczp 1:c1f476b94bb3 40 i2c.read(EEPROM_ADDR, data, 1);
kaliczp 1:c1f476b94bb3 41 pc.printf("%d\n\r",data[0]);
kaliczp 1:c1f476b94bb3 42 wait_ms(500);
kaliczp 1:c1f476b94bb3 43 }
kaliczp 0:f7bdc8dfa76d 44 }
kaliczp 0:f7bdc8dfa76d 45
kaliczp 0:f7bdc8dfa76d 46 }