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-S2 | ESP32-S3 | |
|---|---|---|
| Стандарт | USB 2.0, полная скорость | USB 2.0, полная и низкая скорость |
| HNP и SRP | да | да, в роли устройства A или B |
| Приёмопередатчик | встроенный, можно внешний | встроенный, можно внешний |
| Выводы D− и D+ | GPIO19, GPIO20 | GPIO19, 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 Мбит/с он не поддерживает. Для клавиатуры, последовательного порта или небольшого накопителя полной скорости хватает.
Источники
- 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 через матрицу
- 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
Нашли ошибку?
Смотрите также
- USBСкорости, распиновка Type-A, Micro-B и Type-C, питание, CC, USB PD
- USB Serial/JTAGВстроенный в ESP32 контроллер USB: COM-порт и JTAG без внешних микросхем
- ESP32-S2: выводы и GPIO43 GPIO: функции, свободные выводы, флеш и PSRAM, strapping, USB OTG, JTAG, токи
- ESP32-S3: выводы и GPIO45 GPIO: функции, свободные и занятые выводы, флеш и PSRAM, strapping, USB, JTAG, токи