SSLM1 / Mbed 2 deprecated 24LC1025

Dependencies:   mbed

Committer:
sasakisho
Date:
Sun Jun 21 01:37:56 2020 +0000
Revision:
1:8ded5dafc62c
Parent:
0:14e4f511a1bd
version1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sasakisho 0:14e4f511a1bd 1 #include "mbed.h"
sasakisho 0:14e4f511a1bd 2
sasakisho 0:14e4f511a1bd 3 I2C i2c(p9, p10);
sasakisho 0:14e4f511a1bd 4 Serial pc(USBTX, USBRX);
sasakisho 0:14e4f511a1bd 5
sasakisho 0:14e4f511a1bd 6 #define ADDR 0xA0
sasakisho 0:14e4f511a1bd 7
sasakisho 0:14e4f511a1bd 8 int pointerAdddress = 0;
sasakisho 0:14e4f511a1bd 9 char s[10];
sasakisho 0:14e4f511a1bd 10
sasakisho 0:14e4f511a1bd 11
sasakisho 0:14e4f511a1bd 12 // this function has 63 bytes write limit
sasakisho 1:8ded5dafc62c 13 void EEPROM_write(char address, unsigned int eeaddress, char *data, int size)
sasakisho 0:14e4f511a1bd 14 {
sasakisho 0:14e4f511a1bd 15 char i2cBuffer[size + 2];
sasakisho 0:14e4f511a1bd 16 i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
sasakisho 0:14e4f511a1bd 17 i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF00); // LSB
sasakisho 0:14e4f511a1bd 18
sasakisho 0:14e4f511a1bd 19 for (int i = 0; i < size; i++) {
sasakisho 0:14e4f511a1bd 20 i2cBuffer[i + 2] = data[i];
sasakisho 0:14e4f511a1bd 21 }
sasakisho 0:14e4f511a1bd 22
sasakisho 0:14e4f511a1bd 23 int result = i2c.write(ADDR, i2cBuffer, size + 2);
sasakisho 0:14e4f511a1bd 24 wait_ms(6);
sasakisho 0:14e4f511a1bd 25 }
sasakisho 0:14e4f511a1bd 26
sasakisho 0:14e4f511a1bd 27 // this function has no read limit
sasakisho 1:8ded5dafc62c 28 void EEPROM_read(char address, unsigned int eeaddress, char *data, int size)
sasakisho 0:14e4f511a1bd 29 {
sasakisho 0:14e4f511a1bd 30 char i2cBuffer[2];
sasakisho 0:14e4f511a1bd 31 i2cBuffer[0] = (unsigned char)(eeaddress >> 8); // MSB
sasakisho 0:14e4f511a1bd 32 i2cBuffer[1] = (unsigned char)(eeaddress & 0xFF00); // LSB
sasakisho 0:14e4f511a1bd 33
sasakisho 0:14e4f511a1bd 34 // Reset eeprom pointer address
sasakisho 0:14e4f511a1bd 35 int result = i2c.write(ADDR, i2cBuffer, 2);
sasakisho 0:14e4f511a1bd 36 wait_ms(6);
sasakisho 0:14e4f511a1bd 37
sasakisho 0:14e4f511a1bd 38 // Read eeprom
sasakisho 0:14e4f511a1bd 39 i2c.read(ADDR, data, size);
sasakisho 0:14e4f511a1bd 40 wait_ms(6);
sasakisho 0:14e4f511a1bd 41 }
sasakisho 0:14e4f511a1bd 42
sasakisho 0:14e4f511a1bd 43 int main()
sasakisho 0:14e4f511a1bd 44 {
sasakisho 0:14e4f511a1bd 45 int i, length;
sasakisho 0:14e4f511a1bd 46 char data_read[1];
sasakisho 1:8ded5dafc62c 47 EEPROM_read(ADDR, pointerAdddress, data_read, 1);
sasakisho 0:14e4f511a1bd 48 pc.printf("Previous data stored: %s\n", data_read);
sasakisho 0:14e4f511a1bd 49
sasakisho 0:14e4f511a1bd 50 while(1)
sasakisho 0:14e4f511a1bd 51 {
sasakisho 1:8ded5dafc62c 52
sasakisho 1:8ded5dafc62c 53 s[0] = 'a';
sasakisho 0:14e4f511a1bd 54
sasakisho 0:14e4f511a1bd 55 // write tha data
sasakisho 1:8ded5dafc62c 56 EEPROM_write(ADDR, pointerAdddress, s, 1);
sasakisho 0:14e4f511a1bd 57 pc.printf("Data written: %s\n", s);
sasakisho 0:14e4f511a1bd 58
sasakisho 0:14e4f511a1bd 59 // read the data
sasakisho 1:8ded5dafc62c 60 EEPROM_read(ADDR, pointerAdddress, data_read, 1);
sasakisho 0:14e4f511a1bd 61 pc.printf("Data read: %s\n", data_read);
sasakisho 0:14e4f511a1bd 62
sasakisho 0:14e4f511a1bd 63 wait(1);
sasakisho 0:14e4f511a1bd 64 }
sasakisho 0:14e4f511a1bd 65
sasakisho 0:14e4f511a1bd 66 }