Arduino AT24C04
тел. +7(499)347-04-82
Описание Arduino AT24C04
Arduino и EEPROM AT24C04 — описание, характеристики, парт-номера, совместимость
1. Описание
AT24C04 — это последовательная EEPROM-микросхема на 4 Кбит (512 байт), произведённая компанией Microchip Technology (ранее Atmel). Относится к классическому семейству I²C EEPROM AT24Cxx. Широко используется в Arduino-проектах для энергонезависимого хранения настроек, калибровочных данных, счётчиков, логов и любых данных, которые должны сохраняться после отключения питания.
Микросхема работает по двухпроводному интерфейсу I²C (TWI) с адресацией до 2 устройств на одну шину (из-за того, что младший бит адреса используется как бит номера страницы A8).
Обмен по I²C происходит страницами по 16 байт.
2. Технические характеристики
| Параметр | Значение |
|---|---|
| Тип памяти | EEPROM (энергонезависимая) |
| Ёмкость | 4 Кбит = 512 байт |
| Организация | 512 × 8 бит |
| Интерфейс | I²C / TWI, до 400 кГц (1 МГц для suffix «-M») |
| Напряжение питания | 1.7 – 5.5 В |
| Потребление (активное) | ~1 мА (чтение), ~3 мА (запись, при 5 В) |
| Потребление (standby) | ~1 мкА |
| Размер страницы записи | 16 байт |
| Время записи байта | ≤ 5 мс (тип. 3.5 мс) |
| Время записи страницы | ≤ 5 мс |
| Ресурс перезаписи | 1 000 000 циклов |
| Срок хранения данных | 100 лет |
| Диапазон температур | −40…+85 °C (industrial), −55…+125 °C (extended) |
| Адрес на шине | 7-бит: 1010 A2 A1 P0 → адреса 0x50…0x53 (реально только 2 устройства) |
| Корпуса | DIP-8, SOIC-8, TSSOP-8, UDFN-8, SOT-23-5 |
Распределение адреса
A2,A1— задаются выводами (обычно тянутся на GND); оба значения фиксированы → реально доступны только 2 разных адреса (0x50 и 0x51, плюс 0x52/0x53 для A1=1).- Младший бит адреса — номер блока (page select) внутри самой микросхемы (адреса 0..255 и 256..511).
На большинстве китайских модульных плат для Arduino выводы A1, A2 уже распаяны на GND, и адрес I²C = 0x50 по умолчанию.
3. Парт-номера (Part Numbers) Microchip/Atmel
Формируются по шаблону: AT24C04 + суффиксы (температура / корпус / упаковка).
Примеры действующих артикулов:
| Парт-номер | Корпус | Темп. диапазон | Примечание | |---|---|---|---| | AT24C04C-PUM | PDIP-8 | −40…+85 °C | Самый ходовой DIP-корпус | | AT24C04C-SSHM-T | SOIC-8 | −40…+85 °C | Промышленный SOIC, лента/рулон | | AT24C04C-SSHM-B | SOIC-8 | −40…+85 °C | SOIC, тубусы | | AT24C04C-XHM-T | TSSOP-8 | −40…+85 °C | Лента/рулон | | AT24C04C-MAHM-T | UDFN-8 | −40…+85 °C | Миниатюрный корпус | | AT24C04C-STUM-T | SOT-23-5 | −40…+85 °C | Самый маленький вариант | | AT24C04D-PUM | PDIP-8 | −40…+85 °C | Версия «D» — расширенный темп. до +125 °C в части вариантов | | AT24C04N-10SU-2.7 | SOIC-8 | 0…+70 °C | Устаревшая серия (2.7 В) | | AT24C04-10PC | DIP-8 | 0…+70 °C | Ранняя Atmel-версия, снят с производства |
Взаимозаменяемые аналоги от других производителей:
- Microchip / Atmel: AT24C04, AT24C04C, AT24C04D
- ST: M24C04, M24C04-F, M24C04-W, M24C04-R
- ON Semiconductor: CAT24C04
- NXP: PCA24C04, PCF24C04 (семейство PCF — частично несовместимо по таймингам)
- Rohm: BR24C04, BR24L04
- Giantec / GT: GT24C04, GT24C04A
- HGSEMI: HX24C04 (полный клон Atmel)
4. Совместимые Arduino и модули
Платформы Arduino
Работает со всеми Arduino через штатную шину I²C (Wire):
- Arduino Uno / Nano / Pro Mini — SDA = A4, SCL = A5
- Arduino Mega 2560 — SDA = 20, SCL = 21
- Arduino Leonardo / Micro — SDA = 2, SCL = 3
- Arduino Due — SDA = 20, SCL = 21
- Arduino Zero / MKR — SDA/SCL на разъёме SERCOM
- ESP8266 / ESP32 / ESP32-S2/S3/C3 — любые GPIO с поддержкой I²C: по умолчанию обычно 21/22 (ESP32) или 4/5
- STM32 BluePill и др. — через
Wire.setSDA()/setSCL()
⚠️ Обязательны подтягивающие резисторы 4.7 кОм – 10 кОм на SDA и SCL к 3.3 или 5 В. На многих модулях они уже распаяны.
Готовые модули на AT24C04
- Модуль I²C EEPROM AT24C04 (платка с колодкой для SDA/SCL/VCC/GND), питание 2.7–5.5 В
- Модуль AT24C04 в составе DS1307 RTC + EEPROM (используется как хранилище батарейных данных)
- GY-... серия EEPROM модулей (AT24C01/02/04/08/16/32/64/128/256 — распиновка идентична, только адрес меняется)
- Любые I²C-шины, где уже есть другие устройства с адресами, не пересекающимися с 0x50
5. Краткий пример работы (Arduino IDE)
#include <Wire.h>
#define EEPROM_ADDR 0x50
void writeEEPROM(uint16_t addr, uint8_t data) {
Wire.beginTransmission(EEPROM_ADDR);
Wire.write((uint8_t)(addr >> 8) | ((EEPROM_ADDR & 0x01) << 3)); // для 4К страница/блок
Wire.write((uint8_t)(addr & 0xFF));
Wire.write(data);
Wire.endTransmission();
delay(5); // ожидание завершения записи
}
uint8_t readEEPROM(uint16_t addr) {
Wire.beginTransmission(EEPROM_ADDR);
Wire.write((uint8_t)(addr >> 8));
Wire.write((uint8_t)(addr & 0xFF));
Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDR, 1);
return Wire.read();
}
void setup() {
Serial.begin(9600);
Wire.begin(); // на ESP32: Wire.begin(SDA, SCL);
delay(10);
writeEEPROM(0x0000, 123);
Serial.print("Read: ");
Serial.println(readEEPROM(0x0000));
}
void loop() {}
6. Библиотеки Arduino
| Библиотека | Описание | |---|---| | Wire (встроенная) | Прямой I²C-доступ | | ExtEEPROM | Универсальная поддержка 24LCxx/AT24Cxx | | I2C_EEPROM_I2Cx | H-серия, аналогичная AT24Cxx | | GitHub: julioterra/ExtEEPROM | Популярная, покрывает все 24Cxx | | GitHub: cyrob/I2C_EEPROM | Простой враппер для AVR |
Простой и надёжный путь на Uno/Nano: подключить внешнюю AT24C04 через Wire, т.к. это надёжнее штатной EEPROM микроконтроллера (100k циклов → 1M циклов, 512 Б против 1 КБ у Uno).
Если нужно — могу оформить сравнение AT24C04 vs AT24C08/AT24C32, расписать точные тайминги цикла записи или собрать полное тестовое скетч-меню с чтением/записью/сканированием шины I²C.