Микросхема 24C128 — это последовательная EEPROM-память объёмом 128 Кбит (16 Кбайт) с интерфейсом I2C, и прошивается она любым программатором, поддерживающим протокол I2C и корпуса серии 24xx: от бюджетного CH341A до универсального TL866 или даже самодельного решения на Arduino. Выбор конкретного устройства зависит от того, нужно ли программировать чип внутрисхемно (без выпаивания) или отдельно в панельке.

Частая ситуация: микросхема стоит в автомобильной магнитоле, блоке управления, материнской плате или телевизоре, и требуется считать дамп, исправить его и записать обратно. Во всех этих случаях алгоритм одинаков — но есть нюансы с питанием, адресными выводами и помехами от остальной схемы. Разберём всё по порядку.

Что такое 24C128 и почему с ней возникают вопросы

Микросхемы серии 24Cxx (AT24C128, 24LC128, ST24C128 и аналоги) — энергонезависимая память, которая хранит настройки, калибровки, пробег, привязки ключей и прочие служебные данные. Производителей много: Microchip, Atmel (ныне часть Microchip), STMicroelectronics, ON Semiconductor — распиновка и протокол у них совместимы.

Объём 128 Кбит означает, что адресация внутри чипа двухбайтовая — это важно, потому что не каждый дешёвый программатор корректно работает с чипами больше 24C64. Перед записью стоит убедиться, что софт вашего программатора явно поддерживает 24C128 в списке чипов.

Корпуса встречаются разные: DIP-8, SOP-8 (SOIC-8), TSSOP-8. Для программирования вне платы удобнее всего панелька или переходник под SOIC-8 с шагом 1.27 мм.

Чем можно прошить 24C128: обзор программаторов

Вариантов несколько — от устройств за пару сотен рублей до профессиональных станций. Ниже сравнение основных решений.

Программатор Поддержка 24C128 Софт Кому подходит
CH341A Да, через адаптер I2C CH341A Programmer, AsProgrammer, NeoProgrammer Новичкам, разовые задачи
TL866II Plus / T48 Да, из списка чипов Xgpro Регулярный ремонт, широкий парк чипов
Arduino + скетч I2C Да, при правильном коде Serial Monitor / скрипты Радиолюбителям, DIY
Raspberry Pi (I2C-пины) Да flashrom, i2c-tools, Python Тем, у кого уже есть «малинка»
Профильные (Orange, Xprog) Да Фирменный софт Автоэлектрикам, работе с дампами

Самый массовый вариант — CH341A: недорогой USB-программатор, который из коробки работает с серией 24xx через прищепку или панельку. TL866II Plus и его наследник T48 удобнее, если чипов много и разных, плюс у них стабильнее поддержка редких производителей.

📊 Каким программатором вы планируете прошивать 24C128?
CH341A
TL866 / T48
Arduino или Raspberry Pi
Профильный авто-программатор

Распиновка 24C128 и подключение

Распиновка у всех восьминогих чипов серии 24xx одинаковая:

  • 🔹 Выводы 1–3 (A0, A1, A2) — адресные входы. У 24C128 они обычно не используются внутри чипа, но на плате могут быть подтянуты к питанию или земле — при внутрисхемном чтении это учитывать не нужно, программатор обращается по стандартному адресу.
  • 🔹 Вывод 4 (VSS/GND) — земля.
  • 🔹 Вывод 5 (SDA) — линия данных I2C.
  • 🔹 Вывод 6 (SCL) — линия тактирования I2C.
  • 🔹 Вывод 7 (WP) — защита от записи. Если он подтянут к питанию, запись невозможна — чтение при этом работает.
  • 🔹 Вывод 8 (VCC) — питание. Диапазон зависит от конкретного производителя и буквенного суффикса, поэтому сверяйтесь с даташитом на ваш чип; типичные значения — 3.3 В или 5 В.
⚠️ Внимание: перед подачей питания проверьте, на какое напряжение рассчитана ваша микросхема. Подача 5 В на чип, рассчитанный только на низкое напряжение, может вывести его из строя. Маркировку на корпусе сверяйте с даташитом производителя.

При программировании в панельке достаточно вставить чип ключом (точкой у первого вывода) в правильную сторону. При внутрисхемной работе используют прищепку SOIC-8 — она цепляется прямо на выводы без выпаивания.

💡

Если прищепка даёт нестабильный контакт, зачистите выводы микросхемы ластиком или спиртом — окислы частая причина ошибок чтения.

Пошаговая инструкция прошивки через CH341A

Разберём самый популярный сценарий — запись через CH341A и программу AsProgrammer или NeoProgrammer. Логика у другого софта аналогичная.

☑️ Подготовка к прошивке 24C128

Выполнено: 0 / 5

Порядок действий:

  • ✅ Установите драйвер CH341A, подключите программатор к USB.
  • ✅ В софте выберите тип памяти: категория 24 EEPROM, чип 24C128.
  • ✅ Нажмите «Чтение» и сохраните дамп — это ваша страховка на случай ошибки.
  • ✅ Считайте чип повторно и сравните два дампа: если они совпадают, контакт хороший.
  • ✅ Откройте файл прошивки (формат .bin), нажмите «Запись».
  • ✅ После записи выполните верификацию — софт сравнит содержимое чипа с файлом.

