St-link своими руками
ac163.ru

St-link своими руками


St-link своими руками

St-link своими руками

St-link своими руками

      Как-то так исторически сложилось, что, хоть и «подружился» с микроконтроллерами от ST Microelectronics я уже давненько, но полноценного отладчика до сих пор у меня не было. «Подсадил» на STM8 меня друг, подарив на день рождения платку STM8S-Discovery. Вдоволь наигравшись с целевым камушком, я отключил отладочную часть платки, а встроенный ST-Link стал «рабочей лошадкой» в моей лаборатории. Таковым и оставался бы до сих пор, и всё было хорошо, да вот где-то с полгода назад случилась ситуация, которая сподвигнула меня на изыскания по размножению отладчика: мне пришлось подключить обратно отладочную часть дискавери, так как проэкт, над которым предполагалось работать, использовал тот же проц, что и в дискавери, и обросла платка некислым таким «ежиком» из проводов и деталюшек, закипела работа… А тут заказчик звонит-мол, приедь ко мне да подправь, плиз, прошивочку в своём устройстве-да там фигня, задержку на секунду увеличить и всего-то делов… А «рабочая лошадь» чуть ли не намертво к рабочему столу привязана проводами да кабелюками, блин! Пришлось разбирать, конечно… Вернувшись от заказчика и грустно поглядев на то, что ещё утром было полем для бурной деятельности по проверке идей-полез искать вдохновения в гугле. Кому интересно, что из этого получилось-добро пожаловать под отрезь… :)
      Вариант «пойти и купить», конечно же, рассматривался. Но, поскольку «неспортивно», был оставлен в качестве «плана Б». Очень быстро были найдены фотографии внутренностей полноценного ST-Link, его «слизанная» схема, и всё хорошо, да только прошивки для полного счастья не хватало. Но на третьей странице гугля была найдена ссылочка на , где пользователь Chinook выложил «слизанную» им .
      Само собой разумеется, вариант «сделать самому» тут же перевесил «план Б». Ну и кроме того, возможность добавить некоторый функционал, отсутствующий в фирменном St-Link, весьма таки грела душу.
      Тут надо заметить, что чаще я делаю мелкие девайсики, которые дополняют или расширяют функционал родительских устройств. Счётчики там всякие, интерфейсные платки, индикаторы и прочая тому подобная мелочёвка. И большинство этих штучек получают свои миллиамперы питания от родительского устройства, вживляясь в его схему. Поэтому отсутствие в штатном St-Link возможности запитывать таргет непосредственно от отладчика, и как следствие-отсутствие возможности выбора питания-5 или 3.3 вольта-меня нисколько не радовало. Да, конечно же, существует лабораторный источник питания и всё такое… Собственно говоря, первое включение после сборки всегда через лабораторный БП-мало ли что, даже новые деталюшки и то не всегда бывают исправными, ну а если уж где-то «соплю» проглядеть-так и подавно проблемы будут. Но когда всё проверено-зачем лабораторный БП гонять, если можно запитаться прямо от компа?
     Вот примерно с такими мыслями я и приступил к компиляции входных данных. Были изучены доступные схемы отладчиков-из мануалов по разным версиям Discovery и найденные в сети, внесены изменения и доработки, в результате получилась вот такая spaghetti diagram схема:
Схема клона St-Link
      Поскольку на момент составления схемы всё ещё были некоторые нестыковки, в частности-разночтения в подключении ножек идентификации, разводка JTAG в одной из схем отличалась, и, кроме того, окончательно было непонятно: заработает этот компот как надо или же нет-то часть ножек контроллера была выведена на контактные площадки для удобства перекоммутации. А если бы эта компиляция не заработала-то эти дополнительные контактные площадки позволят использовать плату как отладочную для какого-нибудь простенького USB устройства. Как раз с целью возможности использовать эту плату как отладочную я и развёл на ней JTAG-интерфейс, ибо JTAG J-Link у меня имеется в виде отдельного устройства. А для облегчения программирования платы теми, кто будет повторять эту конструкцию, на отдельный разъём были выведены все контакты, необходимые при программировании микроконтроллера с использованием его собственного загрузчика. Забегая вперёд, замечу, что ошибки в выбранной мной для работы версии схемы всё же сделали своё чёрное дело, и готовую плату пришлось-таки немного почикать скальпелем и засопливить перемычками. В статью пошла уже исправленная версия схемы и разводки, ну а фотки-уж как есть…
      Разводка разъёма SWIM выполнена в соответствии с распиновкой оригинального ST-Link'а, поскольку у меня есть уже очень много устройств, кабеля программирования которых используют именно эту распиновку. А вот распиновка SWD/JTAG разъёма моя собственная. Во-первых, применённый в оригинальном ST-Link разъём не вписывался в выбранный мной корпус, во-вторых, для штыревых разъёмов типа PLS-PLD я, по возможности, предпочитаю делать «диагональные» или «симметричные» разводки разъёмов, как минимум в той части, в которой разведена сила. При этом, если вдруг разъём случайно будет перевёрнут на 180 градусов, земля и питание всё равно попадут на свои места-меньше риска испустить magic smoke. Просто устройство не будет работать. Естественно, если в разъёме присутствуют сигналы выборки или включения, неплохо бы позаботиться, чтобы при перевороте разъёма они попали на пины, которые обеспечат этим сигналам неактивные уровни. Такая себе защита от дурака, хотя и давно известно, что хуже дурака-только инициативный дурак…
Разводка
      Плата разводилась с использованием компонентов типоразмера 0603 под корпус . Можно было, конечно, использовать и 0805-места на плате более чем достаточно. Но я уже давненько перешёл на 0603, и не стал изменять своим привычкам. Размещение компонентов выбрано таким, чтобы плату можно было как монтировать в корпус (при этом кварцевый резонатор и разъёмы отладчика запаиваются на обратной стороне платы и используются выводные светодиоды), так и без корпуса, при этом разъёмы и кварц запаиваются сверху, и используется двухцветный светодиод FYLS-1210. Поскольку мне до сих пор не понятно, как и для чего ST-Link использует контроль напряжения целевого устройства, предусмотрена возможность коммутации измерительного входа микроконтроллера с постоянно присутствующего напряжения питания на напряжение питания целевой платы. Для контроля напряжения питания целевой платы необходимо запаять резистор R14, для отключения возможности контроля должен быть запаян резистор R16, причём должен быть запаян либо один, либо второй, но никак не оба вместе. В моей плате запаян R14, всё отлично работает.
Плата
Плата
      Печатная плата устройства во всех отношениях экспериментальная. Экспериментальное устройство, первая проба металлизации отверстий в домашних условиях, первый тентинг с использованием фоторезиста Riston, первая попытка вытравить зазоры 0.2мм на гальванически нарощенной и из-за этого толстой фольге, первое использование сухой плёночной маски… Что-то из всего этого получилось идеально, что-то не очень, но это уже тема для отдельной статьи.
      После запаивания компонентов и пробной установки разъёмов плата приобретает следующий вид:
Плата
      Делаем пробное подключение к лабораторному блоку питания, убеждаемся в отсутствии дыма и нагрева деталей, убеждаемся, что стабилизатор выдаёт свои 3.3 вольта. Потом подключаем платку к компьютеру, который должен бодро отрапортовать о неопознанном устройстве USB. Раз так-значит пока всё в порядке.
      Идём на сайт ST Microelectronics и скачиваем оттуда . «Повбывав би гадiв», которые ST сайт делали. Найти там что-либо… Впрочем, извините, отвлёкся. Скачиваем, распаковываем, устанавливаем. Прямо на разъём загрузчика одеваем перемычку, которая соединит вывод BOOT0 микроконтроллера с плюсом питания и введёт контроллер в режим загрузчика, туда же подключаем разъём от USB-RS232 преобразователя:
Плата
      Подключаем это всё в USB следующем порядке: cначала подключаем USB-RS232, затем подключаем ST-Link, отключать потом будем в обратном порядке. Запускаем Flash Loader Demonstrator, и, если мы не поджарили микроконтроллер во время впаивания, не убили его статикой и не перепутали RX/TX при подключении интерфейса, то софтинка должна бодро отрапортовать, что Target is readable. А значит, ещё один шаг к созданию собственного отладчика пройден.
      Из прикреплённого к статье архива извлекаем файлик STLinkV2.J16.S4.bin, натравливаем на него Flash Loader, ждём пару секунд. Готово! Отключаем сначала ST-link, затем интерфейс. Я не рассматриваю вариант прошивки через JTAG-у кого он есть, те и сами знают, как это сделать; у новичков же адаптер JTAG вряд ли будет. Собственно, его-то мы как раз и делаем… Итак, отключаем интерфейс программирования, снимаем перемычку, и торжественно подключаем наш свежеиспечённый ST-Link к компьютеру. Который должен найти новое устройство и запросить на него дровишки, которые мы уже успели заблаговременно . Торжественно подключаем целевое устройство, запускаем IAR (ну или кто там в чём программирует), нажимаем «записать» и… Нифига не работает! Can not communicate with tool. Вот же ж блин! Столько труда и всё впустую. Последующие три дня проходят в попытках понять что же не так. Попытки замыкания ножек идентификации на землю и на питание в разных комбинациях, изучение осциллограмм, курение логов USBLyzer'а… Пока в один вечер, а если точнее-уже давным-давно ночер, не промахнулся по менюшке и вместо STVP не запустил St-Link Upgrade Utility. Хотя и обновлять на ту же самую версию-нонсенс, палец автоматом кликнул «Upgrade». Апгрейд прошёл штатно, но что самое главное-девайс перестал отваливаться и наконец-то заработал! Когда радости немного поулеглись (я аж проснулся), вернул схему к первоначальному виду и повторил эксперимент. И таки да, дело не в перемычках, а в прошивке. Судя по всему, что поскольку Chinook скомпоновал прошивку из двух разных версий, что-то в ней не совсем срослось. И хотя устройство и определяется как полноценный дискавери, работать оно не может. Корректное обновление записывает полноценную прошивку и решает проблему.
     Теперь, когда железяка работает, пора подумать и о корпусе. Не, я, конечно, понимаю, что «труЪ киберпанк» и всякое такое… Но пару выездов для работы на территорию заказчиков, когда приходилось располагаться с ноутбуком посреди торчащих прутьев арматуры, а провода и платы размещать между кучками стальной стружки, при этом бояться пошевелиться, чтобы случайно что-нибудь ни на таргет, ни на отладчик не уронить, и самому при этом с насеста не сверзиться-навели на стойкую уверенность, что корпус таки быть должен. Как минимум, одной зоной внимания меньше… Берём наш свежеприобретённый корпус, берём боевой «Дремель» и зубопротезный бор, и через пяток минут жужжания бормашинкой и ещё пяток-шуршания надфилем получаем вот такую красоту:

     Ну что ж, теперь можно и разъёмы на их постоянное место впаять, и корпус закрыть. Всё получилось, железяка работает. Но… У нас получилась унылая белая (серая, чёрная-кому там какая попадётся) коробка с двумя разъёмами и перемычкой. Уберём её в ящик стола на месяц-другой, потом решим поШкодить, достанем-и будем долго вспоминать, какой контакт разъёма куда надо подключать, и в какое положение перемычку ставить. Что-то вспомнится, что-то нет, прийдётся доставать из архива проэкт, открывать его и смотреть, что там куда подключено. Непорядок, одним словом. А раз так-надо этот непорядок исправить, желательно, одновременно скрасив унылость монотонной коробки. Сходим на сайт ST, нагло утырим у них их логотип, засунем его в Photoshop (или любимый опенсорсный графический редактор-на выбор по вкусу), немножко там над ним поколдуем… Посолим, поперчим, испечём до готовности:
Полученную бумажку можно вырезать и приклеить на тонкий двухсторонний скотч, но-«нормальные герои всегда идут в обход». Выпросил я как-то на одной из обслуживаемых мной фирм жидкость чудную, заморскую, «жидкий скотч» называемую. Остатки, на попробовать, а вдруг пригодится. Как оказалось впоследствии-очень полезная в мастерской штука. Выкройку на заготовку приклеить перед вырезанием, наклейки всякие сделать, шильдики… Жена с дочкой для рукоделия ихнего таскают периодически, но чего они там с ним делают-не знаю. В общем, у кого ещё этой штуки в арсенале нету-рекомендую обзавестись. А у кого есть-берём баллон и брызгаем на обратную сторону бумажки. Тут должен сделать два замечания. Во-первых, брызгать надо ещё не вырезанный шильдик: так покрытие будет равномерным, и весь стол потом не будет из себя представлять липучку для мух. Хотя брызгать в любом случае лучше на балконе или в подъезде, ибо разлетается неимоверно. Если раз-два, да ещё газетку на стол постелить, то вроде как и ничего. А вот если пользоваться постоянно-комки липкой пыли потом будут обнаруживаться «в самых неожиданных местах»(С). О том, что дышать распылом крайне не рекомендуется, я даже не упоминаю. И во-вторых, не следует пытаться за один раз нанести всю толщину покрытия, особенно на бумаге. Вот как раз о неприятном свойстве бумаги всё впитывать я после продолжительной работы с плёночными шильдиками как-то забыл, ну и дунул, что называется, «от души». Налитая лужица тут же бодро впиталась в бумагу, и теперь у меня наклейка не беленькая, а как будто масляными пальцами залапанная местами. Переделывать я уже не стал, ну а вы постарайтесь не повторять моих ошибок. Наносите клеевой состав тонкими слоями, и каждый раз дожидайтесь высыхания предыдущего слоя (2-3 минуты при комнатной температуре). При этом первые два слоя «запечатают» поры в бумаге, а последующие два-три создадут необходимую для хорошей адгезии толщину слоя. Вот теперь, после окончательной сушки, можно вырезать готовый шильдик и клеить его на наш корпус. Выглядеть это будет так:

Ну вот, а теперь можно и попрограммировать. Равно как и попрошивать, поотлаживать…

Пару слов напоследок. Поскольку это моя первая статья в сообществе, просьба ногами не бить и гнилыми помидорами/тухлыми яйцами не кидать. Объективная критика, наоборот, очень даже приветствуется. Статью размещаю в личном блоге, можно ли/нужно ли её скопировать куда-то в профильный раздел-пусть решают общественность и Ди Хальт. Отладчик был сделан в январе 2013, и 95% этой статьи было написано тогда же, но дописал оставшиеся 5% и публикую я всё это только сейчас, потому что до сего момента не было случая проверить работу отладчика по SWD и JTAG. Собственно, до этого времени работал преимущественно с STM8. Сейчас появилась девборда с STM32, работоспособность SWD/JTAG проверил, даже прошивку в клоне уже успел обновить на крайнюю, всё в порядке. Так что публикую со спокойной душой. :)
UPD:Перезалил ST-Link V2 PCB.zip, так как в него по недосмотру попала старая версия разводки, та самая, которую пришлось скальпелем чикать. Файл CAMTASTIC-LUT.pdf был старый! С фоторезистным вариантом-CAMTASTIC.pdf всё было и есть в порядке. Если Вы будете пробовать изготавливать плату по ЛУТ-технологии-перекачайте, пожалуйста, архив снова. Извините, недосмотрел, сам я уже давно от ЛУТ ушёл…
UPD2:Коллективный разум в комментариях выявил недостаток этой версии отладчика-отсутствие преобразователя уровней. Собственно говоря, во время проэктирования этой платы я даже и не знал, что в оригинале этот самый преобразователь есть. Соответственно, его отсутствие не позволит работать с целевыми платами, МК в которых запитаны от напряжения существенно ниже 3.3в. С этим отладчиком работа с такими платами будет возможна только в случае временного повышения напряжения питания до 3.3в (если это не приведёт к повреждению каких-либо других компонентов платы, естественно). Ну что ж, появится свободное время-буду думать о второй версии этой платы, уже с преобразователем уровней, и, возможно, гальванической развязкой. А пока хочу отдельно и особо поблагодарить коллег , , и за конструктивную критику и ценные комментарии…


Источник: http://we.easyelectronics.ru/STM32/sozdaem-st-link-v2.html

St-link своими руками фото



St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками

St-link своими руками



Меню

Главная

Поздравление на день рождения мужчине 30 лет своими словами
Листья мандарина в домашних условиях
Поздравление с днем рождения мужчине другу от знакомой
Поздравление доцента
Где находились висячие сады семирамиды
Где находиться номер двигателя приора
Как сделать лепёшки вместо хлеба
Как украсить торт кремом в домашних условиях фото пошагово
Поздравления свахе на юбилей 60 лет
Где находится батарейка у ноутбука acer