Программатор микросхем PSoC,
подключаемый к принтерному порту компьютера (LPT).

Поддерживается практически все семейство PSoC 1, включая серию CY8C29xxx.
Есть режим Power-On Reset, что дает возможность программировать 8-выводные микросхемы.
Программу, работающую с этим железом, а также информацию о прототипе можно взять здесь (zip-архив 151 кБ).

 


1-й вариант – посложнее («Programmer Type3 Enhanced»)

На плате присутствует панелька под 8-выводные микросхемы (с возможностью макетирования простейших схем,
т.к. на спец. разъем выведены четыре линии ввода/вывода) и разъем для программирования внешних устройств (ISSP).
После программирования линии SCLK и SDATA переводятся в третье состояние – чтобы не мешать работе устройства.
Есть возможность управлять питанием (если у внешнего устройства имеется собственный источник, следует
позаботиться об отсутствии конфликтов напряжений).


Краткое описание схемы

Электрическая схема программатора показана ниже. Она практически полностью повторяет схему «Programmer Type3», предложенную Ajithalayam из Индии. На плате появилась панелька под корпус DIP8 и дополнительные контакты для макетирования.

Устройство выполнено на основе буферной микросхемы CD4050 (отечественный аналог К561ПУ4). Диоды D1...D4 служат для перевода линий SCLK и SDATA в высокоимпедансное состояние. Резисторы R2...R5, «перекочевавшие» из оригинала, призваны улучшить переходные процессы в этих линиях, но все прекрасно работает и без них. Поскольку моя плата неоднократно модифицировалась, то исторически остались только R2 и R3. Ключ Q1 подает питание как на программируемую микросхему, так и в разрабатываемое устройство, которое соединяется кабелем через коннектор J2. С помощью этого же ключа осуществляется и вход в режим программирования «Power-On-Reset». Резистор R8 служит для устойчивого вхождения в этот режим – он обеспечивает быстрый разряд конденсатора C2, формируя достаточно резкий спад напряжения питания. В качестве Q1 подойдет любой p-n-p транзистор, но лучше применять транзисторы с малым напряжением насыщения (типа КТ529).

С помощью микросхемы CY8C2x143, вставленной в панельку J4, и внешних цепей, подключаемых к коннектору J5, можно макетировать простейшие устройства, не изготавливая специально для них печатную плату.

 

Ниже показана топология печатной платы и ее фотографии. Она имеет размеры 28 х 67 мм и эволюционно изменялась, о чем упоминалось выше.


Небольшое улучшение 

При эксплуатации программатора выяснилось, что не все компьютеры при установке линий LPT-порта в состояние лог.1. выдают напряжение от 4,5 В и выше. Это приводит к тому, что ключ Q1 остается открытым, и на программируемую микросхему всегда подается напряжение питания. Программирование в режиме «Power-On Mode» при этом становится невозможным.

Исправить ситуацию поможет небольшое изменение электрической схемы, как показано на рисунке справа. Светодиод LED3 сдвигает порог переключения транзистора Q1 вниз примерно на 1,9 В, обеспечивая устойчивую работу устройства с 3-х вольтовыми LPT-портами. Дополнительно этот светодиод будет сигнализировать о подаче напряжения питания на микросхему.

Плату, показанную выше, я модернизировал перерезанием проводника между выводом R1 и базой Q1. Здесь на печатной плате имеются две неиспользованные контактные площадки, которые я отделил от общего провода и использовал под установку оранжевого светодиода LED3. SMD-резистор R1-2 впаян между печатными проводниками. Разумеется, при повторении конструкции откорректируйте соответствующим образом топологию печатной платы.


Работа с программатором

Программатор предусматривает два варианта использования – в качестве самостоятельного отлаживаемого устройства (с установленной в панельку микросхемой PSoC и цепями, подключенными к коннектору J5), либо для программирования внешних устройств через разъем ISSP (J2). Программа не различает эти варианты, поэтому для исключения конфликтов отключайте внешнее устройство при вставленной в панельку микросхеме и наоборот – извлекайте микросхему при использовании ISSP.

