Перейти к содержанию

USB OTG

Обычно USB-устройство подключается к компьютеру-хосту. Контроллер USB OTG умеет и то и другое: быть устройством — например, клавиатурой или флешкой, — и хостом, к которому подключают другие устройства.

Обновлено Редакция GAW

USB OTG (On-The-Go) — вариант USB-контроллера, который умеет работать в обеих ролях: устройством, которое подключают к компьютеру, и хостом, к которому подключают другие устройства. Роли договариваются по протоколам HNP (Host Negotiation Protocol) и SRP (Session Request Protocol).

USB OTG есть, например, у ESP32-S2 и ESP32-S3:

ESP32-S2ESP32-S3
СтандартUSB 2.0, полная скоростьUSB 2.0, полная и низкая скорость
HNP и SRPдада, в роли устройства A или B
Приёмопередатчиквстроенный, можно внешнийвстроенный, можно внешний
Выводы D− и D+GPIO19, GPIO20GPIO19, GPIO20

Высокоскоростной режим 480 Мбит/с, по даташиту ESP32-S2, не поддерживается. В роли устройства у ESP32-S3 есть конечная точка 0 и ещё шесть настраиваемых; на передачу к хосту одновременно активны не больше пяти, включая нулевую.

OTG и USB Serial/JTAG. У ESP32-S3 рядом с OTG есть второй контроллер — USB Serial/JTAG: готовый виртуальный COM-порт и отладчик, которые работают без программы. OTG же полностью управляется программой — из него делают клавиатуру, накопитель, звуковую карту или хост для подключения других устройств. Если используется только встроенный приёмопередатчик, контроллеры делят его по времени.

Об устройстве шины — статья «USB», о выводах чипов — страницы ESP32-S2 и ESP32-S3.

Частые вопросы

Что такое USB OTG?

USB On-The-Go — расширение USB, при котором один контроллер может работать и устройством, и хостом. Для переговоров о ролях есть протоколы HNP (Host Negotiation Protocol) и SRP (Session Request Protocol): по даташитам ESP32-S2 и S3 их контроллеры поддерживают оба.

Чем USB OTG у ESP32-S3 отличается от USB Serial/JTAG?

USB Serial/JTAG — фиксированное устройство: виртуальный COM-порт и отладчик JTAG, работающие без программы. USB OTG — универсальный контроллер, которым управляет ваша программа: можно сделать клавиатуру, накопитель, звуковую карту или работать хостом. У ESP32-S3 они делят встроенный приёмопередатчик, работая по очереди.

Поддерживает ли ESP32-S2 высокоскоростной USB?

Нет. По даташиту контроллер USB OTG ESP32-S2 полноскоростной, режим High Speed 480 Мбит/с он не поддерживает. Для клавиатуры, последовательного порта или небольшого накопителя полной скорости хватает.

Источники

  1. Espressif. ESP32-S2 Series Datasheet v1.9 — разд. 4.2.1.11 — полноскоростной USB OTG по спецификации USB 2.0, без высокоскоростного режима 480 Мбит/с; настраиваемые конечные точки, приостановка и возобновление, динамический размер FIFO, протоколы SRP и HNP, встроенный приёмопередатчик; табл. 2-9 — USB D− и D+ на GPIO19 и GPIO20, с внешним приёмопередатчиком — любые GPIO через матрицу
  2. Espressif. ESP32-S3 Series Datasheet v2.2 — разд. 4.2.1.7 — полноскоростной USB 2.0 OTG со встроенным приёмопередатчиком: скорости FS и LS, HNP и SRP в роли устройства A или B, режимы DMA, можно выбрать встроенный или внешний приёмопередатчик; в режиме устройства конечная точка 0 и ещё шесть, одновременно активны не больше пяти IN, включая EP0; встроенный приёмопередатчик делится с USB Serial/JTAG по времени; табл. 2-9 — USB D− и D+ на GPIO19 и GPIO20

Нашли ошибку?