Информационный портал MSEVM



Главная > Программаторы > Программатор Willem Prog (Продолжение)

      Модифицированный вариант pcb3b (http://se-ed.net/mpu51/eprom/eprom.html#SCHPCB), изменена схема формирования Vpp и добавлены резисторы, рекомендованные разработчиками софта. Импульсный преобразователь с микросхемой 34063 заменен на LM 7812 (как в оригинале Willem 3,1). Добавлены джамперы переключения между версиями pcb3b и pcb35. Функционально полный аналог pcb3b/35. Изменена печатная плата в части стабилизаторов Vpp и Vcc. Перемычка для i28001 и две линии D04, D05 напаяны проводом с обратной стороны платы, два диода и резистор (D8, D9, R21) так же паять с обратной стороны. Диод D3 служит для предотвращения попадания потенциала 3-5 v от LPT в цепь питания программируемой МС при выключенном питании, в этом варианте можно заменить перемычкой.

В монтаже и наладке сложнее, чем v3.1s, более высокая плотность компоновки и много перемычек (как и у прототипа, 76 перемычек и 3 провода), но работать с ним удобнее. Расчистка дефектов печатной платы и монтаж заняли около 10 часов. После сборки программатор заработал сразу.


Рис.1 Программатор "Willem" PCB3M.


Проверил работу на МС:
  • W29C020 - ok
  • SST49LF002A - ok
  • W49V002FAP-w/r/er ok, ID nok (вместо ID читает первые адреса области данных, хотя алгоритм чтения ID точно такой же, как у SST49LFxxx)
  • AT49F002NT - ok
  • i28F001BXT - ok
  • 24C08 - ok
  • MX29F002NT - nok (На другом программаторе пишется нормально)
Проверял эти же микросхемы с ПО версий 097g, 097ja, 098d2 - результат тот же. Для контроля проделал то же на программаторе pcb3,1s - все повторяется один в один.

С ПО версии 0,98D5 программатор не работает. Стирание проходит нормально, Hardware test нормально, запись и чтение - ошибка. По некоторым признакам сбоит схема считывания (4014). На рисунке осциллограммы тактовой частоты на выводе 10 МС 4014.



При работе с ПО 0,97ja и 0,98D2 на экране четко видны пакеты из 8-и импульсов тактовой частоты с интервалом примерно 100 мкс, длительность импульсов примерно 5 мкс, более точно мой антикварный осциллограф не показывает. При работе с ПО 0,98D5 в пакете отсутствуют 2-й и 6-й импульсы, естественно считывание происходит не полностью и на выходе мусор. Исходя из этого можно предположить следующие причины (в порядке возрастания вероятности):
  1. Быстродействие схемы видимо не при чем, но чтобы окончательно убедиться в этом, нужно собрать программатор на скоростной серии 74HCxxx. Это потребует некоторых изменений в схеме и полной переделки разводки.
  2. В схеме программатора pcb4,5, для которого разработана эта версия ПО, есть изменения, не влияющие на работу с другими версиями. Например, тактовые импульсы подаются на вход 10 МС 4014 от двух линий LPT через диодную развязку (схема "ИЛИ"). Прецедент уже был - в pcb3,5 изменена схема установки адреса.
  3. EPROM51.exe v0,98D5 содержит ошибки.
Чтобы окончательно выяснить это нужно еще несколько экспериментов со схемой, возможно потребуется собрать новый программатор ну и конечно пораскинуть мозгами.
Функциональное описание

* Это описание сделано только на основании анализа схемы и наверняка содержит много неточностей, но для понимания принципов работы схемы этого достаточно.
** Нумерация компонентов по схеме pcb3m

      Программатор состоит из двух частей, функционально полностью самостоятельных: последовательной секции и главной параллельной EPROM части.

  • Последовательная секция поддерживает микросхемы I2C (Intelligent Circuit) серии: 24CXXX, 25Cxxx, 93Cxxx и PIC-контроллеры. Эти МС программируются либо через встроенные панельки, либо через адаптер, подключаемый разъемом к шине ICSP(Integrated Circuit Serial Peripheral).
    Эта секция - простая последовательная цепь, которая идет от DO0 (pin 2 LPT) к U1a(74HC04), через Q6, Q5, U1b к BUSY (pin 11 LPT). При отсутствии МС в сокетах U7, U10, U12, U13 сигнал от DO0 без изменений проходит на вход BUSI, что используется для контроля подключения программатора к порту. Программирование МС 24Cxx и PIC осуществляется по линии Data. Установка режима, адреса, данных при чтении и записи производится по одному проводу. МС 25Cxx и 93Cxx имеют раздельные ввод и вывод сигналов. Установка режима чтение\запись и адреса, активизация, передача данных при записи осуществляется по линии Data2, а вывод данных по линии DOut, при этом информация на входе BUSI полностью определяется состоянием линии DOut, так как резистор R3 много больше R4. Тактовая частота подается от DO1 через буфер U2.2 по линии D1, CS (Chip Select) и WP (Write Protect для старых МС 24Cxx) поступает от SELIN LPT через буфер U4.5 по линии S4. По схеме хорошо видно, что эта часть программатора полностью автономна и может быть исключена или напротив, собрана в виде отдельной конструкции.


  • Параллельная секция состоит из трех основных частей:

    - Две микросхемы 4503 (2+4 буфера с тремя состояниями и раздельными цепями управления) используются как буфер данных LPT и для управления режимами программатора. Две секции по 4 буфера U2.1-U2.4 и U4.1-U4.4 подключают шину данных LPT (DO0-DO7) к шине данных записываемой МС. В зависимости от режима работы-чтение\запись переключаются сигналом E1 (pin1 U2 U4) от AUTOFEED (pin 14 LPT) через буфер U4.6. Логический ноль - "0" включает буферы шины данных, логическая еденица - "1" - отключает. Два буфера U2.5 и U2.6 управляют загрузкой регистра адреса и выгрузкой регистра данных U3 (4014). Включаются нулем от инвертора U1E, когда AUTO="1". Буферы U4.5 и U4.6 включены постоянно и используются просто как повторители сигналов SELIN и AUTO. SELIN управляет сигналом WE (write enable), сигнал идет от LPT pin 17 к U4 pin 12, от U4 pin 11 на DIP-switches (S4).

    - Регистр адреса - 24х разрядный регистр сдвига на 3 x микросхемах 4015 (U6, U11, U14) выставляется перед каждой операцией чтения\записи последовательным сдвигом значений адреса, поступающих от DO1 через U2.5 на вход D. Значения адреса начиная со старшего разряда поочередно выставляются на DO1 и по положительному фронту тактовой частоты (DO0-U1.6-CLK) сдвигаются в сторону старшего разряда регистра, таким образом за 24 такта регистр полностью заполняется. Когда на входе CLK сохраняется постоянное значение "1" или "0" регистр не изменяет состояния выходов А0-А24. В программаторе версии pcb3,5 входы D U11a и U14a подключены не к выходу предидущего разряда, а к DO4, DO5 LPT и регистр адреса заполняется так же последовательным сдвигом, но все три микросхемы одновременно, т.е. втрое быстрее (это не означает, что и запись Flash в три раза быстрее).

    - Параллельно-последовательный регистр U3 (4014) используются для чтения данных с EPROM. Параллельный вход (pin P1-P8 4014) связан с 8-и разрядной шиной данных EPROM (D0.. D7). При "1" на P/S (pin 9) по положительному фронту CLK (от DO2 через инвертор U1D) byte данных записывается в регистр. Затем P/S устанавливается в "0" и по каждому положительному фронту CLK данные сдвигаются в сторону старшего разряда. Таким образом на выходе Q8 поочередно появляются все значения D7-D0 через инвертор U1F поступающие на вход ACK, где они считываются и записываются в буфер программы. Если на входе CLK неизменяемый уровень "1" или "0", регистр не реагирует на другие сигналы, что позволяет избежать некорректной работы схемы.

Схема питания, построенная на интегральных стабилизаторах 7805 и 7812, подробных пояснений не требует. Дополнительные напряжения получаются включением в "земляной" вывод стабилизатора диодов и стабилитронов, переключаемых джамперами J6-J8. Vpp управляется сигналом Strob (pin 1 LPT) и транзисторами Q3 и Q1. Vcc управляется сигналом Init (pin 16LPT) через U1C и Q2.

DIP switch 12 используется для поддержки различных типов микросхем. Vcc, Vpp и WE и некоторые адреса могут быть подключены к различным выводам Zif 32. Джамперы J1 и J2 также обеспечивают возможность программирования без дополнительных адаптеров МС с нестандартной разводкой выводов. J5 переключает схему регистра адреса для совместимости с pcb3b/pcb3,5, чтобы иметь возможность работы с ПО версий 0,97j и 0,98C-0,98D2

Алгоритмы чтения, записи, стирания, чтения ID любой реальной микросхемы достаточно сложны, в чем можно убедиться заглянув в документацию от производителя. Для понимания принципа работы программатора не требуется описывать их во всей полноте, достаточно упрощений. Тем более, что все операции состоят из ряда элементарных действий - установка шины адреса, установка шины данных, WE, CE, OE, выполняемых в определенной последовательности.

    Запись Flash:
  1. SELIN - "1" (WE - "1" запись запрещена), AUTO - "1", шина данных отключена (E1 - "1", U2.1 - U2.4, U4.1 - U4.4 отключены), U2.5 и U2.6 включены. На DO1 выставляется значение старшего разряда адреса An, на DO0 поступает тактовая частота. С приходом положительного фронта CLK значение адреса записывается в ячейку Q1 регистра. На DO1 выставляется значение адреса An-1, следующий импульс CLK сдвигает An в ячейку Q2, а в Q1 записывает An-1 и тд. Цикл повторяется до полнлго заполнения регистра значенниями адреса A0 - An.
  2. AUTO - "0", SELIN - "1", U2.5 и U2.6 выключены, U2.1-U2.4 и U4.1-U4.4 включены. CLK=D="1" и регистр адреса в режиме хранения. S6=OE="1"- вывод данных записываемой Flash запрещен. На шине DO0-DO7 выставляется первый Byte записываемых данных.
  3. AUTO - "0", U2.1-U2.4 и U4.1-U4.4 включены, на выводах записываемой МС присутствуют значения адреса и данные. SELIN = WE = "0" - запись разрешена - внутренняя логика Flash микросхемы производит запись данных D0-D7 в массив памяти по установленному адресу.
    Чтение Flash:
  1. Установка адреса аналогично зписи.
  2. SELIN - "1" (WE - "1" запись запрещена), AUTO - "1", S6=OE="0" вывод данных разрешен, DO2 имеет постоянное значение и регистр 4014 в пассивном состоянии. На выводах Flash микросхемы присутствуют адрес и сигнал разрешения вывода OE="0". Внутренняя логика микросхемы дешифрует адрес и выводит на шину D0-D7 Byte данных.
  3. На вход CLK U3 подается импульс по положительному фронту которого данные с шины D0-D7 записываются в регистр 4014.
  4. DO1=D="0" регистр 4014 переключается в режим сдвига. На вход CLK от DO2 подается импульсная последовательность и записанные данные сдвигаются на вывод Q8 U3, оттуда через инвертор U1F на вход ACK, где считываются программой.
Для чтения ID программатор использует программый метод суть которого заключается в записи в микросхему определенного набора команд для перевода в режим чтения ID и считывании 3х Byte'ного кода. Таким способом можно прочитать ID не всех микросхем. Например, в старых EPROM для перехода в режим ID нужно подать на вывод А9 напряжение 12 в. Многие МС более поздних выпусков тоже поддерживают этот способ для совместимости со старой аппаратурой. Это реализуемо и в Willem'е, достаточно подать 12в на А9 при чтении МС (убедившись по документации, что этот режим поддерживается) , значения адресов 0000 и 0001 и будут содержать ID. Информацию по кодам ID можно найти в документации или на тематических сайтах, например, на форуме по программатору BiDiPro http://www.geocities.com/pop_eco/ .

Работа схемы в других режимах и при записи МС других типов происходит аналогично, но могут быть некоторые отличия. Например при записи 16-bit EPROM на каждый адрес пишется 2 Byte'а данных, а при записи FWH адрес устанавливается два раза на каждый Byte, что обусловлено конструктивными особенностями этих микросхем.
Наладка
Подробно о наладке см. в №5-2006

Котухов М.Г.
г.Усть-Каменогорск, Восточно-Казахстанская обл.
kotyx@mail.ru




Приложение

  • pcb3m.zip - Модифицированный вариант pcb3b (топология платы, расположение элементов, схема)


Обсудить на форуме









e-mail рассылки
Радиолюбитель
Подписаться письмом

















Яндекс цитирования Rambler's Top100