Схема подключения программатора к отлаживаемому устройству посредством ISSP показана справа. В идеале, на печатной плате отлаживаемого устройства следует предусмотреть 5-контактный разъем или контактные площадки. В крайнем случае, на период отладки можно просто подпаяться к соответствующим проводникам. К выводам P1[0] и P1[1] микросхемы могут подключаться кварцевый резонатор или цепи отлаживаемого устройства. Первый программированию не мешает, а вот о блокировке последних надо позаботиться схемотехнически (они не должны нагружать линии в процессе программирования). Более подробно о реализации ISSP говорится в документе AN2014 – Design for In-System Serial Programming.

Еще следует знать, что существует два режима вхождения в режим программирования – при подаче питания на микросхему (так называемый режим «Power-On Mode»), либо по сигналу сброса («Reset Mode»). У 8-выводных чипов режим «Power-On Mode» является единственно возможным, поскольку вход сброса XRES отсутствует. Остальные микросхемы могут программироваться двояко. При использовании режима «Power-On Mode» емкость конденсаторов в цепи питания должна быть минимальной, иначе микросхема просто «не выйдет на связь».

Протоколы программирования открыты и подробно описаны в документах AN2026a(b) «In-System Serial Programming (ISSP™) Protocol». Они основаны на посылке «векторов» – уникальных последовательностях, инициирующих процедуры начала стирания, чтения, программирования, верификации, подсчета контрольной суммы и защиты от несанкционированного чтения. Всем этим процедурам соответсвуют кнопки «Erase», «Read», «Program», «Verify», «ChkSum» и «Secure» в программе cyp.exe, которая находится в архиве по ссылке в начале статьи.

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

Если это произошло успешно то в окне Device ID появится тип микросхемы, в противном случае – сообщение «Device not found». Последнее означает отсутствие связи с микросхемой, что может быть вызвано разными причинами – программатор попросту не включен (не подано питание), отсоединены кабели, неправильные настройки программы и т.п. После ликвидации этих причин следует повторно запустить программу, либо нажать, например, на кнопку «ChkSum» – произойдет повторная идентификация, и в случае успеха – подсчет контрольной суммы.

Скорее всего, сообщение об отсутствии связи у вас все-таки появилось, поэтому кнопкой «Settings» вызовите окно настроек.

Прежде всего, в раскрывающемся меню «Port» выберите адрес LPT-порта компьютера, с которым будете работать. Может случиться так, что физически этот порт присутствует на материнской плате, но не включен в установках BIOS-а. Тогда войдите в BIOS, задайте режим «Normal», а также заодно посмотрите адрес этого порта.

Далее, из меню «Hardware Type» выберите тип программатора «TYPE 3» (наша схема соответствует этой модификации), а в панели «Program Mode Entry» задайте метод программирования, с которым будете работать – об этом говорилось выше (не забывайте правильно его устанавливать!).

Параметр «Delay» служит для приведения временных параметров процессов к норме, в зависимости от быстродействия примененного компьютера. Практически на всех машинах (тестировались от 486-х до Pentium 2,4ГГц) этот параметр можно сделать минимальным (1 мкс), что соответствует максимальной скорости обмена данными между компьютером и программируемой микросхемой. При использовании длинных кабелей параметр «Delay», возможно, придется увеличить. Мой LPT-кабель имеет длину порядка 70 см, а «хвостик» ISSP – 20 см.

Галочка «Verify after Program» служит для включения автоматической сверки (верификации) исходного кода с кодом, зашитым в микросхему.

