Arduino библиотека за управление на 24LC21 / 24LC21 Arduino Library
/kn34pc.com/справочник/...

Microchip 24LC21 - 2.5V Dual Mode I2C Serial EEPROM 1K (128 x 8)

Features:

- Single supply with operation down to 2.5V
- Low-power CMOS technology
- 2-wire serial interface bus, I2C compatible
- Self-timed write cycle (including auto-erase)
- Page-write buffer for up to 8 bytes
- 100 kHz (2.5V) and 400 kHz (5V) compatibility
- 1 000 000 erase/write cycles ensured
- Data retention > 200 years

I2C address = 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57

***


EEPROM 24LC21 - тестова схема

***

Библиотека за управление на EEPROM 24LC21 под Arduino / EEPROM 24LC21 Arduino Library:
mc24lc21_lib_v0.2.zip

Библиотеката управлява EEPROM САМО в Bidirectional Mode.

***

Library constructor:

mc24lc21(uint8_t);

I2C address = 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57 (EEPROM отговаря на осемте адреса едновременно)
7-bit device code "1010", followed by three "don't care" bits

EEPROM 24LC21: Arduino I2C Scanner

***

Публични функции и процедури:

void init();
инициализация на библиотеката

I2C шината може да работи на честота 100 kHz (по подразбиране) и на 400 kHz.

За работа на 400 kHz е необходимо след инициализацията да се добави стандартната Arduino функция за управление на TWI:
Wire.setClock(400000L);


uint8_t
read(uint8_t m_addr);
чете съдържанието на клетка с адрес m_addr

void write(uint8_t m_addr, uint8_t m_data);
записва клетка на адрес m_addr с данни m_data

void update(uint8_t m_addr, uint8_t m_data);
чете клетка и записва върху нея данни само при разлика (виж EEPROM endurance)

***

След запис I2C шината трябва да остане в технологично време на покой преди началото на следващата операция. В документацията това време twr (Write Cycle Time, табл. 5, стр. 5 от [1]) варира от 5..10 ms в зависимост от конкретния производител.

В библиотеката съм добавил 5 ms, като досега не съм имал проблем с реакцията на ИС. За конкретни случаи (напр. при друг производител) twr може да се увеличи.

***

Пример 1: Четене, изтриване и запис (със случайни данни) на клетки в EEPROM 24LC21
mc24lc21_rbx.zip

Пример-1 използвам за бърз тест на работоспособността на интегралната схема и контрол на съдържанието в паметта.

Функциите са достъпни през Arduino Serial Monitor. Скорост: 57 600 бода.

***
r - четене на данни от цялото адресно пространство

***
b - изтриване (запис с 0xFF) на клетките в EEPROM (и последващо автоматично четене за визуална проверка на състоянието)

***
x - запис на всички клетки в адресното пространство с псевдо-случайни данни (и последващо автоматично четене за визуална проверка на състоянието)

Забележка: Програмният код (или части от него) е за некомерсиално използване!

Препратки и материали:
1. 24LC21, Microchip - 2,5V Dual Mode I2C Serial EEPROM 1K (128 x 8) [pdf][375kb]
2. Arduino I2C Scanner [zip,ino][1kb]

LZ2WSG, Силистра
27 октомври 2018 година