ㅤ»Нужно больше золота STLink-ов.» Такой должен был быть заголовок, но к сожалению MARKDOWN в нем не работает. Но не суть.
ㅤВ первой статье была предыстория и путь к точке, которую я считаю контрольной. Целью статьи была обратная связь, но она пока что не реализовалась. Как я думаю причиной тому стало малое количество проделанной работы. В том плане, что хорошая идея и ее реализация в железе, это намного убедительней, чем просто хорошая идея. Так что в этой статье, будет рассказано о модулях реализованных в железе с того времени.
ㅤОпыт использования
ㅤПрежде чем перейти к рассказу о модулях, считаю нужным рассказать к чему я пришел за время с публикации первой статьи. Это должно снять некоторые вопросы, которые могут возникнуть в дальнейшем.
ㅤСтойки М2
ㅤИзначально я ориентировался на шестигранные стойки. С начала также решив для пробы взять круглые, и со временем использования мои симпатии сместились в их сторону. В частности потому, что их удобней держать плоскогубцами при затяжке, а для шестигранных нужен отдельный накидной ключ-отвёртка.
ㅤВинты М2, шестигранник, torx
ㅤОпять же изначально я планировал использовать использовать винты под шестигранник и ключики, которые продаются 50 шт. пачка. Но попользовавшись, выяснил, что со временем они слизываются. Качественная бита из набора типа 60-in-1 получше, но видно, что при частом использовании держится на пределе, и слизываться начинают уже винты. Также проблем добавляет тот факт, что есть 1,5мм шестигранник, и 1/16. Что невооруженным взглядом смотрится одинаково, а по факту беда. Винты Torx T6 в использовании получше, вместе с колючем-флажком как на фото ниже. Орудовать им менее удобно чем г-образным шестигранником, но при затяжке пальцы давит намного меньше. Флажки дороже шестигранников, но дешевле отдельной отвертки, в контексте того, что бы держать отдельный инструмент для сборок. Использование биты Torx T6 шуруповерта совсем беда, скрутило после пары затяжек. Недавно пришла пачка обычных винтов под филипс, посмотрю что получится.
ㅤСверло 2 мм и крепежные отверстия макеток
ㅤПопытка использовать обычную биту сверло для сверления крепежных отверстий в макетках с треском провалилась. Казалось удачное решение, два в одном, собственно сверло и держатель сверла. Но бита оказалась неудобной в качестве держателя сверла, даже помещенная в несколько слоев термоусадки. Первые 4 отверстия удалось сделать более менее просто, дальше сверло затупилось. И процесс превратился в пытку.
ㅤИ как бы не хотелось обойтись типа бюджетным вариантом, пришлось купить твердосплавные сверла, которые в итоге оказались дешевле в пересчете на штуку. Но дороже с учетом необходимости приобретения цанговой ручки. По сравнению с обычным сверлом, небо и земля в процессе сверления текстолита. Единственный существенный недостаток, это хрупкость. Нужна определенная сноровка, так как на выходе сверло, закусывает. Лично я, пока что сломал только одно сверло. Для нивелирования причины закусывания, необходимо сверлить на другом куске ненужно текстолита плотно прижимая макетку и следить чтобы не просверлить пакет насквозь.
ㅤЛогично рассверливать существующие отверстия, но тогда остальные отверстия не будут соответствовать размещению для соединения встык. Кроме есть риск закусывания, что для твердосплавного сверла чревато. На фото выше видно положение крепежных отверстий на макетке для возможности соединения встык.
ㅤАбразивы
ㅤПолезная вещь, при прототипировании модулей с использованием макетных плат. Макетки есть разных размеров, но тем не менее, иногда возникает необходимость обрезать и обработать напильником. Однако использование напильника или надфиля для обработки текстолита, чуть позже, но тем не менее закончится так же как и история со сверлом. Как вариант наждачная бумага приклеенная на плоскую поверхность.
ㅤОбрезка макеток
ㅤПока что к нужному размеру привожу разламыванием длинногубцами по отверстиям. Пытаться отломать длинногубцами сразу плохая идея. В тисках, да, получится. Но в плоскогубцах или длинногубцах раскрытие не параллельно, а под углом. Это скорей всего, несмотря на наличие отверстий на линии разлома, приведет к кривому разлому. Макетку нужно слегка надломить с краю линии разлома. Потом продолжить надламывать по линии. После чего, можно будет разделить руками.
ㅤРаспиновка USB
ㅤТак как в подавляющем большинстве случаев, usb устройства делятся на device и host, то это позволяет выполнить распиновку зеркально на разных типах устройств и соединять в стык. На устройстве Vbus,DM,DP,GND. У хоста распиновка зеркальная — GND,DP,DM,Vbus.
ㅤРаспиновка uart
ㅤВ отличии от USB, тут явного деления нет, при этом, зеркальное подключение дает необходимые пары Rx-Tx. Это позволяет на всех разъемах UART придерживаться распиновки GND,Rx,Tx,GND.
ㅤХранение модулей
ㅤУже накопилось достаточное количество совместимых модулей для поднятия вопроса их хранения. Сейчас они складываются в пластиковые контейнеры для мелочей с отсеками, что является не совсем удобно. Модули имеют разные размеры, которые не позволяют рационально использовать пространство ячеек контейнеров, и со временем порядок все равно превращается в свалку. Решение которое предстоит проверить эксплуатацией, заключается в использовании контейнера без ячеек, на дно которого вклеен вспененный полиэтилен толщиной 10мм с сеткой отверстий. Сначала думал отверстия резать лазером, но приценился и решил что дорого. Нашел кусок упаковочного пенополиэтилена и решил в качестве эксперимента отверстия сделать в виде крестообразных прорезей скальпелем или просто прокалывать отверткой. И пришел к выводу что такой вариант будет экономичней лазерной резки, а если сделать приспособу, то еще и по времени. Просто нужно поэкспериментировать, и подобрать наиболее подходящий инструмент для перфорации.
ㅤАдаптер для модулей, которые для беспаечных макеток
ㅤВ предыдущей статье было показана в рендере пример изготовления переходника для black pill из макетки. Таким же методом можно изготовить переходники и для других модулей предназначенных для беспаечных макеток. Но если модулей много, или есть реальные основания, что возникнет необходимость применить в будущем такие же модули, но с другим количеством пинов или расстояния между ними, то паять переходники для каждого случая возможно будет неудобно. Ниже показанный переходник позволяет установить на сборку модули, предназначенные для беспаечных макеток. Модуль на 10 пин, то есть для установки в сборку black pill нужно 4 модуля. Для модуля W5500, как видно на фото ниже хватит и двух. На модуле 2 пары крепежных отверстий со смещением и два ряда гнезд для обеспечения совместимости с модулями с разной шириной между рядами пинов.
ㅤПростой модуль индикации 8 каналов на 3 состояния
ㅤИногда возникает необходимость в светодиоде как простом индикаторе состояния выхода микроконтроллера при отладке. Делать модуль на один светодиод это как по мне нерационально использовать пространство сборки, тем более что бывает необходимость в нескольких светодиодах. Ниже представленный на фото первая версия модуля индикации. На каждом канале два светодиода, зеленый и оранжевый. Зеленый светится, если на канал подать плюс, оранжевый, если минус. Если оба выключены, канал висит в воздухе. На рендере представлена вторая версия модуля. В нем, за счет наличия с обеих сторон пинов питания, не нужно подавать питание на каждый модуль. Они ставятся рядом, и цепи питания соединяются джамперами. Кроме того, если пины каналов запаять не двухрядный а однорядный с краю и направлены вниз, то его можно использовать с беспаечной макеткой. Также в нем, снизу предусмотрены шунтирующие светодиоды резисторы. Они не обязательны к установке, но предотвращают свечение обеих светодиодов при неподключенном канале и питании 5в.
ㅤмодуль USB разъёма
ㅤТак как в первой статье он был показан только в виде рендера, то стоит показать реализацию железе. На данный момент решил ограничится только type-c как наиболее современным, и type-b как наиболее привлекательным с точки зрения прочности. Модуль разъема USB (далее модуль USB) с трех сторон имеют pls пины для увеличения числа возможных конфигураций. На нее можно припаять как type-c 16 pin, так и USB-B в smd исполнении. Делалось так с целью универсальности, и соответственно удешевления, но потом обратил внимание что smd исполнение раз в 5 дороже обычного в рознице. Так что, видимо идея с универсальностью себя оправдала только частично. Сигналы CC1,CC2,SB1,SBU2 также выведены на pls как резерв возможностей для дальнейшего развития. Например сделать модуль PD, который будет подключатся сверху. Фото платы платы модуля USB и он уже собранный можно посмотреть в следующем разделе USB хаба.
ㅤUSB хаб на FE1.1s
ㅤПрежде чем перейти к STLink-у, стоит кратко рассказать о USB хабе. Так как STLink и логический анализатор разработаны для работы с ним или модулем USB. Показано в железе то, что в первой статье было в рендерах как пример соединения встык. На иллюстрации ниже показаны универсальные платы модулей USB разъемов, тестовый модуль хаба собранный полунавесным монтажом на макетной плате на основе FE1.1s, и собственно конечный вариант в процессе сборки.
ㅤХаб имеет размеры 4х16 (20.32мм х 81.28 мм). К нему можно без проводов, с помощью джамперов, подключать устройства шириной 20.32 мм, чтобы они не мешали друг другу. Имеет посадочное под type-c, четыре гребенки для присоединения модулей USB. Так как USB, это дифсигнал, я не решился по всей плате петлять гирляндой подключая гребенки и разъем. Вместо этого на плате имеются селекторы из паяльных смд перемычек. Так что выбор места подключения выбирается паяльником. Это не удобно, зато дешевле и проще, чем добавление в схему USB мультиплексоров. Предусмотрено внешнее питание хаба, для этого нужно перерезать дорожку, и перепаять селектор для вывода BUSJ FE1.1s в положение self. Обратно вернуть тоже можно, вместо дорожки ставятся джамперы, ну и вернуть селектор на положение bus.
ㅤSTLink
ㅤЗаголовок статьи родился в ситуации, когда у меня было собрано несколько сборок, на каждой из них был STLink, и вот понадобился еще один. Во время разборки пришла мысль, что неплохо бы иметь в наличии штук 4-5 программаторов. Сейчас два китайских клона, оба были переделаны с добавлением SWO, uart и reset. Один крепится к основе с помощью заготовки для соединительного кронштейна и канцелярской резинки. Со второго снято все лишнее, и он смонтирован на макетке в размере 4×8 (4*5.08 x 8*5.08).
ㅤНазрело решение пополнить номенклатуру pp2508 модулей STLink-ом. Cхема реверса оригинального STLink плюс множество других схем найденных на просторах интернета были сведены в таблицу, которая помогла сформировать схему под свои потребности.
№ |
Пин |
Описание |
---|---|---|
|
|
STM32 |
32,33 |
A11,A12 |
DM,DP — USB |
34,37 |
A13,A14 |
SWDIO,SWCLK |
05,06 |
OSC |
Кварц |
07 |
nRST |
RESET |
01 |
VBat |
Питание от батарейки, подключено к 3.3, подробней в документации на микроконтроллер |
44,20 |
BOOT0,B02 |
BOOT0,BOOT1 — Управление загрузкой. |
30 |
A09 |
Tx |
31 |
A10 |
Rx(SWO) |
09,24,36,48 |
Vdd |
3.3 В |
08,23,35,47 |
Vss |
GND |
|
|
JTAG(SWD) |
10 |
A00 |
Vref — напряжение целевой платформы. Через делитель из двух 4,7кОм. |
18 |
B00 |
NRESET |
15,26 |
A05,B13 |
JTCK(SWCLK) |
25 |
B12 |
подключен к JTMS(SWDIO) через резистор 220R |
27 |
B14 |
JTMS(SWDIO) |
16 |
A06 |
JTDO |
17 |
A07 |
JTDI |
19 |
B01 |
JTRESET — JTAG TAP RESET) |
|
|
SWIM |
22,45 |
B11,B08 |
SWIM |
42 |
B06 |
RESET |
21,43,46 |
B10,B07,B09 |
подключен к SWIM через резистор |
41 |
B05 |
через резистор к RESET(B06) |
|
|
разное STLink |
38 |
A15 |
USB_REN — переопределение USB, как я понял используется при обновлении прошивки программатора |
12 |
A02 |
VCP_Tx, виртуальный COM-порт |
13 |
A03 |
VCP_Rx, виртуальный COM-порт |
30 |
A09 |
светодиоды активности |
31 |
A10 |
SWO консоль отладки (stm32 Rx) |
02 |
C13 |
10k-gnd — Подтяжка на землю. Предположительно для определения версии программатора |
03 |
C14 |
NC/10k-gnd — Иногда есть посадочное место под подтяжку на землю без установленного резистора. Предположительно для определения версии программатора |
29 |
A08 |
MCO — выход тактирования |
04 |
C15 |
SWIM_PULLUP_CTL |
11 |
A01 |
M25_CS |
|
|
|
14 |
A04 |
— не подключен. |
28 |
B17 |
— не подключен. |
39 |
B03 |
— не подключен. |
40 |
B04 |
— не подключен. |
ㅤИз-за ограничения размеров (20.32 х 40.64) и желания размещения компонентов только на одной стороне, отказался от установки буфера для возможности работы с напряжениями отличными от 3.3в
ㅤПлаты на фото и рендер отличается потому что никогда такого не было, и вот опять. Надеюсь найденный косяки последние. Но тем не мене они не критичные, чуть эмалированных проводов, попиленных дорожек, транзистор верх ногами и можно пользоваться.
ㅤО распиновке USB и UART pls пинов сказано выше. Распиновка 6 пинового IDC для SWD я взял отсюда, когда искал распиновку SWD для самодельного 6-pin TagConnect. Распиновка SWIM как у оригинального.
ㅤВнизу тестпоинты с шагом 2,54 с прицелом на то, что из макетки и pogopin сделать стенд для прошивки бутлоадера без подпайки проводов или размещения на самом программаторе лишних pls пинов, для которых и так нет места. Можно быстро перешить бутлоадер, и обновить до нужной прошивки. На тестпоинтах, как видно на рендерах, кроме SWD, выведен UART и BOOT0 для прошивки без программатора с помощью переходника USB-UART, земля и питание.
ㅤType-c на нижней стороне — это доп. опция позволяющая использовать вне сборок. Но при этом, если запаяны pls USB, то нужно использовать более редкие высокие type-c. Можно и обычные, но тогда нужно изолировать пады pls например каптоновым скотчем. Также можно применить обычный разъем, но придётся применить напильник и тот же каптоновый скотч.
ㅤVref заведен на питание, так как отсутствует буфер и целевая платформа будет на питании 3.3в. Кроме того, на IDC-6 на пин Vref выведено 3.3. Запитывать целевую платформу от программатора совсем не хорошая практика. Видимо будет третья ревизия…
Список материалов
2013/10/15 Highlander: «Создаём ST-Link V2» we.easyelectronics.ru
2014/12/02 Алексей: «Самодельный ST-LINK/V2» avrki.ruㅤ
ㅤ
2017/09/22 MyOwnDevice: «ST-Link v2» myowndevice.ru
2021/07/22 «DIY STM32 Programmer (ST-Link/V2-1)» stm32world.com
2022/08/07 flanker: «Сага об отладчиках count-zero.ru»
2022/11/13 parsamalekpour: «STLINK-V2» github.com
2023/08/10 Anzorik_228: «DIY-программатор ST-Link V2.1» habr.com
Повторение программатора отсюда отсюда
ㅤЛогический анализатор на CY7C68013A
ㅤВ общих чертах, та же история, что и с STLink-ом. Насобирал схем, просмотрел, скомпилировал в схему ниже. CY7C68013A это 8051 ядро с развитым USB. Флеша не имеет, загрузка либо с eeprom, либо с хоста. На основе этого микроконтроллера сделано много всяких переходников на lpt, ide и тд. Кроме того используются во всяких эволюшин бордах для связи с пк по usb. Ну и конечно же логические анализаторы от Saleae и USBee, c ПО Logic b USBee Suite соответственно. Так как у меня есть покупной Saleae 16 канальный, c USBee я особо не разбирался. Но со своей нездравой тягой к универсальности, предусмотрел установку двух eeprom, для Saleae и USBee соответственно с переключением джампером. Насколько я понял, в самой памяти хранится только PID&VID, а сама прошивка загружается ПО логического анализатора. С этим моментом связан один нюанс, некоторые версии ПО от Saleae затирали eeprom, если ее размер не соответствовал. Решении два, либо аппаратный запрет на запись, либо установка правильной eeprom. В моем варианте на всякий случай сделано и то и другое. Для разрешения записи нужно запаять перемычку. Также нужно сказать о таком проекте как Sigrok с его PulseView. Это открытое ПО с возможностью писать свои декодеры протоколов, что иногда будет незаменимой функцией. В общем, в плане ПО есть с чего выбрать в зависимости задачи или личных предпочтений.
ㅤНа входе стоит буфер с возможностью работы целевой платформой отличной от 3.3в. Опорное буфера переключается джампером на пинах между целевой и питанием анализатора. Также можно переключить на выход для использования как генератора сигналов, но это тоже делается запайкой перемычки. Подтяжка входов отсутствует по причине ограниченных размеров, из-за чего неподключенные входы могут ловить наводки. Этот момент я посчитал несущественным.
ㅤКа видно на фото и рендерах ниже, подключение комбинированное как и у STLink-а. Плата четырехслойная по причине плотности компонентов в следствии желания уместить в минимальные габариты. Защита от статики как по USB так и по входам, так как говорят, что CY7C68013A к ней чувствительна.
ㅤЗаключение
ㅤВот и все результаты работы по pp2508 на данный момент. Надеюсь будет больше конструктивных комментариев по теме, а не текстовых баталии слепого с глухим. Часто результат работы не так важен, как тот путь, который к нему привел. По причине того, что повторяя чей то результат, очень важно знать, почему сделано так, а не иначе.
ссылка на оригинал статьи https://habr.com/ru/articles/873896/
Добавить комментарий