Меню

Программатор для eeprom своими руками

Программатор памяти 24CXX EEPROM (I2C Bus) на PonyProg

Простейший программатор микросхем памяти EEPROM серии 24CXX (с последовательным интерфейсом I2C Bus), основан на PonyProg. Это самые распространённые EEPROM в современной бытовой технике (телевизорах). Требуется для ремонта. Нет смысла покупать дорогой и сложный профессиональный программатор. Лучше его сделать…

Далее, будет несколько фоток (все кликабельны и ведут на полноразмерное изображение).

Схема аппаратной, равно как и программной части программатора были реализованы автором PonyProg (Claudio Lanconelli)… Далее, эта универсальная и модульная схема была упрощена Черновым Сергеем — выделен только программатор микросхем памяти EEPROM серии 24CXX (I2C)…

Мне понравилась идея Чернова С., но я не смог воспользоваться его корявой разводкой/рисунком печатной платы — перерисовал сам, под свои детали. Таким образом, вклад Celeron — только разводка ПП и тестирование макета. От себя, добавил ещё вывод шины I2C на внешний разъём, для универсализации (DIP-панелька на плате поддерживает самые ходовые микросхемы: 24C01, 24C02, 24C04, 24C08, 24C16; подключение остальных необычных и редких конфигураций, в т.ч. кластеры микросхем с расширенным адресным пространством, осуществляйте на бутербродных макетках). Аппаратный макет проверен — работает!

Источник

Мой архив по ремонту Audi

Ремонт и обслуживание Audi

Простой программатор для чтения EEPROM приборок и мозгов

Простой программатор для чтения EEPROM приборок и мозгов из подручных материалов.

Понадобилось мне тут вычитать eeprom приборки VDO, то что он легко вычитывается KKL шнурком я в курсе 🙂 Программатора для этих флешек у меня не было. Полазив по сусекам нашел программатор USBASP, это программатор AVR микроконтроллеров, стоит всего 90 руб. Вспомнил что где то читал что его легко превратить в программатор spi, i2 и microwire флешек банально сменой прошивки. Эти флешки используются в приборках и практически во всех блоках управления двигателем. То что надо, перекрывает почти все мозги и приборки.
Вообще считать – записать eeprom обычно надо для того что б вытянуть пароль иммо, отключить иммо, скорректировать в мозгах вин номер и логин иммо, восстановить eeprom после не удачной прошивки и окирпичивании устройства… В общем полезный зверек, тем более не везде можно это сделать софтово.

Для начала берем вот такой программатор.

Вот мои. Почему 2 ? Да по тому что надо будет в одном прошивку сменить и превратить его в программатор флешек. Если нет второго то не беда, соберите программатор для ЛПТ порта из пяти проводков и резисторов. Но у меня две штуки есть, купил давно на всякий случай по акции, для прошивки диагностических кабелей использую.

Соединяем программаторы вот так и меняем в одном прошивку. Будет он у меня программатором под флешки. Где взять прошивку и как прошить написано вот тут forum.easyelectronics.ru/viewtopic.php?t=10947 там же и программа для работы с usbasp в роли программатора флешек. Это пост автора проекта. Огромное ему спасибо!

Смотрим что он поддерживает в интересующем меня диапазоне машин. А поддерживает практически все 🙂 Все приборки и почти все блоки управления… Имею ввиду установленные в них микросхемы памяти.

Вот допустим модели мозгов Audi, зелеными галочками пометил что поддерживает.

Вот конкретно по моим любимым мозгам МЕ 7.5 из которых сделал себе двух прошивочные

Приступим к работе с ним.
У меня задача вытянуть eeprom из приборки VDO, узнать пароль иммо и при необходимости залить вытянутый дамп в другую сохранив калибровки стрелок и привязанные ключи. Почему я не делаю это софтово? Очень просто, приборка радостно сгорела с дымком и все такое. Кирпич в общем 🙂 В таких вот случаях без программатора не обойтись.

Берем приборку. Как разобрать писать не буду и так все знают 🙂

Вон она. Флешка с eepromом. 93С86…

Выпаиваем ее по быстрому…

Подключаем в соответствии со схемой. Схема разнится от типа флешки. У меня в VDO стоит microwire 93LС86… Значит по второй схеме…

Так как панельки у меня под SMD8 нет (заказал), то сделаю по быстрому переходник.
Возьму кусочек шлейфа, разделаю, нанесу цветовые метки.

