Передачи данных USB происходят как серия событий, которые называются транзакциями. Транзакции связаны с управляемыми хостом интервалами времени, которые называются фреймами. Длина и частота транзакций зависит от типа передач (см. далее "Типы передач USB"), используемых на конечной точке.
Примечание: это перевод материалов источника [1]. Все непонятные термины и сокращения, касающиеся шины USB, см. в статье [2].
[Фреймы USB]
Тип передачи, которую можно отправить во фрейме, и длина фрейма определяется заданной скоростью USB (см. далее "Скорости USB и соответствующие стандарты").
Спецификации фрейма распределяются по типам поддерживаемых устройством USB скоростей. Различают низкую скорость (Low Speed), полную скорость (Full Speed) и высокую скорость (High Speed). Ниже в таблицах показаны основные параметры каждого варианта скорости. Под "размером фрейма" подразумевается фиксированный интервал времени, с которым фреймы следуют друг за другом.
Таблица 1. Low Speed (размер фрейма 1 мс).
Поддерживаемые типы передач |
Max размер передачи |
Сколько может быть передач на фрейме |
Max теоретическая пропускная способность |
Control |
8 байт |
1 |
8 кбайт/сек |
Interrupt |
8 байт |
1 |
8 кбайт/сек |
Bulk |
- |
0 |
- |
Isochronous |
- |
0 |
- |
Таблица 2. Full Speed (размер фрейма 1 мс).
Поддерживаемые типы передач |
Max размер передачи |
Сколько может быть передач на фрейме |
Max теоретическая пропускная способность |
Control |
64 байта |
1 |
64 кбайт/сек |
Interrupt |
64 байта |
1 |
64 кбайт/сек |
Bulk |
64 байта |
до 19 |
1.2 Мбайт/сек |
Isochronous |
1023 байта |
1 |
1023 кбайт/сек |
Таблица 3. High Speed (размер фрейма 125 мкс).
Поддерживаемые типы передач |
Max размер передачи |
Сколько может быть передач на фрейме |
Max теоретическая пропускная способность |
Control |
64 байта |
1 |
64 кбайт/сек |
Interrupt |
1024 байта |
до 3 |
24 Мбайт/сек |
Bulk |
512 байт |
до 13 |
53 Мбайт/сек |
Isochronous |
1024 байта |
до 3 |
24 Мбайт/сек |
[Типы передач USB]
Типы передач USB обозначают режимы обмена данными между хостом USB и конечными точками устройства USB. Тип передачи определяет частоту и длину транзакций, используемых при обмене с конечной точкой. Типы передач могут также проверяться контрольной суммой (cyclical redundancy checksum, CRC), передаваемой с каждым пакетом. Тип передачи устанавливается устройством, и информация о типе передачи считывается хостом в процессе энумерации устройства USB.
Чтобы упростить разработку ПО для хоста USB и допустить взаимозаменяемость между продукцией устройств USB разных производителей, организация USB Developers Forum утвердила спецификации для классов устройств USB (Device Class). Классы устройств предоставляют номера конечных точек, типы передач и группирование конечных точек для устройств USB.
Бывают 4 типа передач: Interrupt, Bulk, Isochronous, Control.
Передача типа Control особая, она всегда осуществляет обмен с конечной точкой номер 0 (control endpoint, управляющая конечная точка), которую еще называют конечной точкой по умолчанию (default endpoint). В устройстве USB обязательно должна быть такая конечная точка (конечных точек IN или OUT как частный случай в устройстве может и не быть).
Передачи Interrupt, Bulk, Isochronous осуществляются на конечных точках IN (передача от устройства USB к хосту) и OUT (передача от хоста к устройству USB).
[Что учитывают при выборе типов передач]
Когда разработчик подбирает под конкретную задачу класс устройства USB и типы передач для него, он учитывает требования, накладываемые на канал связи с устройством USB.
Latency (задержки). Как быстро хосту нужно обработать обмен с конечной точкой? Чтобы обеспечить прогнозируемое время отклика, транзакции обмена должны быть запланированы с фиксированными интервалами времени. Например, если конечная точка должна обрабатываться после прохождения 10 фреймов, время отклика составит 10 мс при использовании Full-Speed USB. Чтобы гарантировать определенную задержку в обмене, конечная точка обрабатывается строго в предписанном интервале времени, независимо от того, какая есть активность на канале связи с устройством. Выделение времени на каждый фрейм для обслуживания не активных устройств ограничивает общее количество устройств, которые могут быть обработаны из-за конечного свободного времени во фрейме.
Контроль ошибок. Должна ли полезная нагрузка транзакции обеспечивать надежную доставку с защитой контрольной суммой? Большинство реализаций USB используют аппаратный генератор CRC, который добавляет CRC к сообщению. Чтобы позволить разработать экономичные кремниевые решения, разработчики USB ограничены размером пакета транзакций, требующих CRC. Снижение размера пакета может снизить фактическую скорость обмена данными с устройством.
Ширина канала (пропускная способность). Количество пакетов в единицу времени и длина каждого пакета влияют на полосу пропускания канала (bandwidth). Увеличение размера транзакции увеличит полосу, однако большие пакеты не предусматривают проверку CRC. Кроме того, резервирование частей кадра для длинных широкополосных передач ограничивает потенциальное количество устройств, которое может быть обработано хостом.
Увеличение количества транзакций с разрешенной CRC, отправленных в кадре, увеличит пропускную способность, однако этот метод ставит ту же самую дилемму количества обрабатываемых устройств, которую вводят длинные фреймы.
Управление и конфигурация. Часть фрейма должна быть доступна для хоста, чтобы обеспечить энумерацию новых (только что подключенных к шине) устройств, и чтобы можно ыбло посылать команды управления для устройств, прошедших в настоящий момент энумерацию.
[Типы передач, используемые USB]
Как результат учета перечисленных выше параметров канала связи с устройством, организация USB Developers Forum утвердила следующие типы передач для USB:
Interrupt Transfer. Короткие пакеты с CRC, отправка которых запланирована в фиксированные интервалы времени. Хотя на рисунке ниже показаны передачи, запускаемые в каждом кадре, interrupt-передачи могут быть запланированы на передачу через определенное количество фреймов, например в каждом десятом фрейме.
Interrupt-передачи будут происходить всегда, вне зависимости от того, есть ли какие-либо данные для передачи, или нет.
В таблице кратко перечислены достоинства, недостатки и основные области использования interrupt-передач.
Достоинство |
Обеспечивают надежную доставку данных с фиксированным, заранее известным откликом по времени. |
Недостаток |
Полоса канала может быть ограничена (64 килобайта на кадр для Full Speed USB). |
Область использования |
Мыши, клавиатуры, медицинские устройства - там где требуется прогнозируемый в реальном времени отклик от оборудования (класс USB HID). |
Общие замечания |
Для конечных точек interrupt может быть выделено до 90% времени фрейма. Максимальная длина передачи зависит от используемого размера фрейма. |
Isochronous Transfer. Это длинные пакеты без CRC. Изохронные передачи планируются с фиксированными интервалами времени. Полоса фрейма освобождается хостом, если не нужна коммуникация с конечной точкой.
В таблице кратко перечислены достоинства, недостатки и основные области использования изохронных передач.
Достоинство |
Широкая полоса канала связи с устройством USB. |
Недостаток |
Нет поддержки аппаратной CRC. Если все-таки нужна CRC, то её реализация должна быть осуществлена программно. Длинные пакеты в кадре могут ограничить количество обрабатываемых устройств. |
Область использования |
Потоковое видео и звук, эмуляция последовательного порта (классы USB Audio, USB CDC, классы производителя). |
Общие замечания |
Для изохронных конечных точек может быть выделено до 90% времени фрейма. Когда конечная точка не используется, её полоса может быть освобождена для других устройств. Максимальная длина передачи зависит от используемого размера фрейма. |
Bulk Transfer. Короткие пакеты с CRC. Передачи Bulk не планируются с определенными интервалами, они могут происходить, когда во фрейме есть для этого доступная полоса (см. рисунок ниже). Несколько Bulk-передач могут пройти в одном фрейме, если в нем есть для них свободное место.
В таблице кратко перечислены достоинства, недостатки и основные области использования bulk-передач.
Достоинство |
Обеспечивают надежную доставку данных с потенциально широкой полосой пропускания канала связи с устройством. |
Недостаток |
Полоса канала может быть меняться в зависимости от того, сколько было перечислено конечных точек типа interrupt, и от наличия активности перечисленных изохронных конечных точек. |
Область использования |
Устройства хранения (диски, флешки, класс USB MSD), принтеры. |
Общие замечания |
Для конечных точек interrupt может быть выделено до 90% времени фрейма. Максимальная длина передачи зависит от используемого размера фрейма. |
[Скорости USB и соответствующие стандарты]
Устройства и хосты USB классифицируются по поддерживаемой скорости, не просто по номеру спецификации. Объявление совместимости продукции USB с определенным номером стандарта хотя и является точным, однако может не предоставлять полную информацию, необходимую для обмена с устройством.
Участники USB Implementers Forum утвердили несколько пронумерованных спецификаций для USB. Большинство спецификаций было добавлено для поддержки новых скоростей. Спецификации USB также устанавливают, что должны поддерживаться скорости предыдущей версии стандарта. Например, USB 2.0 представила скорость High Speed USB, однако также она предоставляет как часть своей спецификации скорости Low Speed и Full Speed USB, впервые определенные в USB 1.0. Если продукт обозначает себя как "USB 2.0 device", этим он не сообщает, какие реально скорости в нем реализованы.
Таблица 4. Спецификации USB и их классы скоростей
Спецификация |
Новая функция |
Max скорость |
USB 1.1 |
Low Speed |
1.5 Мбит/сек |
Full Speed |
12 Мбит/сек |
USB 2.0 |
High Speed |
480 Мбит/сек |
USB 3.0 |
Super Speed |
5 Гбит/сек |
USB 3.1 |
Super Speed Plus |
10 Гбит/сек |
Таблица 5. Передаваемая мощность питания и спецификации новых соединителей.
Спецификация |
Новая функция |
Max мощность |
Примечания |
Type-C |
Новый коннектор |
5V, 3A |
Может работать по стандарту Power Delivery 2.0 |
Battery Charging 1.2 |
|
5V, 1.5A |
|
Power Delivery 2.0 |
Высокая передаваемая мощность |
100 Вт |
Использует вывод CC коннектора Type-C для протокола согласования мощности. |
Опции питания, предоставляемые хостом |
|
5V, до 0.9A |
USB 2.0 предоставляет максимум 500 mA, 3.0 предоставляет 900 mA. |
[Ссылки]
1. What is USB? site:microchipdeveloper.com. 2. USB in a NutShell - путеводитель по стандарту USB. |