m09-07 теория 6 мин

USB: почему это отдельная боль

USB — это не «просто последовательный порт», а полноценная шина с хостом, устройствами, перечислением и протоколом. Поэтому «подключить USB к микроконтроллеру» сложнее, чем кажется.

Что нужно, чтобы устройство заработало: контроллер USB (в ESP32-S3, STM32, RP2040 он есть), правильная разводка линий D+ и D− (это дифференциальная пара, 90 Ом), питание и согласование.

Как это работает по шагам: хост видит подключение по подтяжке D+ к 3.3 В, сбрасывает устройство, читает дескрипторы (кто ты, какой класс, какие конечные точки), загружает драйвер. Только после этого начинается обмен.

Классы, которые нужны чаще всего: CDC (виртуальный COM-порт), HID (клавиатура/мышь), MSC (флешка), DFU (прошивка).

Практические варианты:

— USB-UART мост (CH340, CP2102, FT232): микроконтроллер общается по UART, мост делает USB. Просто, дёшево, медленно.
— Нативный USB: RP2040, STM32F4, ESP32-S3. Быстрее, можно HID/MSC, но нужен стек и аккуратная разводка.
— USB Host: читать флешки и клавиатуры. Требует отдельного контроллера (MAX3421, CH376) или мощного МК.

Типичные грабли: неправильная разводка D+/D− (перепутаны), нет резисторов 22–27 Ом последовательно, плохая земля, нет конденсатора по питанию, «дешёвый кабель только для зарядки» (без линий данных).

И ещё: USB не даёт гарантированной задержки. Для точной синхронизации лучше Ethernet или отдельный триггер.

Зачем

USB нужен почти в каждом устройстве, но это не UART: без понимания перечисления ничего не работает.

Сделай сейчас

Посмотри на свою плату: есть ли на ней отдельная микросхема USB-UART? Если да — узнай, какая (CH340/CP2102), и поставь драйвер.

Проверь себя

Почему дешёвый USB-кабель может не работать для прошивки?

В кабеле «только для зарядки» нет линий данных D+/D−. Питание есть, обмена нет — компьютер не видит устройство.

Пройти тест 5 заданий
0 из 102 · 0%
Источники
  1. Wikipedia: USB
    USB: уровни и протокол
  2. Wikipedia: Universal asynchronous receiver-transmitter
    отличие от UART