И банально подпаяю, благо делов на минуту… Не очень фотогенично зато надежно 🙂

Напряжение питания выбираем в соответствии с даташитом на микросхему. Программатор выдает или 3.3v или 5v, переключается перемычкой. В моем случае любое, так как микросхема может работать в диапазоне 2.5-5.5 вольт.

Теперь можно подсоединить к компу и начать процесс считывания.

Запускаем программу. Смотрим что б был выбран программатор usbasp. Выбирает тип микросхемы с которой будем работать.

Далее все просто. Нажимаем считать. Идет процесс. Все считано.
Вот почти и все. EEPROM считан. Но есть одна тонкость, считан он правильно но не совсем. При чтении прошивки из EEPROM 93с86 байты в словах перевернуты. Например первое слово 02 03 а должно быть 03 02. Так как проект этого софта не коммерческий то он очень простой и в нем нет опции intel/motorola с которой сразу правильно. Но это не беда 🙂 Сохраняем файл.

Читайте также:  Ремонт абс своими руками шкода октавия

Теперь запускаем редактор WinHex, открываем нем файл нашего eeprom и делаем ему свап.
Вот так:
Правка – Модифицировать данные

В менюшке выбираете «Обратный порядок байт», блин, у меня кота байтом зовут 🙂 Ставим 2 байта и жмем «ОК»

Вот и все, наш eeprom в нужном нам виде предстает 🙂
Ну и сохраняете его. В случае с приборкой VDO иммо3 можете на вин номер ориентироватся, если он стал правильно отображается то все правильно мы сделали

Теперь пароль на иммо вытянуть надо. Тут можно руками и все такое но на много проще сделать это с помощью всеми любимой программы, а именно VAG EEPROM Programmer.
Открываете полученный файл eeprom и в нем и сразу все что надо видите 🙂
Можно или ручками перенести данные в новую приборку а можно этот дамп залить со всеми калибровками и шкаламии ключами. Ну и пробег можете подкрутить пока законом не запретили 😉
Вот так все просто 🙂

Источник

Программатор микросхем типа 24CXX EEPROM

Программатор микросхем 24CXX EEPROM

Чернов Сергей

E-mail: km450 (at) mail.ru
(замените (at) на @)

Конструкция выходного дня

Сломался телевизор «Samsung». Полазил по Интернету. Прочитал массу советов на сайте www.telemaster.ru. Починил. Поразило обилие в форумах фразы типа «. Помогите найти прошивку . «. И у меня появилось желание считать со своих телевизоров прошивки и положить про запас. Так на всякий случай, чтобы потом долго не искать. Стало быть нужен программатор. Свой. Люблю когда все под рукой. И опять в Интернет. Особого разнообразия не нашел да и все как-то кусками выложено. Иногда за приличные деньги за универсальный программатор просят. А если надо только для микросхем типа EEPROM 24С04 как в моем случае? Перебрал несколько вариантов и остановился на программаторе «PonyProg serial device programmer» Программатор универсальный, поддерживает массу микросхем, в том числе и контроллеров. Построен по блочному принципу, что позволяет выбрать нужный вариант, как в моем случае. Много положительных отзывов о его работе. Я присоединяюсь к ним.

На сайте www.lancos.com бесплатно можно найти схему PonyProg serial device programmer и программное обеспечение. Я лишь выделил только что мне надо было. Согласно документации этот программатор поддерживает:

  1. 24C01, 24C02, 24C04, 24C08, 24C16 I2C Bus EEPROM
  2. (*) 24C32, 24C64, 24C65, 24C128, 24C256, 24C512 I2C Bus EEPROM
  3. Автоматическое определение 24XX EEPROM емкости памяти

* — для этого варианта А0 (1 нога панельки DA) должна быть подключена к VCC (8 нога панельки DA).

Программатор не требует отдельного питания и подключается к COM порту комппьютера. Схема программатора представлена на Рис1. Схема не представляет собой ничего особенного кроме одного момента. В качестве источника питания в авторском варианте применен стабилизатор на микросхеме LM2936Z-5. Причем специально указано что не рекомендуется ее заменять на микросхемы типа LM78L05. Стал сравнивать и выяснилось следующее. для нормальной работы микросхемы типа LM78L05 требуется входное напряжение не менее 7.5 вольт при собственном потреблении как минимум 3 ма. Это лишняя нагрузка на порт. Микросхема LM2936Z-5 входит в режим стабилизации сразу после 5 вольт при собственном потреблении порядка 10 мка. Все данные взяты из описаний на микросхемы.

На сайте www.chipinfo.ru за LM2936Z-5 в зависимости от фирмы просят от 100 до 300 рублей! Мне это показалось накладным для домашнего использования и я все же применил LM78L05. У меня это не сказалось на работе программатора. Компьютер старенький, и видимо порты достаточно мощные.

Конструкция и детали.

Программатор собран на плате из двустороннего стеклотекстолита и имеет размеры 50*35 мм.

Рис.1. Принципиальная схема (щелкните мышью для увеличения)

Малые размеры позволяют подключить его непосредственно к COM порту комппьютера. так что кабель к нему паять не придется. На рис.2 указано расположение деталей.

Рис.2. Расположение деталей (щелкните мышью для увеличения)

Разьем Х1 типа DB9 (мама) использован мною со старой EGA видеокарты. Пришлось спилить головки крепежа до минимума. В магазинах тоже есть, да и не дорого оказалось, также как и панелька (DA). Конденсаторы С1 и С3 планарного (SMD) типа опять же из-за размеров программатора. Стабилитроны VD4 и VD5 на 5.1 вольта. Резисторы типа МЛТ-0.05. Переключатель SB1 — запрет/разрешение записи. Причем в процессе работы выяснилось что положение переключателя на 24C04 влияет, на 24C04EN — нет. Так что кому эта функция не нужна нужно удалить SB1 и R3, а 7 ногу панельки соединить с землей.

На рис.3 приведен рисунок печатной платы со стороны деталей, на рис.4 — с обратной стороны.

Налаживание.

Никакого, если детали исправны и на плате нет «соплей».

Порядок работы.

Установить программу (у меня вариант под Win’98). После установки программного обеспечения:

  1. Подключить программатор к порту COM2 (COM1)
  2. Выбрать тип микросхемы. У меня 24C04
  3. Выбрать тип интефейса — «SI Prog API». Выбрать порт подключения — COM2 (COM1)
  4. Произвести калибровку программы обязательно при отсутствии обращения к винчестеру.
  5. После калибровки программатор готов к работе.

Примечание: Переключатель разрешения записи должен быть в правом положении (в сторону конденсатора фильтра).

Источник

USB программатор параллельных Flash и EEPROM микросхем памяти

Приветствую всех посетителей портала cxem.net. В этой статье хочу представить свою очередную разработку — USB программатор параллельных Flash и EEPROM микросхем памяти.

На разработку этого устройства меня подтолкнула банальная лень. У меня есть в загашнике небезызвестный универсальный программатор Willem, который подключается к LPT- порту компьютера, но каждый раз доставать старый системный блок и подключать его ко всей периферии для прошивки одной-двух микросхем мне очень надоело. Очень хотелось программатор, который можно подключить к USB порту современного ноутбука, быстро прошить что-нибудь и убрать обратно на полку. Покупать заводской программатор USB по баснословной цене ради редкой прошивки пары флешек — это не моя тема. Поэтому я решил изобрести свой «велосипед». Тем более у меня были кое-какие наработки по этой теме (возможно кто-то видел мою статью про USB программатор AVR,SPI_Flash,I2C_EEPROM).

За основу программатора я взял микроконтроллер STM32F107VCT6 в 100-выводном корпусе (просто он у меня был, как-то купил от жадности по дешёвке пару штук на Aliexpress). У данного микроконтроллера достаточное количество портов ввода-вывода, есть хардверный USB-OTG, он 32-битный и работает соответственно с 32 битными переменными, а больше для моего проекта и ничего не надо.

Всю схему можно условно разделить на три части: микроконтроллер, который принимает-отправляет пакеты данных по USB, обрабатывает их и управляет остальной периферией, преобразователи логических уровней, выполненные на микросхемах 74LVC8T245, которые преобразуют логический уровень 3,3 вольта от микроконтроллера в 5 вольтовый или 3,3 вольтовый, и высоковольтная часть, которая преобразует 5 вольт шины USB в 12,5 вольт и 14,5 вольт.

Принципиальная схема цифровой части программатора:

В «цифровой» части схемы находится сам микроконтроллер U1 со своей обвязкой, пять преобразователей логических уровней U2-U6 (или шинных формирователей, если угодно), два электромагнитных пятивольтовых реле RL1-RL2, которые коммутируются через транзисторы Q1 и Q2, преобразователь напряжения low drop AMS1117 (U7) на 3,3 вольта а также разъёмы для подключения программируемых микросхем. Обратите внимание, что контакт питания разъёма программирования «VCC», а также питание правой половины всех преобразователей логических уровней подключаются через джампер S1 «SWITCH V_PROG» либо к 5 вольтам шины USB (VUSB), либо к 3,3 вольтам внутренней шины питания, это позволяет программировать микросхемы, которые питаются как от 5 вольт, так и от 3,3 вольт. Также дополнительно выведен разъём с I2C и SPI шинами микроконтроллера. Этот разъём используется для программирования SPI_flash (в данной версии пока не реализовано) и I2C_EEPROM (уже реализовано).

Расскажу подробнее про разъём программирования XS1: его распиновка соответствует разъёму программатора EzoFlash (это аналог Willem для самостоятельной сборки). Я решил так сделать по двум причинам, во первых у меня есть EzoFlash и сохранились адаптеры от него, а во вторых он разведён очень грамотно и соответствует распиновке большинства старых Flash и EEPROM в корпусах DIP,PLCC и др. Разъём XS2 — это дополнительные адресные линии (а их всего 24 А0-А23, что теоретически позволяет программировать микросхемы до 16 Мегабайт). На разъём XS3 выведен старший полубайт шины данных (для программирования 16 битных микросхем памяти — в данной версии софта пока не реализовано, сделал про запас).

Также на разъёмы выведены UART1 и SWD интерфейсы для программирования самого микроконтроллера. Обратите внимание, что линия RX UART1 подтянута к земле через резистор. Это нужно для правильной работы USB, так как в 107 серии STM USB ещё и OTG, то необходимо подтянуть определённую линию к «земле», чтобы выбрать режим работы USB Device. По идее подтяжка не должна мешать работе UART1, который также можно использовать для программирования микроконтроллера, подтянув контакт «BOOT0» к плюсу питания (к сожалению джампер не поместился на основной схеме, но он не обязателен при программировании через SWD интерфейс).

В этой части схемы не удалось уместить конденсаторы фильтров питания, их я нарисовал на второй (высоковольтной) части схемы. Название шин питания на обеих схемах соответствуют.

Высоковольтная часть схемы представляет из себя повышающий преобразователь напряжения на микросхеме mc34063 в практически стандартном включении. Исключение составляет джампер S1 «VOLTAGE», который коммутирует резисторы делителя напряжения и переключает выходное напряжение на 12,5 и 14,5 вольт. Эти напряжения нужны для программирования микросхем EEPROM типа 27CXX, а также стирания и получения ID других EEPROM и Flash микросхем. Высокое напряжение коммутируется через реле на контакты «OE» и «A9» разъёма программирования.

Схема хоть и громоздкая, но довольно простая. Есть возможность её упростить еще больше: в первой версии платы у меня был только один преобразователь логических уровней, установленный на шину данных. Логической единицы в 3,3 вольта вполне достаточно для адресных шин пятивольтовых микросхем памяти, так как порог логической единицы у них обычно находится на уровне 2,5 вольт. Поэтому всё работало и так. К тому же даже во этой версии платы сигналы «CS», «WE», «OE» тоже подведены к разъёму программирования напрямую, так как ради трёх сигналов, мне было просто жалко ставить шестую микросхему преобразователя уровней.

Прошивка микроконтроллера написана в среде SW4STM32. Драйвер USB сгенерирован в MX Cube (Custom HID Device), всё остальное написано на CMSIS. Программа микроконтроллера работает на прерываниях без циклов ожидания (в том числе со стороны софта). Принцип взаимодействия МК и софта — «тебе-мне», то есть пакет запрос от софта — пакет ответ от МК. Так как я использую HID USB, то теоретическая максимальная скорость обмена по USB — 64 Килобайта в секунду. Но по факту, так как пакет данных состоит из служебных и полезный данных, а также обмен идёт в двух направлениях, то фактическая скорость чтения/записи не превышает 2-4 килобайта в секунду. Получается вполне сносно для записи флешек объёмом 2-4 Мегабита. Весь проект я выложу в конце статьи (заранее извиняюсь перед перфекционистами за свой стиль программирования, я самоучка-любитель). При желании, его можно адаптировать под другие камни STM с достаточным количеством портов ввода-вывода.

