Главная arrow Статьи arrow JonisProg 2003 и SPI-Flash  
27.07.2017 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Простые устройстваОтличные товары по превосходным ценамОтличные товары по превосходным ценам
JonisProg 2003 и SPI-Flash Печать E-mail
Рейтинг: / 25
ХудшаяЛучшая 
Автор leonvn   
07.08.2007 г.

Ко мне обратился человек, занимающийся ремонтом компьютеров и материнских плат. С чем он обратился, зачем, и что из этого получилось (забегая вперед скажу, что получился плагин ChipBoom SPI_FLASH) - он написал в небольшой статье, которую я предлагаю вашему вниманию.

Предыстория.
Пришел человек, принес материнскую плату GA-8I945PLGE-RH, сказал, что при обновлении BIOS материнской платы через Интернет его компьютер перестал работать (впоследствии оказалось, что им был зашит BIOS от другой модели платы). Сначала я подумал "не беда, прошью микросхему BIOS на программаторе", но, посмотрев на плату, не обнаружил знакомых очертаний. Оказалось, что производитель для этой платы использовал микросхему флеш-памяти с последовательной записью (serial flash) SST25LF040A.

В моем распоряжении есть два программатора: 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В. Тут есть три пути решения.

  • Первый путь самый легкий в реализации, но, возможно, самый трудный в настройке. Этот путь подойдет тому, кто не хочет сильно заморачиваться и ему нужно прошить одну-две микросхемы и больше к этому не возвращаться или шить очень редко.
  • Второй путь предполагает изготовление переходной панельки специально для этого типа микросхем с питанием 3В. Эта переходная панелька будет вставляться в панельку 25xxx на адаптере программатора, который в свою очередь вставляется в разъем самого программатора. Недостатки - реализация сложнее, универсальность ниже. Достоинства - надежность значительно выше, чем первый вариант. Подойдет тем, кто намерен программировать только этот тип микросхем.
  • Ну и третий путь - меняем схему питания программатора. Реализуем три напряжения питания на 3,0В, 3,3В и 5В, которые будем переключать джамперами или трехпозиционным переключателем в зависимости от питания установленной микросхемы. Недостатки - реализация сложнее, чем в первом варианте, но не сложнее чем во втором. Достоинства - максимальная надежность в работе и универсальность. Подойдет тем, кто хочет получить программатор со значительно более широкими возможностями, так сказать с заделом на будущее, ведь постепенно все программируемые микросхемы мигрируют с питания 5В на 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.

Рис.1
Рис.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
Рис.2
Разводка печатной платы приведена на рис.2. Всё, что закрашено черным, нужно вытравить. Плата приведена в масштабе 1:1 и имеет размеры 2 х 1,5 см. Изготавливать её методом "лазерного утюга" не очень удобно, поэтому я делал так. Подготовил платку, наклеил скотч, распечатал рис.2 на принтере и приклеил его к скотчу, которым в свою очередь обернул платку поверх наклеенного первого скотча. Затем острым ножом вырезал всё черное. Прорезал так, чтобы лезвие достало до меди. Убрал второй скотч с бумагой, а у первого убрал вырезанные полоски. Далее травим платку, затем убираем первый скотч, облуживаем дорожки и напаиваем детали.

На рис.3 изображено размещение элементов на печатной плате.

Рис.3
Рис.3
Сделав стабилизатор напряжения, устанавливаем его на плату. На моем программаторе было свободное место, и я приклеил плату к программатору. Выпаял старый стабилизатор 7805 и вместо него впаял проводки от нового стабилизатора. На фотках изображены вытравленная печатная плата, готовый стабилизатор и стабилизатор, установленный в программатор.

Image
Вытравленная плата
Image
Собранная плата
Image
Установленная плата

Но это ещё не всё. Оказалось, что выходная схема каждого элемента микросхемы 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В.
Если вам все-таки пришлось заменить микросхему MAX232 на MAX3232, то необходимо ещё одно важное изменение. Дело в том, что во время экспериментов сдохла микросхема MAX3232 и диод VD1. Сначала всё было нормально, и программатор был окончательно собран. После сборки провел серию тестов в разных режимах и с разными микросхемами, начиная с простых eeprom и заканчивая микроконтроллерами. Дойдя до тестов с 3-х вольтовыми микросхемами, программатор, через некоторое время, перестал работать, а MAX3232 начал очень сильно греться (кстати, когда она была жива, то в работе тоже сильно грелась, поэтому и сгорела). Оказалось микросхема неисправна. Это произошло вследствие большого потребления тока через 2 ножку микросхемы при её напряжении питания 3 и 3,3 вольта. При напряжении питания 5В такого не наблюдалось. Видимо сказалась схема вольтодобавки реализованная через MAX в этом программаторе. Поэтому решено было ограничить потребление тока, отключив 2 ножку микросхемы от платы, впаяв в разрыв резистор и добавив конденсатор плюсом на 2 ножку минусом на землю. Резистор на 24-27 Ом (сильно выше не желательно, т.к. понизится напряжение и пострадает схема вольтодобавки, а ниже - увеличится нагрев микросхемы), конденсатор электролитический ёмкостью не ниже 4,7 мкФ на напряжение 16В.
После замены MAXa напряжение MCLR (смотреть при напряжении питания 5В, но не 3 и 3,3В) может оказаться немного занижено (около 12В или ниже). Для исправления этого необходимо внести следующие изменения, перечисленные в порядке приоритета: 1) заменить конденсатор С2 (идущий от 3 ножки MAX) емкостью 1 мкФ на 10-47 мкФ или повыше; 2) заменить диоды VD1, VD2, VD3 и VD7 на диоды с низким падением напряжения; 3) уменьшить сопротивление резистора R7 с 1 кОм до 820 Ом; 4) вместо транзистора VT1 и резистора R1, которые управляют подачей питания на программатор, применить небольшое реле на номинальное напряжение включения не менее 12В (например от неисправного модема). После этих доработок напряжение сигнала MCLR пришло в норму.
Теперь вернемся к вопросу о необходимости замены микросхемы MAX232 на MAX3232. Как уже говорилось выше во время тестов сгорела микросхема MAX3232. Решил на время установить старую MAX232. И произошло чудо, старая микросхема прекрасно работала на напряжении 3,0 и 3,3В, нужно было только чуть увеличить задержку в плагине управляющей программы с 0 до 2. Флэш-память читалась и прошивалась, хотя раньше отказывалась это делать при напряжении ниже 3,24В. Видимо сказалось стабильное напряжение, выдаваемое стабилизатором, а не стабилитроном, как было раньше. Поэтому MAX надо менять в самую последнюю очередь, возможно и со старым все будет работать.

 P.S. Если у вас возникли вопросы по доработке программатора, есть предложения, обнаружили ошибки, хотите покритиковать - пишите мне (и мне Подмигивающий - прим. ARV

Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , специально для сайта http://arv.radioliga.com

Примечание от ARV: автор в статье дает позиционные обозначения по принципиальной схеме программатора JonisProg, надеюсь, найти ее в интернете не составит труда (автор не посчитал нужным привести схему в статье).

 


Добавить в любимые (0) | Просмотров: 51508

  Ваш коментарий будет первым

Только зарегистрированные пользователи могут оставлять коментарии.
Пожалуйста зарегистрируйтесь или войдите в ваш аккаунт.

 
« Пред.   След. »
Полезные материалы по сходным темам
BannerFans.com