Лекция
Это продолжение увлекательной статьи про usb.
...
3 (40Gbps), как и высокомощные режимы USB Power Delivery 2.0, требует специальных кабелей, маркированных электронным чипом как совместимые.
Для работы съемных кабелей в альтернативном режиме могут использоваться четыре высокоскоростные (SuperSpeed) пары и два контакта Sideband. В случае док-станций, съемных устройств и несъемных (постоянных) кабелей можно также использовать два контакта D+/D- и один конфигурационный контакт. Режимы настраиваются через конфигурационный контакт с использованием сообщений, определяемых вендором (VDM).
Не все альтернативные режимы реализуются в каждом устройстве с разъемом USB Type-C; поддерживаемые альтернативные режимы обозначаются соответствующими логотипами рядом с разъемом[22].
Изучается возможность использования этого разъема другими последовательными высокоскоростными протоколами, например PCI Express и Base-T Ethernet[2
Номер контакта | Цвет провода | Функция |
1 | Красный | VBUS (5 вольт) |
2 | Белый | D- |
3 | Зеленый | D+ |
4 | Черный | Земля |
В кабелях USB используется стандартная цветовая маркировка для изоляции внутренних проводников, что упрощает идентификацию проводов от производителя к производителю. Стандарт регламентирует различные электрические параметры для кабелей. Интересно подробно прочитать включенные оригинальные спецификации USB 1.0. Вы бы разобрались в указанных электрических атрибутах, но параграф 6.3.1.2 предлагает рекомендованный цвет для заполнения кабелей USB морозный белый – как скучно! USB 1.1 и USB 2.0 послабляют рекомендации на Черный, Серый или Натуральный.
Разработчики PCB в части 6 стандарта найдут стандартные посадочные места и цоколевки коннекторов.
В отличие от предыдущих версий, название протокола пишется слитно, без пробела между словом «USB» и цифрой «4».
Спецификация четвертой версии была опубликована 29 августа 2019 года[29][30]. Новый базовый протокол повышает максимальную скорость до 40 Гбит/с (при использовании совместимых кабелей Type-C), сохраняя обратную совместимость с USB 3.2, USB 2.0 и, опционально, Thunderbolt 3[31][32][33].
30 сентября 2021 года были представлены новые логотипы кабелей USB Type-C, которые помимо скорости передачи данных показывают еще и мощность зарядки: 60 Вт или 240 Вт[34][35][36].
Inter-Chip USB (англ.)рус. (IC-USB) и High Speed Inter-Chip USB (HSIC) — упрощенные версии USB 2.0 для некоммутируемого соединения микросхем в одном устройстве. Упрощение достигается за счет замены физического уровня USB с асинхронного на синхронный, отказа от возможности смены скорости и определения подключения, отказа от электрической защиты драйверов и уменьшения их мощности. Логическая часть USB неизменна (в том числе логика состояний шины). IC-USB определяет соединение Full Speed (12 Мбит/с) устройств; HSIC определяет соединение High Speed (480 Мбит/с) устройств.
Первая версия стандарта IC-USB была принята в 2006 году. Первая версия стандарта HSIC была принята в 2007 году[37]. HSIC использует две цифровых линии с логическими уровнями LVCMOS (1,2 вольта): STROBE и DATA. Максимальная длина проводников 10 см. Синхронный интерфейс обеспечивает пропускную способность 480 Мбит/с при тактовой частоте 240 МГц. Драйвер физического уровня HSIC потребляет на 50 % меньше энергии и занимает на 75 % меньше места на кристалле, чем традиционный драйвер USB 2.0[38].
В 2012 году была принята первая версия спецификаций Inter-Chip USB для USB 3.0[39].
Wireless USB — технология USB (официальная спецификация доступна с мая 2005 года), позволяющая организовать беспроводную связь с высокой скоростью передачи информации (до 480 Мбит/с на расстоянии 3 метров и до 110 Мбит/с на расстоянии 10 метров).
23 июля 2007 года USB-IF объявила о сертификации шести первых потребительских продуктов с поддержкой Wireless USB[40].
В 2013 году была представлена спецификация MA-USB, позволяющая инкапсуляцию USB протокола в существующие каналы связи, включая WiFi и WiGig.
Контакт | Название | Описание | Контакт | Название | Описание | ||
---|---|---|---|---|---|---|---|
A1 | GND | Заземление | B12 | GND | Заземление | ||
A2 | TX1+ | SuperSpeed дифференциальная пара #1[a], передача+ | B11 | RX1+ | SuperSpeed дифференциальная пара #2[a], прием+ | ||
A3 | TX1- | SuperSpeed дифференциальная пара #1[a], передача- | B10 | RX1- | SuperSpeed дифференциальная пара #2[a], прием- | ||
A4 | VBUS | Плюс питания | B9 | VBUS | Плюс питания | ||
A5 | CC1 | Конфигурирующий канал (или согласующий) | B8 | SBU2 | Дополнительный канал (Sideband) | ||
A6 | D+ | High-Speed дифференциальная пара[b], положение 1, данные+ | B7 | D- | High-Speed дифференциальная пара[b], положение 2[c], данные- | ||
A7 | D- | High-Speed дифференциальная пара[b], положение 1, данные- | B6 | D+ | High-Speed дифференциальная пара[b], положение 2[c], данные+ | ||
A8 | SBU1 | Дополнительный канал (Sideband) | B5 | CC2 | Конфигурирующий канал (или согласующий) | ||
A9 | VBUS | Плюс питания | B4 | VBUS | Плюс питания | ||
A10 | RX2- | SuperSpeed дифференциальная пара #4[a], прием- | B3 | TX2- | SuperSpeed дифференциальная пара #3[a], передача- | ||
A11 | RX2+ | SuperSpeed дифференциальная пара #4[a], прием+ | B2 | TX2+ | SuperSpeed дифференциальная пара #3[a], передача+ | ||
A12 | GND | Заземление | B1 | GND | Заземление | ||
|
Разъем № 1 кабеля Type-C | Кабель Type-C | Разъем № 2 кабеля Type-C | |||||
---|---|---|---|---|---|---|---|
Контакт | Название | Цвет оболочки проводника | Название | Описание | Контакт | Название | |
Оплетка | Экран | Оплетка кабеля | Экран | Внешняя оплетка кабеля | Оплетка | Экран | |
A1, B1, A12, B12 | GND | Луженый | GND_PWRrt1 GND_PWRrt2 |
Общая земля | A1, B1, A12, B12 | GND | |
A4, B4, A9, B9 | VBUS | Красный | PWR_VBUS1 PWR_VBUS2 |
VBUS питание | A4, B4, A9, B9 | VBUS | |
B5 | VCONN | Желтый | PWR_VCONN | VCONN питание | B5 | VCONN | |
A5 | CC | Синий | CC | Канал конфигурирования | A5 | CC | |
A6 | Dp1 | Белый | UTP_Dp | Неэкранированная дифференциальная пара, positive | A6 | Dp1 | |
A7 | Dn1 | Зеленый | UTP_Dn | Неэкранированная дифференциальная пара, negative | A7 | Dn1 | |
A8 | SBU1 | Красный | SBU_A | Полоса передачи данных A | B8 | SBU2 | |
B8 | SBU2 | Черный | SBU_B | Полоса передачи данных B | A8 | SBU1 | |
A2 | SSTXp1 | Желтый * | SDPp1 | Экранированная дифференциальная пара #1, positive | B11 | SSRXp1 | |
A3 | SSTXn1 | Коричневый * | SDPn1 | Экранированная дифференциальная пара #1, negative | B10 | SSRXn1 | |
B11 | SSRXp1 | Зеленый * | SDPp2 | Экранированная дифференциальная пара #2, positive | A2 | SSTXp1 | |
B10 | SSRXn1 | Оранжевый * | SDPn2 | Экранированная дифференциальная пара #2, negative | A3 | SSTXn1 | |
B2 | SSTXp2 | Белый * | SDPp3 | Экранированная дифференциальная пара #3, positive | A11 | SSRXp2 | |
B3 | SSTXn2 | Черный * | SDPn3 | Экранированная дифференциальная пара #3, negative | A10 | SSRXn2 | |
A11 | SSRXp2 | Красный * | SDPp4 | Экранированная дифференциальная пара #4, positive | B2 | SSTXp2 | |
A10 | SSRXn2 | Синий * | SDPn4 | Экранированная дифференциальная пара #4, negative | B3 | SSTXn2 | |
* Цвета для оболочки проводников не установлены стандартом |
Электрическая спецификация
Вам не нужны электрические спецификации главы 7, за исключением если Вы не разрабатываете чипы USB устройств/трансиверов или USB хост/хаб. Мы бегло рассмотрим основные вопросы этой главы.
Как мы уже упоминали, USB использует для передачи данных пару проводов. Для кодирования применяется принцип NRZI (Not Return Zero Invert – без возврата к нулю с инверсией), и применяется вставка бит (bit stuffing), чтобы обеспечить нужные изменения уровня в потоке данных. На низкоскоростных (low speed) и полноскоростных (full speed) устройствах дифференциальная ‘1’ передается путем повышения уровня D+ свыше +2.8V резистором 15КОм, подключенным к +3.6V и D- ниже +0.3V резистором 1.5КОм, подключенным к земле. Дифференциальный ‘0’ передается тем же способом, только уровни меняются на противоположные - D- свыше 2.8V и D+ ниже 0.3V.
Приемник распознает дифференциальную ‘1’, если уровень D+ больше на 200mV, чем D-, и дифференциальный ‘0’, если D+ на 200mV меньше, чем D-. Полярность сигнала инвертируется в зависимости от скорости шины. Термины состояний ‘J’ и ‘K’ используются для обозначения логических уровней. На low speed состояние ‘J’ – дифференциальный 0. На high speed состояние ‘J’ – дифференциальный 1.
Трансиверы USB имеют одновременно дифференциальные и несимметричные одиночные (single ended) выходы. Определенные состояния шины обозначены несимметричными сигналами на D +, D- или обоими сразу. Например, сигнал SE0 несимметричный и может использоваться для обозначения сброса устройства, если он удерживается дольше 10 мс. Сигнал SE0 генерируется путем удержания и D- и D+ в низком уровне (< 0.3V). О реализации несимметричных и дифференциальных выходов важно знать, если Вы используете трансивер и FPGA в качестве устройства USB. Вы не можете осуществить работу только с помощью дифференциального выхода.
Шина low speed/full speed имеет волновое сопротивление (characteristic impedance) 90 Ом +/- 15%. Таким образом, важно просмотреть даташит при выборе сопротивлений последовательных резисторов для D+ иD-. В любом хорошем даташите указаны величины сопротивлений и допуски на них.
Режим High Speed (480Mbits/s) использует постоянный ток 17.78 mA для передачи сигналов – с целью уменьшения шума.
Идентификация скорости
Устройство USB должно показать свою скорость путем подвешивания линии D+ или D- к напряжению 3.3V. Устройство full speed, как показано на картинке ниже, использует pull up резистор, подключенный к D+ для указания хосту, что это устройство full speed device. Резисторы pull up на стороне устройства используются хостом или хабом для определения присутствия устройства на шине (подключено ли устройство в порт USB). Без pull up резистора считается, что к шине USB ничего не подключено. Некоторые устройства имеют этот резистор встроенным в чип (он может включаться и выключаться программно под управлением firmware), другие требуют наличия внешнего резистора.
Возьмем для примера технологию SoftConnectTM Philips Semiconductor. При подключении к шине микроконтроллер инициализирует функцию устройства USB перед тем, как он разрешает pull up резистор для идентификации скорости, показывающий, что устройство подключено к шине. Если pull up резистор был подключен к Vbus, то это означает, что устройство сразу подключается к шине, как только оно воткнуто в порт USB. В этом случае хост может попытаться сбросить устройство и запросить дескриптор, когда микроконтроллер устройства еще не проинициализировал функцию устройства USB (не готов в обработке запросов USB).
Другие вендоры, такие как Cypress Semiconductor, также используют программируемый резистор для технологии Re-NumerationTM в своих устройствах EzUSB, где устройство при подключении сначала определяется как программируемое устройство USB, а потом, после загрузки в устройство программного обеспечения, отключается от шины и под управлением загруженного firmware проходит энумерацию как другое устройство USB (все это происходит незаметно для пользователя). Многие устройства EzUSB не имеют встроенной памяти Flash или OTP ROM для сохранения кода. Они загружают код через подключение по USB.
![]() |
Рисунок 2: USB устройство Full Speed имеет pull up резистор, подключенный к D+ |
![]() |
Рисунок 3: USB устройство Low Speed имеет pull up резистор, подключенный к D- |
Обратите внимание, что мы не рассматривали идентификацию скорости для режима High Speed. High speed начинают работу путем подсоединения на full speed (1.5k на 3.3V к сигналу D+). После установления соединения и сброса устройство переходит к соединению на high speed, если хаб или хост поддерживает это. Если резистор работает в режиме high speed, резистор pull up отключается для сохранения баланса линии.
Для совместимости устройства с USB 2.0 не требуется поддержка режима high-speed. Это позволяет производить более дешевые устройства, если скорость не важна. Это также имеет место для USB 1.1 low speed устройства, которое не обязано поддерживать full speed.
Однако высокоскоростное устройство не должно поддерживать режим низкой скорости. Оно должно только поддержать режим full speed для первого соединения, и затем перейти в режим high speed после успешного взаимодействия. USB 2.0 совместимое downstream устройство (хаб или хост) должен поддерживать все три режима - high speed, full speed и low speed.
Питание (VBUS)
Одна из выгод USB – устройства, питаемые от шины (bus-powered devices) – устройства, которые могут получать питание от шины и не требовать никаких дополнительных джеков или кабелей. Однако многие путаются в этой опции без рассмотрения нужных критериев.
USB устройство указывает свое энергопотребление в единицах 2mA в дескрипторе конфигурации, который мы будем детально рассматривать далее. Устройство не может увеличить энергопотребление свыше величины, указанной при энумерации, даже если у него пропадет внешнее питание. Имеется 3 класса функций USB:
Low power питаемые от шины функции получают питание полностью только от VBUS и не могут потреблять больше, чем 1 юнит нагрузки (one unit load). Спецификация USB задает в качестве юнита нагрузки 100mA. Low power питаемые от шины функции должны быть также разработаны таким образом, чтобы могли работать при снижении напряжения на VBUS до 4.40V и повышении до 5.25V, замеренных на upstream коннекторе устройства. Для большинства устройств 3.3V обязательно применение LDO регуляторов.
High power питаемые от шины функции получают питание только от USB и не могут потреблять больше, чем 1 юнит нагрузки, пока они не будут сконфигурированы хостом, после чего они могут потреблять до 5 юнитов нагрузки (500mA Max), предоставленных в соответствии с запрошенной величиной из дескриптора. High power питаемые от шины функции должны быть способны проходить детектирование и энумерацию при напряжении минимум 4.40V. Когда проходит работа с полной нагрузкой, то минимум для VBUS составляет 4.75 V, и максимум 5.25V. Здесь также измерения происходят с разъема upstream.
Самопитаемые функции (self power functions) могут потреблять от шины до 1 юнита нагрузки и получать остаток мощности от внешнего источника. При пропадании внешнего источника питания должна быть обеспечена возможность потребления от шины USB не больше, чем 1 юнит нагрузки. Самопитаемые функции проще в разработке, поскольку отсутствуют проблемы с потребляемой мощностью. Одноюнитовая нагрузка на шину позволяет проводить детектирование и энумерацию без основного/дополнительного источника питания.
Никакое устройство USB, независимо от типа питания не должно подавать питание на провод VBUS на своем upstream порту. Если VBUS пропадет, устройство должно в течение 10 секунд убрать питание с D+/D- pull-up резисторов, используемых для идентификации скорости.
Другое условие использования VBUS - пусковой ток, который должен быть ограничен. Это выделено в параграфе 7.2.4.1 спецификации USB и обычно пропускается. Пусковой ток происходит из-за наличия электрической емкости в Вашем устройстве между VBUS и землей. Поэтому спецификация указывает максимально допустимую развязывающую емкость, которую Вы можете иметь в своем устройстве - 10uF. Когда Вы отключаете устройство, возникает ЭДС самоиндукции от протекающего тока (за счет индуктивности кабеля USB), которая может достичь большой величины. Для защиты от этого должна присутствовать минимальная развязывающая емкость 1uF на VBUS.
Типичное питаемое от шины устройство не может потреблять ток свыше весьма разумной величины - 500mA. Вы можете спросить – какие осложнения тут могут быть? Может, Suspend Mode (режим приостановки)?
Потребление в режиме приостановки (Suspend Mode)
Suspend mode обязателен для всех устройств. Во время приостановки вступают в силу дополнительные ограничения. Максимальный ток приостановки пропорционален номинальной нагрузке в юнитах. Для устройства с током нагрузки в 1 юнит максимальный ток приостановки (по умолчанию) 500uA. Это включает ток от pull up резисторов на шине. В хабе имеются на обеих линиях D- и D+ pull down резисторы по 15 КОм. Эти pull down резисторы вместе с последовательно включенным резистором в устройстве (1.5 КОм pull up) создают общую нагрузку 16.5 КОм на VTERM обычно 3.3v. Таким образом, этот резистор потребляет 200uA еще до старта.
Кроме того, нужно принимать во внимание для многих устройств регулятор 3.3V. Многие устройства USB работают от 3.3V, например - PDIUSBD11. Линейные регуляторы обычно весьма неэффективны при средних статических электрических токах порядка 600uA, поэтому требуются более эффективные и, таким образом, дорогие регуляторы. В большинстве случаев Вы должны также уменьшить тактовую частоту микроконтроллера или совсем остановить тактовую частоту микроконтроллера, чтобы уложиться в предел 500uA.
Примечание переводчика: многие разработчики firmware не утруждают себя обработкой режима Suspend. Например, среди разработок, основанных на библиотеке V-USB, мне не попадались проекты с поддержкой режима Suspend.
Многие разработчики на форуме USB Implementor's Forum спрашивают – какие проблемы произойдут, если превысить лимит тока Suspend? Само собой разумеется, что большинство хостов и хабов не могут обнаружить перегрузку такой величины, и следовательно Ваше устройство может потреблять ток 5 мА и даже 10 мА и при этом нормально работать – но все-таки Вы при этом нарушаете требования спецификации USB. Однако при нормальном функционировании (не в режиме Suspend), если Вы пытаетесь превысить на 100mA Вашу определенную допустимую нагружку, то хаб или хост наверняка обнаружат это и отсоединят Ваше устройство в интересах целостности шины.
Конечно, этих вопросов проектирования можно избежать, если Вы хотите спроектировать устройство USB с собственным питанием. Токи Suspend не имеют значения для десктопов, но с введением спецификации On-The-Go хостами USB могут стать мобильные телефоны и мобильные органайзеры. Лишнее потребление энергии Вашими USB устройствами произведет неблагоприятный эффект на время работы мобильного устройства от батареи.
Вход в Suspend Mode
Устройство USB приостанавливается (переходит в режим Suspend), когда на шине нет активности более чем 3.0 мс. В течение следующих 7 мс устройство должно отключиться, и не потреблять ток больше, чем заданный ток suspend. Таким образом, через 10 мс после прекращения активности шины ток потребления от нее не должен превышать suspend current. Для поддержания состояния соединения к приостановленному хабу или хосту, устройство во время режима Suspend должно все еще предоставлять питание на pull up нагрузочный резистор, определяющий выбор скорости.
У USB есть пакет start of frame (SOF), который строго периодично (каждые 1 мс для low speed и full speed) посылается на шину для поддержания ее в активном состоянии. Это препятствует тому, чтобы шина стала неактивной (вошла режим приостановки) при отсутствии данных на шине.
Термин "Global Suspend" используется, когда вся шина USB входит в режим suspend целиком. Однако также может быть приостановлено выбранное устройство путем посылки команды хабу, куда подключено устройство. Это называют как "Selective Suspend."
Устройство возобновит работу, как только примет любой «не idle» сигнал. Если устройство имеет возможность удаленного пробуждения (remote wakeup enabled), то оно может сигнализировать хосту о необходимости выхода из режима Suspend (resume).
Скорость сигнала данных (Data Signalling Rate)
Другая область, которая часто пропускается, является допуск на такты USB. Эта информация имеется в секции 7.1.11 спецификации USB.
Эти допуски позволяют для устройств low speed применять недорогие резонаторы, но исключает их для full speed или high speed устройств.
В отличие от RS-232 и похожих последовательных интерфейсов, где формат отправляемых данных не задан, USB составлен из нескольких слоев протоколов. Об этом говорит сайт https://intellect.icu . Звучит сложно, но не опускайте руки. Как только поймете, что происходит, нужно беспокоиться только о протоколах верхних уровней. Фактически большинство контроллеров USB берет на себя заботу о нижних уровнях протоколов, делая их невидимыми для конечного разработчика.
Каждая транзакция USB состоит из:
Как мы уже упоминали - USB является шиной, где главным является хост. Хост начинает все транзакции. Первый пакет, так называемый token, генерируется хостом для описания того, что проследует далее и будет ли это транзакция чтения или записи, и какой адрес устройства и определенная конечная точка (endpoint). Следующий пакет обычно пакет данных, несущий полезную нагрузку, за которым идет пакет рукопожатия (handshaking packet), сообщающий о том, что данные или token были приняты успешно, или конечная точка (endpoint) остановлена (stalled) или недоступна для принятия данных.
Общие поля пакета USB
Данные на шине USB передаются в таком порядке: первым идет LSB (Least Significant Bit, младший значащий бит). Пакеты USB состоят из следующих полей:
Все пакеты должны начинаться с поля синхронизации (sync). Поле sync имеет длину 8 бит на low speed и full speed или 32 бита на high speed, и используется для синхронизации тактов приемника с тактами передатчика. Последние 2 бита показывают, где начинается поле PID.
PID означает Packet ID. Это поле используется для обозначения типа пакета, который сейчас отправляется. Следующая таблица показывает возможные значения этого поля.
Группа | Значение PID | Идентификатор пакета |
Token | 0001 | OUT Token |
1001 | IN Token | |
0101 | SOF Token | |
1101 | SETUP Token | |
Data | 0011 | DATA0 |
1011 | DATA1 | |
0111 | DATA2 | |
1111 | MDATA | |
Handshake | 0010 | ACK Handshake |
1010 | NAK Handshake | |
1110 | STALL Handshake | |
0110 | NYET (No Response Yet) | |
Special | 1100 | PREamble |
1100 | ERR | |
1000 | Split | |
0100 | Ping |
У PID здесь 4 бита, однако чтобы обеспечить его правильный прием, 4 бита дополнены (complemented) и повторены, в результате получился 8-битный PID. Полученный формат показан ниже:
PID0 | PID1 | PID2 | PID3 | nPID0 | nPID1 | nPID2 | nPID3 |
Поле адреса указывает, какому из устройств USB предназначен пакет. Адрес имеет длину 7 бит, что позволяет адресовать до 127 поддерживаемых одновременно устройств. Адрес 0 недопустим, он предназначен для устройств, адрес для которых пока не назначен. Любое устройство, которому не назначен адрес, должно отвечать на пакет с адресом 0.
Поле endpoint составлено из 4 бит, что позволяет 16 возможных конечных точек. Однако устройства low speed могут иметь только 2 дополнительные конечные точки сверх заданного по умолчанию канала (4 конечных точки максимум).
Cyclic Redundancy Checks (Циклическая Избыточная проверка) выполняется над данными в пределах полезной нагрузки пакета. Все пакеты token имеют 5 бит CRC, а пакеты data имеют 16 бит CRC.
End of packet, конец пакета. Сигнализируется несимметричным нулем (Single Ended Zero, SE0) на время примерно 2 бита, и далее следует состояние J длительностью 1 бит.
Типы пакетов USB
USB имеет 4 разных типа пакета. Пакеты token индицируют тип последующей транзакции, пакеты data содержат payload, пакеты handshake используются для подтверждения данных или сообщений об ошибках, и пакеты start of frame (SOF) показывают начало нового фрейма.
Имеется 3 типа пакетов token:
In – информируют устройство USB о том, что хост хочет прочитать информацию.
Out - информируют устройство USB о том, что хост хочет отправить информацию.
Setup – используется для начала управляющих передач (control transfers).
Пакеты token должны удовлетворять следующему формату:
Sync | PID | ADDR | ENDP | CRC5 | EOP |
Имеется 2 типа пакетов данных, каждый из которых может передать до 1024 байта данных.
Data0
Data1
Режим High Speed задает два других data PID - DATA2 и MDATA.
Пакеты Data имеют следующий формат:
Sync | PID | Data | CRC16 | EOP |
Максимальный размер полезной нагрузки (payload) для low-speed устройств составляет 8 байт. Максимальный размер полезной нагрузки для full-speed устройств составляет 1023 байт. Максимальный размер полезной нагрузки для high-speed устройств составляет 1024 байт. Данные нужно послать в единицах байт.
Имеется 3 типа пакетов handshake, которые состоят просто из PID
ACK – подтверждение о том, что пакет успешно принят. NAK – сообщение о том, что устройство временно не может отправить или принять данные. Также используется в interrupt транзакциях для информирования хоста о том, что нет никаких данных для передачи. STALL – устройство находится в состоянии, которое требует вмешательства со стороны хоста.
Пакеты handshake имеют следующий формат:
Sync | PID | EOP |
Пакет SOF состоит из 11-битного номера фрейма, отсылаемого хостом каждые 1ms ± 500ns на full speed или каждые 125 µs ± 0.0625 µs на high speed.
Sync | PID | Frame Number | CRC5 | EOP |
Спецификация USB предлагает разработчику несколько вариантов устройств в зависимости от требуемой скорости обмена данными. Это Low Speed (физическая скорость 1,5 Мбит/с ± 1,5 %), Full Speed (12 Мбит/с ± 0,25 %), High Speed (480 Мбит/с ± 0,05 %), SuperSpeed (5 Гбит/с ± 0,06 %), SuperSpeed+ (10 Гбит/с). Low-, Full- и High-Speed-устройства используют одну дифференциальную полудуплексную линию связи для обмена данными, SuperSpeed — несколько. Протоколы обмена идентичны.
USB представляет собой сеть с одним мастером (хостом) и произвольным количеством подчиненных устройств (device). Топология сети — активное дерево. «Активное» означает, что в каждом узле дерева находится специальное устройство — концентратор (хаб). Хаб занимается электрическим согласованием кабелей, маршрутизацией пакетов, обнаружением подключения/отключения устройств и другими функциями. Все соединения в сети электрически и протокольно идентичны.
USB позволяет выполнять «горячее» подключение и отключение отдельных устройств или сегментов сети. «Горячее» означает, что работа сети при этом не нарушается, а мастер способен определять факт изменения конфигурации сети автоматически, в реальном времени. Поскольку вся сеть получает электропитание от мастера, то поддерживается возможность автоматического контроля энергоснабжения сети: устройство сообщает мастеру о своих потребностях, а мастер может запретить работу устройства, если энергетические возможности сети могут быть превышены.
продолжение следует...
Часть 1 Все о USB , Программирование USB интерфейса и работа с USB периферии для программистов
Часть 2 Цоколевки разъема и кабеля - Все о USB , Программирование
Часть 3 Глава 4: Типы конечных точек (Endpoint Types ) - Все
Часть 4 Глава 5: Дескрипторы USB - Все о USB , Программирование
Часть 5 Глава 7 : обычный (Generic) драйвер USB - Все о
Часть 6 Термины - Все о USB , Программирование USB интерфейса и
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Операционные системы и системное программировние
Термины: Операционные системы и системное программировние