Для подключения программатора к USB порту компьютера необходимо скачать и установить пакет LibUsbDotNet, установить фильтр на устройство USB. На Win10 и, возможно 8,1 придётся отключить обязательную проверку цифровой подписи драйверов.

Теперь расскажу о программной части. Софт написан в среде Visual Studio на C#. Поэтому для работы программы необходимо установить пакет .NET Framework (у меня версия 4.7 на Win10). Программа очень простая и интуитивно понятная.

Для начала работы необходимо подключить программатор к USB разъёму компьютера и нажать кнопку «Connect», если драйвер настроен правильно, то в окошке «Console» появится сообщение «USB Connect Ok». Далее нажимаем кнопку «Test HW» один, иногда два раза, пока не получим сообщение «Программатор подключен». Далее выбираем микросхему памяти, её модель и можно с ней работать: читать кнопкой «READ», стирать кнопкой «ERASE», записывать кнопкой «WRITE», предварительно открыв соответствующий файл для записи. Кнопка «COMPARE» сравнивает открытый файл с содержимым микросхемы памяти, для этого сначала необходимо выполнить команду чтения. «Chip ID» пока работает не со всеми микросхемами памяти. Программа принимает для записи файлы типа INTEL HEX или любые другие. Во втором случае файл будет открыт в виде бинарника. Например можно открыть текстовый файл или или любой другой и записать его в виде сырых данных, при условии, что его размер не превышает объём записываемой микросхемы.

Также в программе есть дополнительная вкладка «TEST HW»:

На этой вкладке можно проверить «железо» программатора. Галочками выставляем логическую единицу на соответствующем контакте разъёма программирования и проверяем тестером. Данную функцию я сделал на подобии аналогичной в софте программатора Willem. Очень удобно для проверки не пропаянных контактов. Опять же софт немного сыроват, некоторые функции сделаны под первый вариант платы программатора. Например пока не работает проверка Высоковольтного уровня «OE» и «A9».

Теперь о возможностях программатора на текущий момент. Сейчас поддерживаются микросхемы Flash W29CXXX, AM29FXXX, SST39VFXXX,W49FXXX, EEPROM AT28CXXX, W27CXXX (так как у меня нет 100% рабочей микросхемы, я не смог протестировать алгоритм стирания, запись на стёртых ячейках работает. Также должны работать УФ-стираемые EEPROM), I2C EEPROM (На соответствующем разъёме). Также бонусом добавил работу с восьмибитными SRAM (для проверки ячеек памяти, поддерживается чтение, запись, стирание).

Так как алгоритмы записи параллельных флешек 29,39 и некоторых 49 серий совпадают, то должны работать и другие модели (функции записи, чтения и стирания). Есть небольшое исключение: W29CXXX пишутся постранично, остальные побайтно, поэтому при попытке записи других моделей флеш можно выбрать AM29FXXX. Также есть возможность редактировать XML файлы микросхем в папке программатора и добавлять модели другой ёмкости к уже существующим. При появлении у меня новых моделей микросхем памяти, буду стараться добавлять их поддержку.

В конце статьи я также прилагаю свой вариант платы программатора и несколько адаптеров для микросхем памяти. Мой вариант платы разводился под имеющиеся у меня компоненты, поэтому выкладываю его для примера. Номиналы всех деталей подписаны в их свойствах.

Немного фотографий готового устройства. Возможно, кому-та платка покажется знакомой по другой моей статье.

В итоге у меня получилось вполне работоспособное и полезное устройство. Пока что поддерживается не очень большое количество микросхем памяти. Но я постараюсь добавлять по мере возможности новые.

PS: Хотя, сейчас в целом не очень часто используются параллельные микросхемы памяти, в радиолюбительских конструкциях они ещё встречаются. Мне, например, очень пригодился данный программатор, когда я делал флеш-картриджи для восьмибитной приставки (Dendy). Очень удобно и быстро: нарезал ROM, воткнул программатор в ноутбук, минута — и готово! Никаких больших компьютеров с LPT, проводов и тому подобное.

Вот вкратце и всё, о чём хотел рассказать. Спасибо за внимание. Если будут вопросы, постараюсь ответить в комментариях.

Источник