JonisProg 2003 и SPI-Flash |
Автор leonvn | ||||
07.08.2007 г. | ||||
Ко мне обратился человек, занимающийся ремонтом компьютеров и материнских плат. С чем он обратился, зачем, и что из этого получилось (забегая вперед скажу, что получился плагин ChipBoom SPI_FLASH) - он написал в небольшой статье, которую я предлагаю вашему вниманию.
Предыстория. В моем распоряжении есть два программатора: Sterh ST011 фирмы НПО "БОНД" и самодельный JonisProg 2003, разработанный Jonis. Первый имеет хорошее железо и хорошую программную оболочку, но плохая поддержка со стороны производителя сводит на нет все эти достоинства. При этом его цена значительно превосходит цену подобных программаторов, имеющих к тому же значительно более широкий список поддерживаемых микросхем и хорошую поддержку пользователей в плане добавления новых. Так что, как пользователь данного программатора, к покупке его не рекомендую. Второй программатор - это так называемый JDM-программатор, который программирует только микросхемы с последовательным доступом к памяти. Его преимущество по сравнению с железом PonyProg заключается в наличии микросхемы MAX232. Этот драйвер последовательного порта RS-232 формирует полноценные, соответствующие стандарту, сигналы COM-порта, и проблем с подключением к любому COM-порту любого компьютера не возникает.
Начал с Sterh ST011 и обнаружил отсутствие поддержки этой микросхемы в его списке. Написал в службу поддержки - ни ответа, ни привета, что было уже не однократно и привычно. Затем к компьютеру был подключен JonisProg2003, т.к. у его адаптера была панелька для микросхем серии 25ххх. Но популярные программные оболочки, поддерживающие этот программатор, PonyProg и IC-Prog, не поддерживали данную микросхему, да и вообще флеш-память с последовательным доступом. В списке были лишь AT25040 (serial eeprom) и тому подобное от 1 до 256 Кбайт. Задал авторам данных программ вопросы о включении этих микросхем в число поддерживаемых и стоимости этой работы, получил в ответ лишь молчание. Только автор PonyProg прислал отписку, что микросхема SST25LF040A является параллельной флешкой. Тогда я начал поиск подобных программ, которые бы работали с JonisProg и программировали бы нужную флеш-память. Поиск показал, что готового решения не существует (может плохо искал). Нашел лишь две программы, которые были построены по модульному принципу. Первая, Chamelion, имела открытый скриптовый язык для самостоятельного написания любых плагинов для любых микросхем, но в программировании опыта у меня мало, да и программа, похоже, заброшенная (последняя версия датирована 2005 годом), постоянно глючила в Win XP. Естественно на запросы ответа не поступило. Вторая, ChipBoom, тоже имела модульную конструкцию, плагины писались самим автором, последняя версия была 2007 года, значит проект развивается. Написал автору и вот в течение десяти дней написания, исправления и тестов родился плагин, который позволил успешно запрограммировать микросхему. По даташиту микросхема SST25LF040A имеет напряжение питания от 3 до 3,6 вольт (реально же, как выяснилось позже, запись работала при напряжении не выше 3,3 вольта.) Так как программатор у меня JonisProg 2003, то и описывать переделку я буду применительно к этому программатору, но принципы остаются одни, поэтому перенести изменения можно на программатор PonyProg и подобные.
Итак, вся логика программатора питается от напряжения 5В, микросхема 3-3,3В. Тут есть три пути решения.
Лично я, на время тестирования плагина и прошивки первой флешки, реализовал первый вариант. Но только из-за недостатка времени. Затем, по мере приобретения микросхем, перешел на третий. Но прежде чем описывать конкретно пути решения, нужно сделать необходимый минимум. Как уже говорилось логика программатора 5В, поэтому посмотрите на ваш программатор. Какие микросхемы там использованы? Начнем с MAX232. Не знаю как аналоги, но в моем программаторе использована фирменная MAX232CPE. Её напряжение питания 5В, но реально, как показали опыты, мой экземпляр работал от 3,23В (на 3,22 уже не работал). Её я трогать не стал (т.к. сразу замену не нашел), отсюда и были трудности в настройке при реализации первого варианта переделки. Поэтому, чтобы значительно снизить эти трудности, необходимо заменить эту микросхему на MAX3232CPE и четыре конденсатора в её обвязке (см. даташит). Данная микросхема официально работает от 3В до 5,5В и в остальном является полным аналогом. . И, тем не менее, менять старый MAX нужно в самую последнюю очередь (возможно, менять и не придется). Почему так, отмечено в конце статьи.
Далее идет CD4053 - она работает от 3В до 20В. Тут все нормально. Затем идут микросхемы логики серии 74 - это 02, 86, 05. Вот тут внимательно! У вас должна стоять серия 74HCxxx, т.е. 74HC02, 74HC86 и 74HC05. По даташиту серия с индексом HC работает с напряжением питания от 2В до 6В. Если у вас стоит что-то другое, например, как у меня, вместо 74HC05 стояла К555ЛН2, то менять обязательно! Если вы не сможете найти 74HC05, то вполне можете использовать 74HC06, т.к. выполняет она те же функции. Еще говорят, что российский аналог серии 74HC это КР1564, но лично не проверял, даташита не видел, да и доверие к российским микросхемам ниже, чем к импортным, хотя цена сравнима. Когда я делал свой программатор, то получилось так, что все микросхемы оказались нужной серии, кроме одной, поэтому заменить пришлось только одну. Вот теперь программатор готов к реализации одного из трех вариантов. Первый вариант. Необходимо иметь один стабилитрон на 2,0-2,2В, переменный резистор (желательно многооборотный) на максимальное сопротивление от 10 до 100 Ом и мультиметр. Прошиваемую микросхему в сокету устанавливал так: сделал ножки длиной около 1 см (нарезал из ножек резисторов); у четырех крайних ножек один конец загнул буквой Г и воткнул их все в сокету; напаял на эти ножки микросхему. Затем воткнул анод стабилитрона в GND соседней сокеты адаптера, а катод припаял к центральному (подвижному) выводу переменного резистора. Другой (любой) вывод резистора припаял к шине 5В адаптера. Далее устанавливаем сопротивление резистора в 0 и вставляем адаптер в разъем программатора, программатор включается и на адаптер подается напряжение. Берем мультиметр и измеряем напряжение. Хотя стабилитрон на 2 вольта, реально, при высоких токах потребления (весь программатор и микросхема памяти), напряжение стабилизации повысится до 2,8-3,0 вольта. Затем начинаем крутить резистор, увеличивая сопротивление, и смотрим на мультиметре как повышается напряжение. Выставляем около 3,3 вольта и пробуем: стираем, записываем, проверяем запись. Возможно, установив стабилитрон на 2,2-2,4 вольта, вы сможете получить напряжение сразу около 3,3В и тем самым избавиться от резистора, но у меня таких не оказалось. Так как MAX3232CPE я сразу не смог купить, то пришлось настраивать систему подобным образом. При этом старый MAX (232CPE) при напряжении ниже 3,23В не работал, а микросхема флеш-памяти при напряжении выше 3,27В не работала на запись (хотя до даташиту должна до 3,6В), вот и пришлось в этих 4-х сотках извращаться с переменным резистором. Второй вариант. Я его не пробовал, все получилось в первом, а переходить буду сразу на третий. Но, тем не менее, мне он видится следующим образом. Делаем печатную платку с сокетой под микросхему, тремя стабилитронами на 3В, одним стабилизатором напряжения на 3В и одним транзистором (или буферной микросхемой). Выход стабилизатора подключаем к выводу питания микросхемы (8 ножка сокеты). Стабилитроны подключаем к сигналам CE#, SCK, SI микросхемы (ножки 1, 5, 6 сокеты). 8 ножку сокеты соединяем с 3 и 7. Ну а сигнал SO (2 ножка сокеты) надо как-то согласовать по напряжению с программатором. Например, транзистор поставить или микросхему-буфер. Инверсию транзистора можно скомпенсировать в настройках плагина. Если использовать планарные элементы должно получится компактно. Возможно, такой вариант лучше всего подойдет обладателям железа PonyProg. Просто появится ещё один дополнительный адаптер. Третий вариант. Самый лучший по универсальности и надежности для программатора JonisProg 2003. Значит, делаем так. Нужно изготовить печатную плату с управляемым стабилизатором напряжения по стандартной схеме из даташита, приведенной на рис.1.
Стабилизатор напряжения APL1117 (аналоги LM1117, AMS1117 и т.п.). Его легко найти на дохлых, не совсем старых, материнских платах. Резисторы для планарного монтажа также отпаивались с неисправного оборудования - мат. платы, контроллеры от HDD (особенно от старых на 20-500 Мб) и т.п., но если планарные резисторы нужного номинала найти затруднительно, то разводка платы вполне позволяет применить обычные). Конденсатор С1 для планарного монтажа, а С2 обычный, но ножки загнуты в стороны. Блок перемычек сделан из разъема внутреннего USB порта, выпаянного с мат. платы. Разъем был обрезан до четырех штырьков, ножки вытащены и аккуратно загнуты буквой Г, затем вставлены обратно. Получился разъем для планарного монтажа. Резисторы R2-R4 я уже рассчитал по формуле из того же даташита для получения нужных напряжений. В принципе R2 и R4 можно немного варьировать от 162 до 167 Ом, а R3 от 32 до 35. Но точно всегда можно пересчитать по формуле. Ёмкости С1 и С2, если они уже есть на плате программатора, можно не устанавливать. Переключение напряжений реализовано джампером JP1. В положении 1-2 выбирается напряжение 3,0В, в положении 3-4 - напряжение 3,3В, а если убрать перемычку или установить в положение 2-4 - напряжение 5,0В. Разводка печатной платы приведена на рис.2. Всё, что закрашено черным, нужно вытравить. Плата приведена в масштабе 1:1 и имеет размеры 2 х 1,5 см. Изготавливать её методом "лазерного утюга" не очень удобно, поэтому я делал так. Подготовил платку, наклеил скотч, распечатал рис.2 на принтере и приклеил его к скотчу, которым в свою очередь обернул платку поверх наклеенного первого скотча. Затем острым ножом вырезал всё черное. Прорезал так, чтобы лезвие достало до меди. Убрал второй скотч с бумагой, а у первого убрал вырезанные полоски. Далее травим платку, затем убираем первый скотч, облуживаем дорожки и напаиваем детали.
На рис.3 изображено размещение элементов на печатной плате. Сделав стабилизатор напряжения, устанавливаем его на плату. На моем программаторе было свободное место, и я приклеил плату к программатору. Выпаял старый стабилизатор 7805 и вместо него впаял проводки от нового стабилизатора. На фотках изображены вытравленная печатная плата, готовый стабилизатор и стабилизатор, установленный в программатор.
Но это ещё не всё. Оказалось, что выходная схема каждого элемента микросхемы 74HC05 немного отличается от таковой в микросхеме 74LS05 (К555ЛН2). Этого хватило, чтобы программатор не смог бы, возможно, правильно работать в режиме PIC. Как известно для программирования некоторых PIC микроконтроллеров сигнал MCLR должен быть от 12 до 14 вольт (для устойчивого программирования лучше 13В), а использование микросхемы серии 74HC просаживало это напряжение до 6В. Поэтому один из элементов этой микросхемы, отвечающий за сигнал Reset (MCLR), решено было обойти, отключить и применить вместо него транзистор. Для этого необходимо обрезать дорожку идущую с выхода этого элемента (ножка 6 микросхемы 74HC05, здесь и далее нумерация ножек микросхем и элементов по схеме программатора, которая есть у меня) на вход элемента микросхемы CD4053 (ножка 12). Затем припаиваем резистор, например, на 820 Ом к входу отключенного элемента 74HC05 (ножка 5). К резистору подключаем базу n-p-n транзистора (я использовал КТ3102). Коллектор транзистора подключаем к 12 ножке CD4053. Эмиттер на землю. Транзистор легко разместился на плате между двумя микросхемами и был припаян прямо к их выводам, так что никаких лишних проводков вести не пришлось. Таким образом, сигналом Reset теперь управляет транзистор и напряжение MCLR стало около 13В. Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , специально для сайта http://arv.radioliga.com Примечание от ARV: автор в статье дает позиционные обозначения по принципиальной схеме программатора JonisProg, надеюсь, найти ее в интернете не составит труда (автор не посчитал нужным привести схему в статье).
Добавить в любимые (0) | Просмотров: 59803
Только зарегистрированные пользователи могут оставлять коментарии. |
« Пред. | След. » |
---|