Все началось с того, что мне в большом количестве понадобилось собрать/отладить устройства на базе AVR. Я взял USBASP, открыл документацию и с радостью обнаружил, что у него есть встроенная поддержка uart.

Как оказалось, потратив пару-тройку дней на поиск разнообразных драйверов, запустить такой мост под windows - задача маловероятная (с пингвинами все дружится практически "из коробки"). Если это не так - пишите в комментариях, но я не нашел ни одного работоспособного подтверждения в сети. В качестве временного решения собрал костыль: USBHUB + USBASP + USB-UART(ch340). Все работает, но как минимум - не эстетично, как максимум - устройства иногда отваливаются (с USB портами у моего старичка lenovo x230 все ок). Если подключать без USBHUBа, то заняты 2 из 3 usb портов + короткие провода (USBASP и USB-UART обычно имеют USB-разъемы сразу на плате).

Решено: изобретаю велосипед с подключением всего окружения на одной плате одним проводом с разъемом type-C.

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

Начал разработку платы с USBHUBа. Выбор пал на дешевый FE1.1.

На 4pda нашел тему про сh341 и "доработки", в т.ч. про дополнительную плату с согласователями уровней (для прошивки SPI флешек с 1.8в). Зачем городить бутерброд, если можно поставить согласователи на саму плату.

Добавил согласователи на UART (один переключатель на плате позволяет выбрать питание usbasp и одновременно уровень сигналов uart 5в/3.3в).

Пока неспешно собирал схему, параллельно столкнулся с проблемой китайских j-link адаптеров со слетающими прошивками. Решил добавить еще и программатор для ARM (В первой версии платы поставил обычный st-link на stm32f103, в последней версии j-link на stm32f205).

Три USB порта хаба заняты, четвертый usb вывел на USB-A (питание платы через предохранитель на 1А).

Терпеть не могу суперпозицию USB, с подключением с третьей попытки, потому поставил USB-typeC.

Как раз обзавелся самодельным микроскопом (eken h9 + гелиос 44-2).

Вывел разъем для прошивки adruno-плат без встроенного usb-uart (как раз нога #DTR через конденсатор), просто потому что смог.

Добавил аналоговый мультиплексор 4052, чтобы переключать UART между usbasp/внешним разъемом/stm32f205(для прошивки).

Бонусом - получилась "вещь в себе" - самопрошивающийся программатор. ch341 в режиме SPI может прошить usbasp, а в режиме UART может прошить stm32f205 (для старого бутлоадера 2.0), либо прям по USB (DFU для версии бутлоадера 3.0)

В итоге плата стала 4-слойной с размерами 70 мм х 35 мм.

Надеюсь, кому-нибудь мой опыт пригодится.

Гербера, инструкции по сборке, список элементов, схему, прошивки выложил на

https://4pda.to/forum/index.php?showtopic=884713&st=6720#entry106407720

Зеркало (у кого нет регистрации на 4пда), схема и архив:

Схема
Архив

Моя первая статья на Хабре, кидайте тряпками.

Комментарии (7)


  1. predator86
    29.11.2021 13:31

    Пока неспешно собирал схему, параллельно столкнулся с проблемой китайских j-link адаптеров со слетающими прошивками.
    Как решили проблему?


    1. mctMaks
      29.11.2021 15:08

      в аналогичной ситуации ставили супервизор по питанию атмеги. после этого прошивка не слетала.


    1. LitLageR Автор
      29.11.2021 20:41

      Мы проблему "решали" костыльно - распайкой гребенки для быстрой перепрошивки атмеги. С stm32f205 за ~год проблем нет, пользуюсь теперь только своим "комбайном"


  1. borisxm
    29.11.2021 18:56

    Комбайн, конечно, интересный. Но четырехслойка (да, нынче не очень дорого, но избыточно для такой схемы) и применение F205 заметно снижают повторяемость конструкции. Давно уже собираюсь сделать нечто подобное, но все никак время не выберу…

    Кстати, тоже недавно хотели сделать лабораторные платки с USB-C, но в итоге, по результатам голосования, поставили старые добрые USB-B.


    1. LitLageR Автор
      29.11.2021 20:52

      Была цель - минимизировать габариты, а при плотном монтаже (возможно для кого-то он недостаточно плотен, но для меня да) возникли проблемы с грамотным подключением земли и выполнением правил по разводке usb (до stm32f205 диф пара тянется по всей плате). В версии с stmf103 была двухсторонняя плата и ее линия usb пересекала линии питания (на сколько понимаю, по правилам проектирования так делать недопустимо) и действительно, иногда в работе устройство "отваливалось".

      Внутренние слои это GND и 3.3в.

      Когда начинал этот проект, цена за 205ю была 200р... Сейчас и согласователи уровней стоят в 2-2.5 раза дороже.

      Если есть место, то USB-B хороший вариант, такие шнурки "есть в любом ящике". Но результатом использования USB-C я доволен.


  1. Dark_Purple
    29.11.2021 21:33
    -2

    Ну слепил какую-то платку, в чём изюм? Что такого интересного и уникального?


    1. LitLageR Автор
      30.11.2021 10:47
      +3

      Заявки на уникальность, скорее всего, нет.

      Я читаю хабрахабр с 2008-2009 гг, когда здесь только появлялись статьи формата "мигаем светодиодом на arduino" или несколько однотипных статей по "основным" правилам проектирования PCB. Сейчас они, естественно, не несут полезной нагрузки для многих пользователей, кто хоть как-то причастен к данным "направлениям".

      Хабр, различными статьями, мотивировал и подстегивал меня к саморазвитию все время. Думаю, что для некоторых и старые "простые" статьи будут полезны. А если моя скромная проведенная работа окажется хоть кому-нибудь полезной или интересной, то "почему бы и да".