Программируем и отлаживаем STM32 через USB Type-C порт, не нарушая спецификации USB

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Часть 1. Подготовка порта

Для начала, рассмотрим Type-C порт, чтобы понять, как можно протянуть линии SWD через него. Первое, что приходит на ум - это конечно, же, заменить D+/D- линии на свои, однако без специального переходника наше устройство нельзя будет подключить в обычный порт.
Не буду затягивать и подробно рассказывать про все сигнальные линии в USB Type-C, эта тема прекрасно раскрыта в этой статье, на которую я и опирался при разработке.

В общем, нас интересуют пины SBU1/SBU2:

Картинка из вышеупомянутой статьи
Картинка из вышеупомянутой статьи

Да, мы собираемся использовать эти пины для того, чтобы протянуть по ним SWDIO и SWCLK. Да, прошивка и отладка будут работать только при определенной ориентации кабеля.

J1 - входной порт (через него тоже можно прошивать сам ST-Link), J2 - выходной, к своему устройству на STM32
J1 - входной порт (через него тоже можно прошивать сам ST-Link), J2 - выходной, к своему устройству на STM32

Часть 2. Проверка идеи

Для проверки работоспособности этой идеи, я собрал адаптер для J-Link. И тут важное примечание - подойдет далеко не любой кабель, обычно эти пины никак не задействованы и физически не подключены.

Опираясь на вышеупомянутую статью, я расковырял два кабеля - переходник USB Type-C - 3.5mm jack от Google Pixel и нерабочий переходник USB Type-C - HDMI. Оба варианта были с нужными проводниками, однако по аудио-переходнику невозможно было запитать линию VBUS, поэтому я остановился на кабеле от HDMI переходника.

И спаял я такое:

эстетов пайки попрошу отойти от экранов
Работает - не трогай!
Работает - не трогай!

Концепт оказался на 100% работоспособным и данный кабель работает по сей день.

Часть 3. Программатор

Теперь, когда сомнений уже не осталось, я спроектировал плату-переходник, со входом и выходом Type-C. Схему ST-Link я перерисовал с документации на платы Discovery.

Плата программатора
Плата программатора
Собранный и спаянный ST-Link
Собранный и спаянный ST-Link

Прошивка кастомного ST-Link в первый раз может занять приличное время на гугление, поэтому вот мой рецепт.

Скачиваем бутлоадер ST-Link здесь, выбираем (в моем случае) Unprotected-2-0-Bootloader.bin. На моей плате версии 2.1 не завелась, скорее всего дело в дополнительной схеме USB ренумератора (пытался добавить навесным монтажом, красный проводок на плате - это оно, но не вышло).

После прошивки бутлодера, скачиваем старую версию ST-Link Utility (у меня сработала версия 3.6), новые версии отказываются прошивать ST-Link.
Ну и все, теперь отладка через USB Type-C порт вам доступна, при этом обычные возможности порта полностью сохранены, у меня на этом порте висит USB-UART преобразователь, через который тоже можно прошивать ваше устройство через системный или самописный бутлоадер.

Зачем так заморачиваться?

В моем случае, мне хотелось отлаживать устройство в собранном виде, без подпаянных проводов, в корпусе, прямо по месту его установки. И это очень удобно! Однако, следует помнить, что для отладки программатор нужно втыкать определенной стороной.

Неправильное подключение не ведет к каким-то неприятным последствиям на моих платах, однако этот момент следует держать в голове.

Пациент под отладкой
Пациент под отладкой

Источник: https://habr.com/ru/articles/770454/


Интересные статьи

Интересные статьи

Рынок программируемых логических контроллеров, несмотря на достаточно большой жизненный цикл этого типа оборудования – десять лет и более, постоянно меняется. Кратко обозначим тенденции рынка ПЛК, наб...
Сложность: легкоЦена вопроса: 4500 ₽ (для организаций)Сроки рассмотрения заявления: от 3 дней до 2 месяцевЧто дает: юридическую защиту разработанного вами ПО В начале этого года мы задались целью...
Зачем?! Наверное, это первая эмоция большинства людей, прочитавших название статьи. Однако, давайте представим следующую ситуацию: в процессе исследования устройства вы доходите д...
История о моем опыте использования операционной системы реального времени (ОСРВ) Zephyr для устройства на базе микроконтроллера STM32F7-Discovery. В статье: Что такое Zephyr и п...
Привет! Иногда хочется быстро что-то попробовать на микроконтроллере, запрограммировать маленький работающий прототип какой-то идеи. Для этих целей, как известно, хорошо подходят скриптовые яз...