No Image

Spi flash программатор usb

СОДЕРЖАНИЕ
117 просмотров
12 декабря 2019

Тема отнюдь не нова, но, как показывает практика, дополнительный материал никогда не будет лишним, ведь на одной из картинок можно прояснить для себя какой-то непонятный момент, увидеть как лучше делать или подсмотреть вообще что-либо другое.

В этой заметке пойдет речь об изготовлении программатора, предназначенного для прошивки микросхем в корпусе DIP-8. Устройство является клоном серийного программатора "BlackcatUSB", печатная плата, схема, прошивка контроллера и софт для работы с устройством взяты отсюда meandr.org/archives/12018.

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

Большая часть статьи посвящена изготовлению печатной платы методом ЛУТ (лазерно — утюжная технология). Метод является аккумуляцией коллективного опыта, что означает вариативность технологии, то есть разные этапы изготовления можно выполнять с использованием различного материала и оборудования. В этой статье используется все, что почти у всех есть под рукой, кое-что (станок для резки) лучше даже было бы заменить дремелем (гравером).
Это мой первый опыт изготовления печатной платы вообще и методом ЛУТ в частности. Также в первый раз осуществлял запайку микроконтроллера. Радиодетали поверхностного монтажа до этого паял, но опыта совсем немного. Раз даже у меня получилось, то это будет и под силу любому другому начинающему включая тебя, %drivername% 😉

Список используемого оборудования

1. Паяльная станция;
2. Паяльник ProSkit с модифицированным жалом «микроволна»;
3. Сверлильный станок;
4. Отрезной станок.

Список используемых материалов

1. Фольгированный текстолит (20р);
2. Хлорное железо 500 грамм (70р);
3. Сплав Розе 100 грамм (70р);
4. Флюс ЛТИ-120 с кисточкой(35р);
5. Радиодетали (

60-70р):
6. МК AT90USB162 (130р).

Хлорного железа и сплава хватит на большое количество плат — первого используются десятки грамм, второго — несколько грамм.

На приобретенный в магазине фольгированный текстолит мы будем переносить тонер, который формирует изображение печатной платы. Печать изображения ПП выполняется на лазерном принтере, жирность, насыщенность в настройках принтера и печати должны быть максимальным, для максимального же осаждения тонера на лист бумаги. Отмечу, что изображение ПП для печати должно быть в зеркальном отражении, подробнее об этом в следующем разделе. Для того, чтобы при переносе на текстолит на бумаге осталось наименьшее количество тонера (а в идеале вообще не осталось) бумага должна быть глянцевой и плотной.
Теперь о моем опыте. Естественно, идти/ехать за всеми рекомендуемой бумагой Lomond у меня не было никакого желания, то решил ограничиться тем что найду дома. Под руку попался каталог известный всем каталог AVON (рисунок 1).

Теперь наша задача перенести полученный принт на фольгированный текстолит. Текстолит перед этим стоит обезжирить (спирт, ацетон), но я, впрочем, этого не делал 🙂 Отпечатанное изображение должно быть в зеркальном отражении (о чем упомянуто выше), так как оно будет переноситься и опять зеркально же отразится, таким образом, на текстолите мы получим правильное изображение.
Перенос выполняется следующим образом: вырезаем изображение ПП, прикладываем к текстолиту, прокладываем несколькими слоями газетной бумаги и греем/проглаживаем сверху утюгом в течении

15 секунд. Вместо газет использовал каталог METRO C&C, рисунок 4.

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

На этом этапе мы удалим всю не защищенную тонером медь (покрытие текстолита — фольга) методом химического травления. Для этого нам понадобится хлорное железо, которое без проблем приобретается в радиотоварах по цене около 70 рублей за 500г. Этого хватит на много-много плат 🙂 Будьте осторожны при работе с хлорным железом и его раствором! Берем ванночку, наливаем горячую воду, разводим хлорное железо. Концентрацию нигде не нашел, ориентировался на описание цвета конечного раствора — цвет «крепкого чая». Очевидно, чем выше концентрация, тем быстрее пойдет процесс травления. Помещаем плату в ванночку с раствором и наблюдаем за травлением. Для ускорения можно немного трясти ванночку. Визуально контролируем, чтобы между дорожками не осталось меди, которая закоротила бы дорожки, также контролируем чтобы протравились всякие мелкие элементы, типы перемычек и площадок под МК (микроконтроллер). В идеале ванночку надо подогревать и держать на вибрирующей платформе, тогда процесс займет не более минуты. У меня ушло минут 15-20, так как трясти не всегда хотелось, раствор был не очень концентрированный, а вода была не сильно горячей и быстро остывала. Извлекаем плату, промываем под проточной водой. Даем высохнуть, протираем ацетоном (у меня был Уайт-спирит). Тонер без проблем счищается вместе с белесым остатком бумаги. На рисунке 8 показан текстолит с готовой разводкой ПП. Как видно качество так себе, но в разрывов не видно, должно работать.

Читайте также:  Вольт амперная характеристика тиристора

Как известно, прежде чем что-то припаять это что-то надо залудить (нанести припой). Да и медь на воздухе окисляется, неплохо бы остановить этот процесс 😉 Существуют различные способы лужения: механический и химические — сплав Розе и «жидкое олово». Первый не очень подходит для последующего поверхностного монтажа (SMD), а также по причине «как-всегда-не-не-хочется-возиться», «жидкое олово» в магазинах города найти не удалось, а от Алика ждать долго. Таким вот методом исключения был выбрано химическое лужение сплавом Розе. Покупать лучше в надежном месте — говорят бывает подделка.
Суть процесса: в металлической таре доводим воду до кипения, помещаем сплав Розе, он начинает плавиться, лицевой стороной кладем ПП на расплав сплава Розе, начинаем аккуратно водить платой, по визуальному контролю останавливаем процесс, достаем плату.
Как это было у меня. Из большой банки кофе Nescafe была вырезана тара с высотой стенки 4-5 см (бонусом годная крышка), рисунок 9. На рисунке 10 текстолит, сплав Розе, шпатель (который не пригодился).

Набрал пару сантиметров воды, поставил на огонь. Довел до кипения и добавил лимонной кислоты, которая выступает в роли активатора поверхности и убирает окисел. Кинул горошины четыре сплава, подождал, лицевой стороной опустил ПП. Сначала хотел на ПП поместить сплав и размазывать шпателем, но пар, горячо, и ни в какую не плавился этот легкоплавкий сплав Розе. Потому тер лицевой стороной платы о горошины сплава. Даже получилось. Результат можно видеть на рисунках 11 и 12 — на свету и на просвет соответственно. По картинке на просвет можно видеть, что термоперенос и лужение прошли не идеально, но замыканий нет, площадки и дорожки целые. Должно работать.

Следующий шаг волнительного изготовления программатора — запайка микроконтроллера. МК Atmel AT90USB162 выполнена в корпусе TQFP32. Проще говоря: с каждой из четырех сторон восемь ножек с весбма небольшим расстоянием между ними. Можно было бы запаять каждую ногу в отдельности, но я предпочел опять-таки обратиться к коллективному разуму — решение конечно же есть. Для пайки МК используют паяльное жало типа «микроволна». Оно представляет собой обычное жало в виде усеченного конуса, но, в отличии от последнего, имеет углубление диаметром около 1 мм и глубиной около 0.5 мм. Т.к. на рабочую паяльную станцию искать и покупать дорогое подходящее жало нужного типа не хотелось было решено взять свой старый-старый паяльник ProSkit (рублей он стоил 100-120) и из обычного жала в форме усеченного конуса сделать «микроволну». О процессе изготовления будет в одной из следующих заметок. «Фишкой» этого жала является использование эффекта поверхностного натяжения (чуть ниже о нем на практике). Будем паять. Помещаем МК на площадки (обращаем внимание на ориентацию ключа МК), выравниваем и прижимаем. Смачиваем одну сторону флюсом (я использовал ЛТИ-120), запаиваем паяльником крайние ножки, смачиваем противоположную сторону и также запаиваем крайние ножки. Все, теперь МК никуда не денется. Смачиваем флюсом запаиваемую сторону, набираем олово на жало, а конкретно оно окажется в углублении, и достаточно быстро проводим по всем ногам одной стороны. Если делать это аккуратно и быстро, то слипания ножек не произойдет. У меня, естественно, произошло 🙂 «Соплю» между ногами нагреваем паяльником и собираем либо на жало, либо оловоотсосом. Повторяем четыре раза. Готово! Результат можно видеть на рисунке 13, съемка под оптическим микроскопом. На рисунке 14 обычная фотография.

Параллельно изготовлению платы я занимался и самодельным сверлильным станком. Но все руки никак не доходили его доделать и на мою удачу на работе отыскался настоящий сверлильный станок, хоть и изрядно уставший от жизни. Сверла использовались диаметром 0.8 мм, как выяснилось позже, для джамперов (контактов), отверстия были малы и пришлось использовать сверла диаметром 1 мм. Номинально кулачковый патрон сверлильного станка зажимает 0.8 мм, но факту этого не случилось. Потому была взятая тонкая проволока и аккуратна намотана на сверло. Это позволило нормально закрепить сверло, визуально биений не было.

Читайте также:  Блинчики с кабачками на кефире рецепт

Изначально планировал вырезать плату посредством дремеля, но, увы, в день когда дошли руки до программатора дремель остался дома 🙂 Потому привожу фотографию станка (рисунок 17) на котором пришлось вырезать плату, что получилось — рисунок 17. Одно могу сказать — страшно было 🙂 Толщина текстолита недостаточна, чтобы программатор плотно вошел в USB-разъем. Из обрезков текстолита вырезал подкладку и сточил на наждачной бумаги, пока программатор не стал плотно входить в разъем.

Распайка элементов, прошивка, проверка

Завершающий этап — распайка элементов. Сложностей не возникло. Распайка SMD-элемента занимает одну минуту. Выставляем по площадкам пинцетом, выравниванием пальцем, прижимаем пинцетом, смачиваем флюсом, запаиваем. Вторая сторона проблем не вызывает тем более. Фотографии готового устройства: рисунок 18, рисунок 19.

Буду рад услышать советы, рекомендации, критику.

Возможно, вам это будет интересно:

Постоянная ссылка на это сообщение: http://meandr.org/archives/12018

  • DmitryKap к 29.11.2013 в 23:45
  • #
  • Войдите, чтобы ответить

Большое спасибо за статью!
Собрал устройство, всё работает отлично!
К сожаления в магазине не было ATmega32U2, поэтому поставил AT90USB162.
Новая прошивка SPI с сайта FCUSB.3.05.SPI.hex заливается, но устройство с ней не работает 🙁 (USB устройство не определено)

  • Vetal561 к 30.11.2013 в 19:43
  • #
  • Войдите, чтобы ответить

Какую Вы прошивку заливали?

  • Gena к 04.12.2013 в 13:44
  • #
  • Войдите, чтобы ответить
  • DmitryKap к 05.12.2013 в 08:01
  • #
  • Войдите, чтобы ответить

Спасибо Gena! Прошил BCUSB.3.04.SPI.hex, теперь Build 330 работает ))

  • DmitryKap к 02.12.2013 в 18:52
  • #
  • Войдите, чтобы ответить

Пробовал заливать все подряд. В итоге пока остановился на прошивке SPI из архива с этой статьи.

  • Gena к 04.12.2013 в 13:41
  • #
  • Войдите, чтобы ответить

Win 8.1 х64 при перемычке 3.3в не опознается системой (неизвестное USB устройство) , при 5.0в все нормально. Без перемычки на J1 напряжения (отн. земли) 1- 5.0в, 2- 4.0в, 3-3.2в. Какое напряжение у Вас на 2 контакте J1 без перемычки (32+4 пин AVCC+VCC на контроллере)?

  • DmitryKap к 05.12.2013 в 08:07
  • #
  • Войдите, чтобы ответить

Gena,
Win 8 не пробовал за неимением, но на Win 7 x64 и Win XP у меня работает.
На 2 контакте J1 без перемычки 0 вольт.

  • Gena к 28.08.2014 в 00:45
  • #
  • Войдите, чтобы ответить

Вот оригинал на ATmega32U2 PCB 1.8

  • Gena к 29.08.2014 в 11:04
  • #
  • Войдите, чтобы ответить

По поводу оригинальной схемы PCB 1.8: контакты 3 и 4 SA2 и Анод VD2 лучше подключить на контакт 2 X2.

  • DanYwil к 25.02.2015 в 21:54
  • #
  • Войдите, чтобы ответить

Здравствуйте, а как к нему подключить CFI flash: 29LV400BB? Нигде не могу найти какие пины куда на флеш, только про SPI есть информация.

Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.

Читайте также:  Балдахин в комнату девочки

CH341 — мультифункциональный конвертер из USB 2.0 в UART, EPP, I2C и SPI.
В режиме UART поддерживаются не только RX/TX, но и остальные сигналы управления, поэтому на чипе можно сделать USB-модем. В режиме параллельного порта реализован интерфейс EPP и эмуляция принтера (позволяющая подключать принтеры с интерфейсом LPT напрямую к USB без написания дополнительных драйверов). В последовательном режиме поддерживаются интерфейсы I2C и SPI.

Чип требует минимальной дополнительной обвязки (внешний кварц и несколько конденсаторов). Возможно использование внешней EEPROM для хранения пользовательских Vendor ID, Device ID и некоторых настроек чипа. Питание от 5 В (через встроенный LDO-регулятор), либо от 3.3 В напрямую.

Кроме CH341A в корпусе SOP-28 имеются два варианта в SSOP-20 — CH341T и CH341H, первый лишен поддержки SPI, в второй — I2C, поэтому рассматривать их в этой статье я не стану.

Описаны в статье про FT232H, повторяться не стану, только замечу, что на CH341A я проверял только работоспособность TX и RX, а не всего UART-интерфейса целиком, если вдруг найдутся какие-то внезапные подводные грабли, как это было с I2C на FT232H — напишите комментарий, буду рад добавить его в статью.

Китайская промышленность предлагает миллион и один вариант универсального I2C/SPI-программатора на этом чипе, один другого дешевле.

Доставшийся мне за 3,5 евро вариант, по заверениям его производителя умеет программировать чипы серий 24хх (I2C) и 25xx (SPI), которые предполагается вставлять в ZIF-сокет (если они в корпусе DIP-8-300), либо прижимать/припаивать к посадочной площадке на обратной стороне платы (если они в SOIC-8 или SOIC-16), либо подключать проводами. На гребенку выведены только UART и SPI, а I2C придется брать из ZIF-сокета, если нужен (эта недоработка устранена в более новых версиях, но они дороже).


Схема программатора отличается от референсной из даташита только использованием внешнего LDO-регулятора вместо встроенного, видимо, встроенный оказался не очень надежным. На моем экземпляре сэкономлено на всем подряд, и кроме CH341A на плате 2 светодиода (Power и Run), 2 резистора, 5 конденсаторов (2 для кварца и 3 для LDO-регулятора), кварц на 12 Мгц, LDO-регулятор AMS1117 на 1 А и ZIF-сокет на два чипа в корпусе DIP-8-300. Из настроек имеется единственный джампер, переключающий программатор между I2C/SPI и USB-UART, при этом у него меняется Device ID.

В Windows 8.1 драйверы для обоих режимов подтягиваются из сети автоматически, а в Linux они имеются в ядре уже несколько лет.

Для программирования в Windows используется китайский софт авторства некоего SkyGz, который большинством продавцов с EBAY распространяется нелегально, но работать от этого не перестает. Вот ссылка на него — malthus.mooo.com/download/file.php? >
Для Linux имеются открытые проекты ch341prog (SPI) и ch341eepromtool (I2C), оба работают достаточно хорошо, но весьма неплохо было бы добавить поддержку обоих режимов в flashrom (гляди, xvilka, народные программаторы по цене грязи, а FR их до сих пор не умеет).

Я проверял работу программатора в Windows 8.1 x64 и Xubuntu Core 15.04 x64 на I2C-чипе OnSemi 24C16 и SPI-чипе Winbond W25Q64CV, работа с I2C занимает секунды (т.к. на чипе 2 Кб памяти и его, при желании, можно читать и писать чуть ли не руками), а вот восьмимегабайтный SPI-чип читается за минуту, а пишется за две, что, конечно, далеко не рекорд, но и не слишком долго для устройства за 5 долларов.

Если вам не нужна поддержка JTAG, десятков тысяч различных чипов и ICSP, зато нужно средство быстрого резервного копирования/восстановления прошивок различных устройств от роутеров до ПК и серверов — рекомендую программатор на CH341A к приобретению, свои 5 баксов он отрабатывает сполна. А когда его поддержку добавят в flashrom — станет совсем хорошо.

С другой стороны, я бы не стал закладывать CH341A в дизайн своих устройств, т.к. его надежность при постоянном применении вызывает некоторые сомнения, а если возникнут вопросы, то задавать их будет некому, ведь даже сайт производителя чипа извне Китая открывается через раз.

Спасибо читателям за внимание, и пусть ваши прошивки никогда не падают.

Комментировать
117 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector