X-Link OpenSource Hardware

Здесь не будет статьи о разработке своего программатора-отладчика (как, к примеру Black Magic Probe, т. к. это время затратно и смысла в этом я особого не вижу), это просто небольшая статья о самодельном варианте отладчика-программатора, который можно прошить в St-Link, J-Link, CMSIS-DAP. Проект открыт для самостоятельного изучения, а также приведена ссылка на заказ печатной платы в OSH Park (мне с этого никакого профита, если что, просто для удобства приведу).

B59-0

Внимание! Материал ниже представлен исключительно в ознакомительных целях, и если Вам необходим J-Link или St-Link в коммерческих целях, то следует приобрести отладчик у официального дилера.

Схемотехника

Схема в целом максимально схожа с Nucleo платами от STMicroelectronics. Вот основная часть с МК (кликабельно):

И часть с питанием:

B59-2

В виде PDF всю схему можно скачать тут — x-Link Э3 изм.0. По пунктам, основные моменты и отличия:

  • Применён прямо совсем народный уже LDO — LM1117MPX на месте DA1 с возможностью установки как фиксированного на +3,3 В, так и ADJ версии с установкой соответствующих резисторов R10, R11 (также он применён по причине хорошего запаса по току, т. к. линия + 3,3 В выведена напрямую на внешний разъём для возможности запитывания небольших устройств);
  • Установлены компоненты переэнумерации USB (компоненты VT1, R5, R6) как в последних платах Nucleo, но схема несколько упрощена;
  • Выведены дополнительные сигналы Tx\Rx (работает только на St-Link) и MCO (меандр 8 МГц) на контрольные точки;
  • Кварцевый резонатор ZQ1 установлен малогабаритный, но довольно распространённый, в корпусе 5032;
  • Для максимального уменьшения размеров на гребёнку XP2 выведен только SWD, и как дополнительная опция +5 В на XP3 для питания мелких устройств прямо от программатора-отладчика (защит не предусмотрено поэтому, чтобы был максимально возможный ток от USB-порта);
  • Предусмотрено место для установки защитного супрессора FV1 по линиям SWD на случай длинных проводов, но к установке не обязателен;
  • МК DD1 можно запаять как в первых версиях STM32F103C8T6 или более правильно будет запаять STM32F103CBT6 с большим объёмом памяти.

Перечень элементов (пассивные компоненты любые, аналоги просто указаны с библиотеки компонентов, чистить\ставить везде «любые» не стал):

Позиционное обозначение Компонент Кол-во Примечание
(аналог)
C1, C4, C7, C9, C10, C11, C12 GRM188R71C104KA01D 7
C3, C6 GRM1885C1H220JA01D 2
C5, C8 GRM21BR60J226ME39L 2
DA1 LM1117MPX-3.3 1
DD1 STM32F103C8T6 1 Рекомендуется
STM32F103CBT6
FV1 SP0503BAHT 1 Не обязательно
HL1 BL-LS0603GC 1
HL2 BL-LS0603HC 1
L1 BLM18PG331SN1 1 Не критично, любая подходящая по току
R1 RC0603JR-071K5L 1
R2, R8, R15 RC0603JR-0710KL 3 CR0603-JW-103E
R3, R4 RC0603JR-0722RL 2
R5, R13, R14 RC0603JR-074K7L 3
R6, R7, R12, R16, R17 RC0603JR-07100R 5 CR0603-JW-101E
R10 RC0603JR-070R 1 RC0603FR-070RL, CR0603-J/-000E
R18, R19, R20 RC0603JR-0710RL 3 CR0603-JW-100E
VT1 BC847 1 Любой аналогичный
XP2 PLS-5 1
XP3 PLS-1 1
XS1 DS1097-B 1 USB-AR, DS1097-W
ZQ1 KX-9A 8.0 MHz 30/50/100 16 pF 1 Любой аналогичный

Разводка

Вот с этим вышло довольно весело, плата переделывалась 2 раза. :) В итоге она-таки мне начала нравиться и результат разводки можно посмотреть ниже (ну или скачав проект, оценить уже в альтиуме), верхний слой:

B59-3

И нижний слой:

B59-4

Вышло вроде бы достаточно лаконично и, насколько это возможно, максимально плотно с элементами 0603 (еще удобными для пайки). Также есть намеренный косяк — эту плату паять с пастой надо очень аккуратно, т. к. я специально все заливки сделал с директ-подключением к компонентам. Так делать в продакшене нельзя (если только не с обеих сторон будет симметрично) — у вас компоненты будут «гробиком» становиться, не пропаиваться или другие «весёлости». Происходит это из-за разности теплоотдачи падов компонента и, как следствие, разной силе поверхностного натяжения припоя при плавлении в печи или феном, т. к. одна сторона быстро нагревается и плавится, а другая еще не расплавилась, то тот же компонент с корпусом 0603 запросто может становиться «гробиком», силы натяжения припоя вполне хватает. Поэтому эта плата для условно ручного монтажа (либо аккуратного монтажа с пастой и последующей проверкой). Сделано это для минимизации сопротивления заливок общего провода, а также из-за узких мест, где с термопадом были бы крайне тонкие заливки.

Сборочные чертежи, верхняя сторона:

B59-5

И нижняя сторона:

B59-6

Заказ печатной платы и пайка

Платы я заказал не у китайцев, а в OSH Park (США) по двум простым причинам — такой размер платы там дешевле выходит (доставка бесплатная и качество изготовления платы отменное) и мне не нужно 10 шт (многие китайские фирмы по изготовлению печатных плат делают от 10 шт).

Заказываем, ждём 2-3 недели и получаем пакет на почте:

B59-7

Вот и платы (на фото я уже прошелся дремелем по местам крепления плат в общей панели, с которой они выламываются, вышло не совсем аккуратно):

B59-8

Достаём горсть деталей и паяем. После пайки кучка упаковок:

B59-9

Спаял 2 платы полностью, отмыл в спирте по-быстрому:

B59-10

Нижняя сторона:

B59-11

Разъёмы паял уже после мойки, поэтому прекрасно виден флюс. :)

Осталось только покрыть прозрачным цапон-лаком или завернуть в прозрачную термоусадку, и функционально в плане железа программатор-отладчик готов.

Прошивка

Прошить эту плату можно и через UART-загрузчик, но делать контрольные точки для этого я не стал, сделал только SWD-разъём для прошивки (ага, дилемма курицы и яйца в чистом виде). Я думаю не проблема найти у коллеги\друга\на работе программатор и прошить свои платы им или даже спаять на коленке свой за 5-10 минут из Blue-Pill STM32 платы:

B59-12

Хотя если вы спаяли St-Link из Blue-Pill, то зачем вообще вся эта запарка… тут же и отвечу — чтобы было красиво и удобно! :) Хотя кому как, может вполне хватит и самоделки как на фото выше.

Итак, надо прошить МК загрузчиком — файл Loader\ST-LINK V2-1 Boot Loader Unlocked.bin любым удобным\доступным вам способом. К примеру, я запустил JFlashLite.exe (т. к. у меня имеется J-Link под рукой) из пакета драйверов J-link и выбрал установленный на плату МК:

B59-13

Интерфейс программирования — SWD:

B59-14

Выбираем файл загрузчика, стираем на всякий случай память сначала и далее прошиваем:

B59-15

Далее необходимо отключить и подключить заново плату к USB-разъёму, она должна определиться как St-Link. Теперь заливаем прошивку St-Link фирменной утилитой от STMicroelectronics (лежит в Loader\ST-LinkUpgrade\ST-LinkUpgrade.exe). Нажимаем Device Connect, если утилита корректно распознала St-Link, то появляется выбор прошивки к обновлению. Выбираем STM32+Audio:

B59-16

По окончании процесса обновления появится информационное окно:

B59-17

Опять требуется отключить и подключить заново плату к USB-разъёму. На этом, собственно, и всё готово, если вам нужен St-Link. Если хочется J-Link, то запускаем утилиту из Loader\STLinkReflash_170628\STLinkReflashFixed.exe и обновляем как ранее было об этом написано:

B59-18

На этот раз после обновления прошивки не требуется отключения от USB разъёма и устройство автоматически распознаётся ОС и можно устанавливать драйвера для J-Link (если еще не установлены).

Вот и всё! Можно добывать плазму:

B59-19

Запускаем Keil или VS или другую вашу любимую IDE и вперёд и с песней отлаживаться. ;)

Ссылки

  • x-Link_v0 — быстрый заказ печатной платы в OSH Park для самостоятельного изготовления;
  • GitHub — проект для Альтиума и загрузчик St-Link;
  • ST-LinkUpgrade — утилита от STMicroelectronics для обновления прошивки St-Link (Windows версия также лежит в GitHib репозитории);
  • ST-Link в J-Link — статья о перевоплощении в J-Link. :)
Реклама

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s