Pull to refresh

usbhub + usbasp + ch341 + j-link = one PCB

Programming microcontrollers *Circuit design *
Sandbox

Все началось с того, что мне в большом количестве понадобилось собрать/отладить устройства на базе 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пда), схема и архив:

Схема
Архив

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

Tags:
Hubs:
Total votes 23: ↑21 and ↓2 +19
Views 3.4K
Comments Comments 7