Типы передач USB
Флешке важно, чтобы ни один байт не потерялся, а звуковой карте — чтобы звук шёл без пауз, даже ценой редкой ошибки. Поэтому USB предлагает четыре типа передач с разными гарантиями, и каждая конечная точка работает в одном из них.
Обновлено Редакция GAW
Типы передач (transfer types) — четыре режима, в которых конечные точки USB обмениваются данными с хостом. Каждый даёт свои гарантии: доставку без потерь, постоянную полосу или ограниченную задержку. Тип задаётся для каждой конечной точки в её дескрипторе — двумя младшими битами поля bmAttributes.
Сравнение по USB 2.0
| Тип | Код | Что гарантирует | Наибольший пакет (Low / Full / High Speed) |
|---|---|---|---|
| Управляющие (control) | 00 | доставку, обязательны на точке 0 | 8 / 8–64 / 64 байта |
| Изохронные (isochronous) | 01 | полосу и постоянную скорость, без повторов | — / 1023 / 1024 байта |
| Массивные (bulk) | 10 | доставку с повторами, но не полосу и не задержку | — / 8–64 / 512 байт |
| Прерывания (interrupt) | 11 | наибольший период опроса, повтор в следующем периоде | 8 / 64 / 1024 байта |
«Прерывания» здесь — не аппаратное прерывание: хост сам опрашивает такую точку с заданным периодом, а слово отражает назначение — редкие небольшие сообщения с ограниченной задержкой.
Как выбирают тип
- Управляющие передачи служат для перечисления и настройки и всегда идут через нулевую точку.
- Прерывания — небольшие порции данных с гарантированной частотой опроса: клавиатуры, мыши и другие устройства класса HID.
- Bulk — большие объёмы, где важна целостность: флешки, виртуальные COM-порты. Для двустороннего обмена нужны две bulk-точки, по одной на направление.
- Изохронные — звук и видео: данные идут с постоянной скоростью, а испорченный пакет не повторяется.
Контроллер USB микроконтроллера может поддерживать не все типы на всех каналах. Например, в режиме хоста у ESP32-S3 управляющий канал работает только с управляющими передачами, а остальные каналы — с bulk, изохронными и прерываниями.
Не путать с режимами скорости Low, Full и High Speed: тип передачи описывает гарантии обмена, а скорость — физический уровень шины.
Частые вопросы
Какой тип передачи выбрать для своего устройства USB?
Для небольших порций данных с гарантированной частотой опроса — прерывания. Для больших объёмов, где важна целостность, а не сроки, — bulk. Для потоков с постоянной скоростью, где повтор испорченного пакета бесполезен, — изохронные. Какой тип требует стандартный класс устройства, указывает спецификация класса. Управляющие передачи есть всегда на нулевой точке.
Почему у Low Speed нет bulk?
Спецификация USB 2.0 прямо запрещает устройствам Low Speed иметь bulk-точки (разд. 5.8.3). А по разд. 8.3.2.2 у них, кроме нулевой точки, может быть не больше двух каналов, и это либо управляющие каналы, либо точки прерываний — изохронных нет. Пакеты у Low Speed — до 8 байт.
Гарантирует ли bulk скорость передачи?
Нет. Bulk гарантирует доставку — при ошибке пакет повторяется, — но получает только ту полосу, что осталась после остальных типов. На свободной шине bulk очень быстрый, на загруженной данные могут идти медленно.
Источники
- USB-IF. Universal Serial Bus Specification, Revision 2.0 (пакет usb_20_20250603) — разд. 5.5: управляющие передачи, размер пакета Full Speed 8, 16, 32 или 64 байта, High Speed — 64, Low Speed — 8; разд. 5.6: изохронные — гарантированный доступ к полосе с ограниченной задержкой, постоянная скорость, без повторов при ошибке, до 1023 байт на точку Full Speed, до 1024 на High Speed; разд. 5.7: прерывания — гарантированный наибольший период обслуживания, повтор в следующем периоде, до 8 байт (Low), 64 (Full), 1024 (High); разд. 5.8: bulk — доступ к полосе по остатку, повторы при ошибках, гарантированная доставка без гарантии полосы и задержки, пакеты 8–64 байта на Full Speed и 512 на High Speed, у Low Speed bulk-точек быть не должно; для двустороннего обмена bulk нужны два канала; разд. 8.3.2.2: у Low Speed — точка 0 и не больше двух каналов: управляющие или прерывания; табл. 9-13: bmAttributes биты 1…0 — 00 управляющая, 01 изохронная, 10 bulk, 11 прерывания
- Espressif Systems. ESP32-S3 Series Datasheet, version 2.2 — разд. 4.2.1.7, режим хоста USB OTG: управляющий канал из двух каналов IN и OUT поддерживает только управляющие передачи, всего восемь каналов; управляющий канал состоит из двух (IN и OUT), остальные каналы — bulk, изохронные и прерывания (в тексте v2.2 они названы «семью», что не сходится с 8 − 2)
Нашли ошибку?
Смотрите также
- USBСкорости, распиновка Type-A, Micro-B и Type-C, питание, CC, USB PD
- Конечная точка USB (endpoint)Номер, направление и тип канала внутри устройства USB
- Класс устройства USBСтандартные типы устройств и коды классов USB-IF
- ESP32-S3: выводы и GPIO45 GPIO: функции, свободные и занятые выводы, флеш и PSRAM, strapping, USB, JTAG, токи