После программирования микросхема PSoC остается в незапущенном состоянии, поэтому стартовать зашитую в нее микропрограмму надо принудительно. Делается это одним из способов – либо кратковременным снятием питания с микросхемы, либо подачей сигнала сброса. В основном окне программы для этого предусмотрены две галочки – «Power» и «Xres». В зависимости от способа, первую надо снять и заново установить, вторую – установить, а затем снять.

Обратите внимание на линии SCLK и SDATA. В состоянии ожидания эти линии должны находиться в высокоимпедансном состоянии, что должно обеспечиваться подачей напряжения обратной полярности на цепочки диодов D1D2 и D3D4 (на выходах U1.2 и U1.5 должны быть лог.0, на выходах U1.3 и U1.6 – лог.1). Это критично в тех случаях, когда к ножкам P1[0] и P1[1] подключен кварцевый резонатор, либо эти выводы задействованы в схеме. Описываемая программа (версия 1.7), в принципе, поддерживает эти состояния, хотя в более ранних версиях с этим были проблемы. Имейте в виду, что до старта и сразу же после старта программы состояние этих линий может быть неопределенным.

Ну и напоследок предостерегу от подключения к коннекторам J2 «ISSP» и J5 «User» излишне энергопотребляющих устройств – максимальный потребляемый ток определяется возможностями транзистора Q1 (указанный в схеме прибор выдерживает токи только до 0,1 А)! Если у внешнего устройства имеется собственный источник питания, то следует позаботиться об отсутствии конфликтов напряжений – разорвать линию питания со стороны источника, либо со стороны разъема J2 (линия Vcc). В последнем случае режим «Power-On Mode» становится невозможным. При использовании режима «Power-On Mode» суммарная емкость конденсаторов в цепи питания должна быть минимальной – не превышать долей микрофарады.

 


2-й вариант – простейший («Simple Type4»)

Для программирования микросхем перед установкой их в устройство уже упомянутый Ajithalayam предложил еще более простой вариант.
Источник питания здесь вообще не нужен, т.к. напряжение берется с одной из линий порта компьютера.
Этот вариант можно приспособить и для программировании микросхем в устройстве, но для этого последнее должно
иметь собственный источник питания, а линии P1[0] и P1[1] микросхемы PSoC – быть незадействованы.

Еще раз напоминаю, что микросхемы с количеством выводов больше 8 могут программироваться двояко – через режим «Power-On Mode» и через режим «Reset Mode» (выбирается в настройках программы). В последнем случае линия «XRES» (показана пунктирной линией) должна заводиться на панельку. При программирования в устройстве режим «Power-On Mode» недоступен (поскольку нет управления питанием), а значит 8-выводные микросхемы здесь программироваться не могут. Перечисленные ограничения являются платой за простоту.

Схемы двух версий этого программатора показаны ниже. В конструкции можно вообще обойтись без печатной платы – элементы D1 и R1 смонтировать на выводах разъема J1, а конденсатор C1 – на выводах панельки J2 (J3).

Все, сказанное в разделе «Работа с программатором» для 1-го варианта, справедливо и здесь. В настройках программы должен быть выбран тип программатора «TYPE 4»:

Запись образа объемом 32 кБ у микросхемы CY8C29466 занимает около 14 секунд, чтение – около 9.

 


Что делать, если у компьютера нет принтерного порта?

1. Вполне возможно, что материнская плата поддерживает эту возможность – нужно просто раздобыть соответствующую планку и подключить ее к материнской плате. Не забудьте также в BIOS-е включить порт (режим «Normal») и посмотреть (или изменить) его адрес.

2. Если материнская плата позволяет – установить в свободный слот расширения дополнительную плату. Но таковую еще придется поискать.

3. Работать с переходниками USB->LPT не получится, т.к. программа напрямую общается с портом. Есть дешевые платы на основе микросхемы CH341A, которые можно заставить работать с PSoC. О том, как это сделать, рассказано здесь.

 


antiradio.narod.ru/psoc
Дата создания документа: 05.03.2007. Последнее обновление: 01.10.2020.