24LC256/24LC128 это электрически стираемое ППЗУ с организацией памяти 32 Кх8 (256 Кбит) / 16 Кх8 (128 Кбит), работающее в широком диапазоне питающих напряжений (1.7 В — 5.5 В). Создано для применения в низко-потребляющих системах. Предоставляет возможность страничной записи данных размером до 64 байт. Поддерживается как последовательное, так и произвольное чтение данных. Адресные выводы позволяют организовать единое адресное пространство до 2-х Мбит, разместив на одной шине до 8-ми микросхем.
Так же в ППЗУ предусмотрена защита от записи, для этого WP быть подключен либо к GND либо к VCC. Если соединен с GND операции записи разрешены. Если соединен с VCC операции записи запрещены, на операции чтения состояние вывода не влияет.
Подключить внешнюю EEPROM память к Arduino довольно просто, тем более если используете модуль hw-669.
Адрес 24LСXXX расшифровывается как 1010A2A1A0 (0 = GND, 1 = VCC)
A2=0, A1=0, A0=0 | 1010000 = 0х50
A2=0, A1=0, A0=1 | 1010001 = 0х51
A2=0, A1=1, A0=0 | 1010010 = 0х52
A2=0, A1=1, A0=1 | 1010011 = 0х53
A2=1, A1=0, A0=0 | 1010100 = 0х54
A2=1, A1=0, A0=1 | 1010101 = 0х55
A2=1, A1=1, A0=0 | 1010110 = 0х56
A2=1, A1=1, A0=1 | 1010111 = 0х57
При использовании простой библиотеки 24LC можно организовать побайтовое чтение и запись данных EEPROM.
Ниже показан скетч в котором данные массива data записываются в EEPROM в ячейки памяти от 0 до 9, далее происходит чтение данных и вывод из содержимого в монитор порта.
#include <Wire.h> #include <24LC.h> // http://rcl-radio.ru/wp-content/uploads/2020/03/24LC-2.zip EEPROM24LC eeprom(0x50); byte data[10]{12,24,48,96,128,12,4,55,68,250}; unsigned int i; void setup(){ Serial.begin(9600); // write for(i=0;i<10;i++){eeprom.writeWire(i,data[i]);} // read for(i=0;i<10;i++){Serial.print(i);Serial.print(" ");Serial.println(eeprom.readWire(i));} } void loop(){}
24LC256/24LC128 32768/16384 байт
writeWire(адрес, байт); // запись
readWire(адрес); // чтение