Размер файла для 24C128 должен быть ровно 16384 байта (16 Кбайт). Если прошивка меньше или больше — либо файл не тот, либо он содержит служебный заголовок, который нужно отрезать в HEX-редакторе.

⚠️ Внимание: никогда не записывайте прошивку, не сохранив оригинальный дамп. Если новый файл окажется некорректным, восстановить устройство без родного дампа будет крайне сложно.

Внутрисхемное программирование: когда чип не хочется выпаивать

Прищепка SOIC-8 позволяет прошить 24C128 прямо на плате. Но здесь есть подводные камни: программатор питает не только чип, но и часть схемы вокруг него, а линии SDA/SCL могут быть нагружены другими компонентами.

Типичные признаки проблем: чип не определяется, чтение даёт каждый раз разный результат, программатор «зависает». В таком случае помогает снижение скорости I2C в настройках софта (если опция есть) либо выпайка чипа — это самый надёжный вариант.

Что делать, если чип не читается на плате

Попробуйте запитать всю плату штатно и читать без подачи питания от программатора — иногда схема требует полного питания. Если не помогает, отключите линию WP (вывод 7) от питания платы. Крайняя мера — аккуратно поднять выводы 5 и 6 (SDA/SCL) тонкой иглой, изолировав чип от схемы, либо полностью выпаять его феном.

Выпаивать удобнее феном паяльной станции или сплавом Розе/Вуда: греете обе стороны корпуса, чип снимается пинцетом без повреждения дорожек.

Альтернатива: прошивка через Arduino

Если под рукой нет программатора, 24C128 можно прошить платой Arduino Uno/Nano: выводы A4 (SDA) и A5 (SCL) подключаются к чипу, питание — с пина 3.3V или 5V в зависимости от микросхемы. В сети есть готовые скетчи для чтения и записи I2C EEPROM через библиотеку Wire.h.

Метод рабочий, но требует аккуратности: нужно самостоятельно контролировать разбивку данных на страницы (у 24C128 страница записи — 64 байта по даташиту, проверьте для вашего производителя) и делать паузы между записями страниц, иначе данные исказятся.

// Пример обращения к 24C128 по I2C (адрес 0x50)

Wire.beginTransmission(0x50);

Wire.write((byte)(address >> 8)); // старший байт адреса

Wire.write((byte)(address & 0xFF)); // младший байт адреса

Wire.write(data);

Wire.endTransmission();

delay(5); // время записи страницы

💡

Для разовой задачи берите CH341A — это самый дешёвый и простой путь. Для регулярной работы с разными чипами выгоднее TL866II Plus или T48.

Типичные ошибки и их решения

Чаще всего проблемы связаны не с программатором, а с мелочами. Вот что проверять в первую очередь:

  • 🛠 Чип не определяется — проверьте ориентацию в панельке, контакт прищепки, выбор правильной модели в софте.
  • 🛠 Читается мусор или FF FF FF — нет контакта по SDA/SCL либо чип запитан неправильно.
  • 🛠 Чтение работает, запись — нет — вывод WP подтянут к питанию; посадите его на землю.
  • 🛠 Запись проходит, верификация падает — нестабильный контакт, слишком длинные провода или «сдохший» чип с выработанным ресурсом перезаписи.
  • 🛠 Два чтения дают разные дампы — помехи по шине; сократите провода, снизьте скорость, уберите внутрисхемное подключение.

Отдельный случай — «убитая» EEPROM. У памяти этого типа есть конечный ресурс циклов записи, и в устройствах, где чип интенсивно перезаписывался (например, счётчики и журналы ошибок), ячейки могут физически деградировать. Лечится только заменой микросхемы на новую с заливкой дампа.

💡

Новые чипы 24C128 продаются в виде AT24C128, 24LC128B и других аналогов — они взаимозаменяемы при совпадении напряжения питания.

FAQ: частые вопросы о прошивке 24C128

Можно ли прошить 24C128 без программатора?

Да, через Arduino, Raspberry Pi или любой микроконтроллер с аппаратным I2C, написав или найдя готовый код для работы с 24xx. Но для разовой задачи дешёвый CH341A проще и надёжнее.

Чем отличается 24C128 от 24LC128?

Это аналогичные микросхемы разных производителей и ревизий. Основное отличие — диапазон питающих напряжений: буквы в маркировке (C, LC, AA) указывают на допустимые напряжения. Сверьтесь с даташитом конкретного чипа перед подачей питания.

Почему программатор не видит чип в списке?

Обновите софт до свежей версии — старые сборки CH341A Programmer иногда не содержат чипы выше 24C64. Программы AsProgrammer и NeoProgrammer поддерживают 24C128 корректно. Также проверьте, что выбран раздел I2C EEPROM, а не SPI Flash.

Обязательно ли выпаивать микросхему из платы?

Нет, часто достаточно прищепки SOIC-8. Но если чтение на плате нестабильно или схема мешает работе шины I2C, выпайка — самый надёжный вариант. Решение принимается по результатам первой попытки чтения.

Какой размер файла прошивки должен быть?

Ровно 16384 байта (16 Кбайт) — это 128 Кбит. Файл другого размера либо не от этого чипа, либо содержит лишние данные, которые нужно удалить в HEX-редакторе.