Программирование ARM: работа с USB Фреймы и типы передач USB Mon, October 21 2019  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Фреймы и типы передач USB Печать
Добавил(а) microsin   

Передачи данных 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-передачи могут быть запланированы на передачу через определенное количество фреймов, например в каждом десятом фрейме.

USB interrupt transfer

Interrupt-передачи будут происходить всегда, вне зависимости от того, есть ли какие-либо данные для передачи, или нет.

В таблице кратко перечислены достоинства, недостатки и основные области использования interrupt-передач.

Достоинство Обеспечивают надежную доставку данных с фиксированным, заранее известным откликом по времени.
Недостаток Полоса канала может быть ограничена (64 килобайта на кадр для Full Speed USB).
Область использования Мыши, клавиатуры, медицинские устройства - там где требуется прогнозируемый в реальном времени отклик от оборудования (класс USB HID).
Общие замечания Для конечных точек interrupt может быть выделено до 90% времени фрейма. Максимальная длина передачи зависит от используемого размера фрейма.

Isochronous Transfer. Это длинные пакеты без CRC. Изохронные передачи планируются с фиксированными интервалами времени. Полоса фрейма освобождается хостом, если не нужна коммуникация с конечной точкой.

USB isochronous transfer

В таблице кратко перечислены достоинства, недостатки и основные области использования изохронных передач.

Достоинство Широкая полоса канала связи с устройством USB.
Недостаток Нет поддержки аппаратной CRC. Если все-таки нужна CRC, то её реализация должна быть осуществлена программно. Длинные пакеты в кадре могут ограничить количество обрабатываемых устройств.
Область использования Потоковое видео и звук, эмуляция последовательного порта (классы USB Audio, USB CDC, классы производителя).
Общие замечания Для изохронных конечных точек может быть выделено до 90% времени фрейма. Когда конечная точка не используется, её полоса может быть освобождена для других устройств. Максимальная длина передачи зависит от используемого размера фрейма.

Bulk Transfer. Короткие пакеты с CRC. Передачи Bulk не планируются с определенными интервалами, они могут происходить, когда во фрейме есть для этого доступная полоса (см. рисунок ниже). Несколько Bulk-передач могут пройти в одном фрейме, если в нем есть для них свободное место.

USB bulk transfer

В таблице кратко перечислены достоинства, недостатки и основные области использования 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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page