Программатор EPROM

Автор: | 25.07.2019

Понадобилось при изучении и ремонте компьютеров, которые старше меня, прошивать ПЗУшки. Тесты оперативной памяти и периферии проводить. Нормального программатора у меня на тот момент не было. Собрать на логике для LPT порта, конечно, можно, но данный вариант был отброшен, так как для использования пришлось бы включать какого-нибудь старичка. В современных компах все ещё встречается данный интерфейс (правда не полноценный разъем, а на гребенке) да и купить плату в PCI слот тоже не проблема, но возникают уже сложности с софтом. Он был написан очень давно, когда работа с портами ввода/вывода в операционных системах велась иначе. Соответственно, в современных версиях Windows ПО не будет работать.

Сразу стоит оговориться, что про существование TL866 знаю. И даже в процессе разработки все же его купил себе, но он не в состоянии прошить микросхемы, которые требуют высокое напряжение программирования. Максимум 18 вольт (TL866+ или 21 для предыдущей версии).

Беглое гугление привело меня к данному репозиторию: https://github.com/bouletmarc/BMBurner. Собрав программатор, я смог сдампить пару интересующих чипов. А вот с прошивкой все оказалось куда сложнее… Софт этого просто не умеет… Его, конечно, можно обмануть, выставив неправильный чип, но работает это не во всех случаях и явно не наш метод

Очень сильно огорчил пользовательский интерфейс, который, вместо классического варианта с предоставлением права выбора порта пользователю, проходился по всем доступным последовательным интерфейсам. Соответственно, все устройства перезагружаются. Особенно обидно, наверное, когда у тебя 3D принтер уже часов 10 печатает детальку с флешки, а тут такая подстава…

Мир OpenSource прекрасен тем, что ты можешь взять проект и дописать его под свою задачу. В данном случае исходных кодов к графическому интерфейсу нет. По крайней мере я их не нашел, хотя можно было написать разработчику. Стало интересно и появился небольшой повод для изучения Qt. Так что софт будет кросплатформенный.

Берем за основу схему, дорабатываем устройство до требуемого функционала. Решил пожертвовать поддержкой EEPROM в софте. Возможно, это не совсем удачное решение. Если вдруг понадобится такая функциональность, то всегда можно попробовать дописать. Хотя, учитывая стоимость MiniPro, будут ли оправданы трудозатраты… В любом случае, имеется репозиторий на github, который можно Fork-нуть или там теоретически могут появиться обновления.

При доработке опирался на самую объемную микросхему (27C512) и убрал всю путаницу относительно адресных ножек. Весь адрес будет задаваться исключительно при помощи сдвиговых регистров (74HC595 или отечественный аналог КР1564ИР52). Это освободит дополнительные ноги самого микроконтроллера. Получить дополнительные сигналы, которые требуются для программирования, можно просто модифицировав адрес перед отправкой.

Принцип подачи напряжения программирования остался прежним. Изменения только в области защиты выводов микроконтроллера и сдвиговых регистров. Заменил резисторы (1 КОм) на диоды. Правда с ними потребовалась ещё подтяжка выхода к логическому нулю. Это более безопасный метод, хотя, справедливости ради, и резисторы работают.

Изучив документацию на все интересующие чипы, определил, что требуется три точки подачи Vpp:

  1. 27C16 на 21 ногу микросхемы (23 ногу DIP28 сокета)
  2. 27C32 и 27C512 на сигнал #OE (Output Enable)
  3. 27C64, 27C128, 27C256 на 1 ногу микросхем

Микросхемы 27C16 и 27C32 от остальных отличаются корпусом, так что им требуется подавать напряжение питания на 26 ножку сокета. Это адресная нога A13 (для более емких собратьев), подключенная к сдвиговому регистру. Тока с его выхода должно хватить для работы, но на время передачи данных от микроконтроллера выходы микросхемы 74xx595 переходят в Z состояние. Подобный режим допустим, но включение на чтение или запись одной ячейки вряд ли является нормой. Поэтому под управление питания установлен дополнительный транзистор.

27C16 на время чтения требует на вход Vpp напряжение 5 вольт. При формировании сдвиговым регистром возникали проблемы, так что ещё один ключ. Можно, конечно, на время чтения выставить напряжение программирования на значения 5 вольт, но метод не очень удобный для эксплуатации. Быстро переключаться между 25 и 5 вольтами не выйдет.

Если есть свободные ноги АЦП, то почему бы не измерять напряжение программирования? Плата разведена под Arduino Nano. На нем имеются два дополнительных входа, которые кроме как для АЦП использовать нельзя. На самом деле это особенность многих микроконтроллеров AVR в корпусе для поверхностного монтажа. На китайских Arduino UNO частенько есть входы A6 и A7. С учетом того, что напряжение может быть до 30 вольт (вроде больше всего хотят отечественные РФ5, 25 вольт), рассчитываем делитель из того, что есть в наличии. Точность в 0.5 вольта для данной задачи вполне достаточна. Главное убедиться, что напряжение программирования поступает от внешнего источника и примерно совпадает с номинальным для микросхемы. Плюс небольшая защита от дурака.

Можно, конечно, было заморочиться с DC-DC повышающим преобразователем и выступать в качестве ШИМ контроллера, но 27С16 съела все оставшиеся ноги… Поэтому на печатной плате есть посадочное место для преобразователя DC-DC Step Up на чипе MT3608, которые доступны на али: http://ali.pub/3l47fs.

По схеме на этом все.

Схема программатора

Алгоритм работы с данными микросхемами очень прост. С ним можно ознакомится в небольшом ролике.

Схемы и софт доступны в репозитории на GitHub: https://github.com/walhi/arduino_eprom27_programmer. При сборке можно спокойно менять номиналы резисторов в схеме подачи напряжения программирования и делителя для контроля значения. Правда со вторым дополнительно потребуется немножко исправить код скетча.

Надеюсь, данное устройство кому нибудь пригодится. На данный момент у меня в наличии 7 плат, так что желающие могут их купить (по себестоимости, 100 рублей + пересылка).

Ну и небольшой список полезных лотов на Ali:

  • Цанговые «расчески»: http://ali.pub/3l463k
  • Программатор MiniPro: http://ali.pub/3l4681
  • EPROM Eracer: http://ali.pub/3l46hd
  • DC-DC Step Up: http://ali.pub/3l47fs

Программатор EPROM: 2 комментария

  1. Сергей

    Добрый день и с Новым годом!
    Если ещё остались платки, хотел бы одну прикупить. Как это сделать?
     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *