Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб11_ЮСБ.doc
Скачиваний:
13
Добавлен:
21.12.2018
Размер:
1.78 Mб
Скачать

Протокол.

Все обмены (транзакции) по USB состоят из трех пакетов. Каждая транзакция планируется и начинается по инициати­ве контроллера, который посылает пакет-маркер (Token Packet). Он описывает тип и направление передачи, адрес ус­тройства USB и номер конечной точки. В каждой транзак­ции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером уст­ройство распознает свой адрес и готовится к обмену. Источ­ник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного приема пакета приемник данных посылает пакет подтверждения (Handshake Packet).

Планирование транзакций обеспечивает управление поточ­ными каналами. На аппаратном уровне использование отказа от транзакции (NAck) при недопустимой интенсивнос­ти передачи предохраняет буферы от переполнения сверху и снизу. Маркеры отвергнутых транзакций повторно пере­даются в свободное для шины время. Управление потоками позволяет гибко планировать обслуживание одновременных разнородных потоков данных.

Устойчивость к ошибкам обеспечивают следующие свойства USB:

Высокое качество сигналов, достигаемое благодаря диф­ференциальным приемникам/передатчикам и экраниро­ванным кабелям. Защита полей управления и данных CRC.

Обнаружение подключения и отключения устройств и конфигурирование ресурсов на системном уровне.

Самовосстановление протокола с тайм-аутом при потере пакетов.

Управление потоком для обеспечения изохронности и управления аппаратными буферами.

Независимость функций от неудачных обменов с други­ми функциями.

Для обнаружения ошибок передачи каждый пакет имеет кон­трольные поля CRC-кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные сред­ства обнаруживают ошибки передачи, а контроллер автома­тически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается кли­ентскому ПО.

Форматы пакетов.

Байты передаются по шине последовательно, начиная с млад­шего бита. Все посылки организованы в пакеты. Каждый пакет начинается с поля синхронизации Sync, которое пред­ставляется последовательностью состояний KJKJKJKK (коди­рованную по NRZI), следующую после состояния Idle. По­следние два бита (КК) являются маркером начала пакета SOP, используемым для идентификации первого бита идентифи­катора пакета PID. Идентификатор пакета является 4-битным полем PID[3:0], идентифицирующим тип пакета (табл. 1), за которым в качестве контрольных следуют те же 4 бита, но инвертированные.

В пакетах-маркерах /Л/, SETUP и OUT следующими являются адресные поля: 7-битный адрес функции и 4-битный адрес конечной точки. Они позволяют адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции.

В пакете SOF имеется 11-битное поле номера кадра (Frame Number Field), последовательно (циклически) увеличиваемое для очередного кадра.

Поле данных может иметь размер от 0 до 1023 целых байт. Размер поля зависит от типа передачи и согласуется при установлении канала. Поле crc-кода присутствует во всех маркерах и пакетах дан­ных, оно защищает все поля пакета, исключая РЮ. CRC для маркеров (5 бит) и данных (II бит) подсчитываются по раз­ным формулам.

Каждая транзакция инициируется хост-контроллером посыл­кой маркера и завершается пакетом квитирования. Последовательность пакетов в транзакциях иллюстрирует рис. 1.

Хост-контроллер организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер цикли­чески (с периодом 1 мс) формирует кадры (Frames), в кото­рые укладываются все запланированные транзакции. Каж­дый кадр начинается с посылки маркера SOF (Start Of Frame), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяет­ся интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Каждый кадр имеет свой номер. Хост-контроллер опериру­ет 32-битным счетчиком, но в маркере SOF передает только младшие 11 бит. Номер кадра увеличивается (циклически) во время EOF. Хост планирует загрузку кадров так, чтобы в них всегда находилось место для транзакций управления и прерывания. Свободное время кадров может заполняться сплошными передачами (Bulk Transfers).

Рис. 1. Поток кадров USB

Для изохронной передачи важна синхронизация устройств и контроллера. Есть три варианта:

синхронизация внутреннего генератора устройства с мар­керами SOF;

подстройка частоты кадров под частоту устройства;

согласование скорости передачи (приема) устройства с частотой кадров.

Подстройка частоты кадров контроллера возможна, есте­ственно, под частоту внутренней синхронизации только од­ного устройства. Подстройка осуществляется через механизм обратной связи, который позволяет изменять период кадра в пределах ±1 битового интервала.

Регистры хост-контроллера.

Для описания режима доступа к данным в регистрах USB используются следующие стандартные обозначения:

  • RO — возможно только считывание данных;

  • WO — возможна только запись данных;

  • R/W — разрешено выполнение как записи, так и считывания данных;

  • R/WC — разрешено считывание данных и сброс отдельных разрядов регистра (запись единицы в некоторый разряд регистра приводит к тому, что этот разряд сбрасывается в ноль).

  Список регистров ввода-вывода хост-контроллера шины USB приведен в табл. 2. Доступ к этим регистрам осуществляется через группу портов ввода/вывода, базовый адрес которой задан в конфигурационном регистре USBBA.

  Таблица 2. Регистры ввода-вывода универсального хост-контроллера шины USB

  Смещение

Размер

Доступ

Мнемоника

Наименование регистра

00h

WORD

R/W

USBCMD

Регистр команды USB

02h

WORD

R/WC

USBSTS

Регистр состояния USB

04h

WORD

R/W

USBINTR

Регистр управления прерываниями USB

06h

WORD

R/W

FRNUM

Регистр номера кадра USB

08h

DWORD

R/W

FLBASEADD

Регистр базового адреса списка кадров USB

0Ch

BYTE

R/W

SOFTMOD

Регистр модификатора начала кадра USB

10h

WORD

R/WC

PORTSC0

Регистр состояния и управления порта 0

12h

WORD

R/WC

PORTSC1

Регистр состояния и управления порта 1

 

Регистр команды USB (USBCMD) предназначен для передачи команд хост-контроллеру и доступен как для записи, так и для считывания данных. Контроллер начинает выполнение команды сразу же после того, как она записана в регистр.

Рассмотрим назначение разрядов регистра команды USB.

  • Бит 0 (RS) — запуск/останов. Запись единицы в данный разряд активизирует работу контроллера (контроллер приступает к обработке и передаче данных), а запись нуля приводит к немедленной остановке контроллера и прекращению всех выполняемых операций. Контроллер сам может сбрасывать данный разряд в ноль в случае возникновения серьезных ошибок и сбоев.

Бит 1 (HCRESET) — сброс хост-контроллера. Запись единицы в данный разряд приводит к сбросу регистров, отражающих внутреннее состояние контроллера; механизм, обеспечивающий обнаружение подсоединения и отсоединения

  • устройств обнуляется, работа обоих портов хост-контроллера блокируется. В результате происходит «виртуальное отсоединение» подключенных к контроллеру устройств, биты 1 и 3 в регистрах состояния портов контроллера устанавливаются в единицу, а биты 0 и 8 сбрасываются. После завершения процесса обнуления всех внутренних регистров контроллер самостоятельно сбрасывает бит HCRESET и разрешает обнаружение подсоединенных устройств и определение скорости их работы, что приводит к соответствующему изменению битов 0 и 8 в регистрах состояния портов.

  • Бит 2 (GRESET) — глобальный сброс. Запись единицы в данный разряд вызывает общий сброс хост-контроллера и всех подключенных к нему устройств. Снять сигнал глобального сброса можно по прошествии не менее 10 мс после его установки, записав в данный разряд ноль.

  • Бит 3 (EGSM) — переключение в глобальный режим ожидания. Запись единицы в данный разряд вызывает переключение хост-контроллера и всех подключенных к нему устройств в режим ожидания. Перед установкой в единицу бита EGSM необходимо остановить контроллер, сбросив бит запуска/останова RS. При выходе из режима ожидания данный бит сбрасывается в ноль программным обеспечением после сброса в ноль бита 4.

  • Бит 4 (FGR) — общий выход из режима ожидания. Запись единицы в данный разряд выводит хост-контроллер и подключенные к нему устройства из режима ожидания. Устанавливать данный разряд может не только программное обеспечение, но и сам хост-контроллер — при обнаружении подключения или отключения устройства во время пребывания системы в режиме ожидания. Снять сигнал «пробуждения» можно по прошествии не менее 20 мс после его установки, записав в данный разряд ноль.

  • Бит 5 (SWDBG) — переключение в режим отладки. Устанавливать бит SWDBG можно только при сброшенном бите RS, то есть только тогда, когда работа контроллера приостановлена. Запись единицы в данный разряд переводит контроллер в режим отладки программного обеспечения. В режиме отладки контроллер останавливается после выполнения каждой транзакции и сбрасывает бит RS; возобновление работы контроллера происходит после того, как программное обеспечение установит бит RS в единицу.

  • Бит 6 (CF) — флаг завершения конфигурирования контроллера. Данный разряд может быть установлен в единицу программным обеспечением после завершения процесса конфигурирования хост-контроллера, но на работу самого контроллера никак не влияет.

  • Бит 7 (МАХР) — максимальный размер пакета завершения кадра (О — 32 байта, 1 — 64 байта).

  • Биты 8-15 зарезервированы (всегда должны быть сброшены в ноль).

 

После аппаратного или программного сброса контроллера регистр команды USB содержит значение 0000 h .

Регистр состояния USB (USBSTS) отражает текущее состояние хост-контроллера. Регистр USBSTS доступен для чтения и сброса (запись единиц в какие-либо его разряды сбрасывает эти разряды в ноль). Рассмотрим назначение разрядов регистра состояния USB:

  • бит 0 (USBINT) — признак USB -прерывания. Данный разряд устанавливается контроллером при возникновении запроса прерывания по завершению транзакции (при установленном бите IOC в дескрипторе передачи) или при обнаружении короткого пакета (размер пакета меньше заданной в дескрипторе величины);

  • бит 1 — признак прерывания по ошибке, которая произошла при выполнении транзакции;

  • бит 2 (RSM_DET) — признак поступления на шину сигнала «пробуждения» от устройства USB;

  • бит 3 — признак системной ошибки (устанавливается при возникновении сбоев в процессе передачи данных по шине PCI);

  • бит 4 — признак обнаружения ошибки в работе контроллера;

  • бит 5 — признак останова контроллера (устанавливается после сброса в ноль бита RS в регистре команды USB);

  • биты 6-15 зарезервированы.

 

После аппаратного или программного сброса контроллера регистр состояния USB содержит значение 0020h.

 

Регистр управления прерываниями (USBINTR) позволяет разрешать и запрещать генерацию прерываний различных типов хост-контроллером. Регистр USBINTR доступен для записи и считывания. Назначение разрядов регистра управления прерываниями:

  • бит 0 — управление прерыванием по тайм-ауту и обнаружению ошибок CRC (0 — прерывание запрещено, 1 — разрешено);

  • бит 1 — управление прерыванием по сигналу пробуждения (0 — прерывание запрещено, 1 — разрешено);

  • бит 2 — управление прерыванием по завершению транзакции IOC (О — прерывание запрещено, 1 — разрешено);

  • бит 3 — управление прерыванием по обнаружению короткого пакета (0 — прерывание запрещено, 1 — разрешено);

  • биты 4-15 зарезервированы.

 

Таким образом, регистр управления прерываниями позволяет заблокировать любые прерывания от контроллера USB, кроме прерываний, генерируемых при обнаружении ошибок в работе самого контроллера.

После аппаратного или программного сброса контроллера регистр USBINTR содержит значение 0000 h: все прерывания (за исключением прерываний по сбоям в работе контроллера) запрещены.

 

Регистр номера кадра (FRNUM) содержит текущий номер кадра US B. Младшие 11 разрядов регистра (биты 0-10) содержат текущий номер кадра, а остальные разряды зарезервированы и должны содержать нули. Регистр доступен для чтения в любой момент времени, а запись данных разрешена только в том случае, если работа контроллера приостановлена (бит RS в регистре команды USB сброшен в ноль).

Значение, содержащееся в разрядах 0-10 регистра FRNUM, увеличивается на единицу (инкрементируется) после завершения каждого кадра; после достижения значения 7FFh регистр обнуляется. Содержимое разрядов 0-10 служит номером кадра и передается в начале кадра в SOF -пакете. Кроме того, разряды 0-9 используются при формировании индекса текущего элемента в списке кадров (соответствуют разрядам 2-11 индекса).

После аппаратного или программного сброса контроллера регистр FRNUM содержит значение 0000 h.

 

Регистр базового адреса списка кадров USB (FRBASEADD) содержит начальный (абсолютный) адрес списка кадров в оперативной памяти компьютера. Регистр доступен FRBASEADD для записи и считывания данных. Используются только старшие 20 бит регистра FRBA-SEADD, соответствующие битам 12-31 линейного адреса, а младшие 12 бит зарезервированы и должны содержать нули. Таким образом, базовый адрес списка кадров должен быть выровнен на границу гранулярности свопинга памяти процессоров Intel x86 (4 Кбайт).

Контроллер формирует указатель на текущий элемент списка кадров путем комбинирования сдвинутых влево на два разряда битов 0-9 из регистра номера кадра и битов 12-31 из регистра базового адреса. Разряды 0 и 1 указателя всегда равны нулю (указатель выровнен на границу двойного слова). Количество указателей в списке кадров равно 1024, а размер списка составляет 4 Кбайт.

После аппаратного или программного сброса контроллера значение регистра базового адреса считается "неопределенным": перед запуском контроллера надлежит создать в оперативной памяти список кадров и загрузить его абсолютный (линейный) адрес в регистр FRBASEADD.

 

Регистр модификатора начала кадра USB (SOFMOD) служит для подстройки частоты кадров USB с целью обеспечения синхронизации всех устройств системы при работе в режиме реального времени. Значение младших семи разрядов этого регистра складывается с числом 11936, в результате чего формируется делитель частоты кварцевого резонатора генератора тактовой частоты. Старший разряд регистра SOFMOD (бит 7) зарезервирован и должен содержать значение 0.

Частота кварцевого резонатора составляет 12 МГц, а значение, устанавливаемое в регистре модификатора начала кадра после аппаратного или программного сброса контроллера равно 64 (40h), поэтому частота генерации кадров равна 1 кГц. Изменяя значение модификатора от 0 до 127, можно осуществлять подстройку частоты кадров USB в пределах ± 0,5 %.

 

Регистр состояния и управления порта (PORTSC) позволяет контролировать режим работы порта хост-контроллера. Регистры PORTSC0 и PORTSC 1 доступны для записи и считывания данных. Назначение разрядов регистра состояния порта:

  • бит 0 — текущий статус подключения. Данный разряд доступен только для считывания и служит для определения наличия подключения US В-устройства к данному порту (0 — к порту ничего не подключено, 1 — к порту подключено устройство USB);

  • бит 1 — признак изменения статуса подключения: устанавливается в единицу при любых изменениях текущего статуса подключения (см. бит 0). Бит признака изменения статуса подключения доступен для считывания и сброса (запись единицы в данный разряд сбрасывает его в ноль);

  • бит 2 (PORT_EN) — включение и отключение порта (0 — порт заблокирован, 1 — работа порта разрешена). Данный разряд доступен для записи и считывания: запись нуля (блокировка порта) может выполняться как программным обеспечением, так и хост-контроллером (при возникновении сбоя в работе порта), а запись единицы — только программным обеспечением. Состояние данного разряда не изменяется, пока не изменится реальное состояние порта (возможна задержка срабатывания);

  • бит 3 — признак включения и отключения порта (0 — состояние порта не изменялось, 1 — произошло включение или отключение порта). Бит признака включения и отключения порта доступен для считывания и сброса (запись единицы в данный разряд сбрасывает его в ноль);

  • бит 4 — состояние линии D+. Данный бит отражает текущей логический уровень линии D+ и доступен только для чтения;

  • бит 5 — состояние линии D - . Данный бит отражает текущий логический уровень линии D- и доступен только для чтения;

  • бит 6 (RSM _ DET) — признак обнаружения сигнала пробуждения ( 0 — сигнал не поступал, 1 — поступил сигнал пробуждения). Бит признака обнаружения сигнала пробуждения доступен для записи и считывания. Хост-контроллер устанавливает бит RSM _ DET в 1 при обнаружении сигнала пробуждения; программное обеспечение устанавливает бит RSM_DET для формирования сигнала пробуждения. Если бит RSM_DET имеет значение 1, запись нуля приводит к тому, что порт посылает низкоскоростной ЕОР (до окончания ЕОР бит остается в состоянии 1);

  • бит 7 зарезервирован, доступен только для считывания и при считывании всегда имеет значение 1;

бит 8 — признак подключения низкоскоростного устройства. Данный бит доступен только для считывания и устанавливается в единицу, если к порту

  • подключено низкоскоростное устройство;

  • бит 9 — сброс порта. Бит сброса в современных контроллерах доступен только для считывания, хотя ранние варианты допускали выполнение операции записи. Бит сброса порта устанавливается в единицу при подаче команды сброса и находится в этом состоянии до тех пор, пока процедура сброса не будет завершена;

  • бит 10 — признак активности линии «Overcurrent» (0 — линия неактивна, 1 — линия активна). Бит 10 используется лишь в современных контроллерах и доступен только для считывания;

  • бит 11 — признак изменения состояния линии «Overcurrent». Данный бит доступен для считывания и сброса. Он устанавливается контроллером в состояние 1 при переходе линии «Overcurrent» из неактивного состояния в активное. Признак сбрасывается программным обеспечением путем записи единицы в бит 11. Бит 11 используется только в современных контроллерах;

  • бит 12 — признак режима ожидания (устанавливается в 1, когда порт находится в режиме ожидания). Данный бит доступен для считывания и записи; он может использоваться программным обеспечением для перевода в состояние ожидания отдельного порта;

  • биты 13-15 зарезервированы.

После аппаратного или глобального сброса оба регистра PORTSC содержат значение 0080 h: бит 7 имеет значение 1, остальные разряды сброшены. После сброса контроллера (HCRESET) могут быть установлены биты 1 и 3. В современных контроллерах после осуществления сброса бит 11 может иметь значение 1.

Запросы к устройствам USB.

Все устройства USB принимают запросы от хост-контроллера и отвечают на них через Основной канал сообщений. Запросы выполняются при помощи управляющих посылок.

Запрос и его параметры передаются устройству в Setup-пакете, структура которого показана в табл.3. Каждый Setup-пакет имеет размер 8 байт.

Таблица 3. Структура Setup-пакета.

Смещение

Мнемоника

Размер

Описание

0

bmRequestType

BYTE

Характеристики запроса: биты 0-4 — код получателя (0 — устройство, 1 — интерфейс, 2 — другой получатель; коды 4-31 зарезервированы); биты 5-6 — код типа запроса (0 — стандартный запрос, 1 — специфический запрос для данного класса, 2 — специфический запрос изготовителя, 3 — зарезервирован); бит 7 — направление передачи данных (0 — от хоста к устройству, 1 — от устройства к хосту)

1

bRequest

BYTE

Код запроса

2

wValue

WORD

Параметр запроса

4

wlndex

WORD

Индекс или смещение

6

wLength

WORD

Количество байтов, подлежащих передаче на стадии передачи данных

Поле кода запроса определяет тип запроса. В спецификации USB определены только коды стандартных запросов к устройству:

  • 0 — GET_STATUS (определить состояние устройства);

  • 1 — CLEAR_FEATURE (сбросить свойство);

  • 3 — SET_FEATURE (установить свойство);

  • 5 — SET_ADDRESS (установить адрес);

  • 6 — GET_DESCRIPTOR (получить дескриптор);

  • 7 — SET_DESCRIPTOR (загрузить дескриптор);

  • 8 — GET_CGNFIGURATION (получить код текущей конфигурации);

  • 9 — SET_CONFIGURATION (установить конфигурацию);

  • 10 — GET_INTERFACE (получить код интерфейса);

  • 11 — SET_INTERFACE (установить интерфейс);

  • 12 — SYNCH_FRAME (кадр синхронизации).

 

Значение параметров wValue, wIndex зависят от типа запроса. В запросах на прием или передачу дескрипторов параметр wValue содержит тип дескриптора в старшем байте и индекс дескриптора — в младшем. Каждому типу дескрипторов поставлен в соответствие определенный числовой код:

  • 1 (DEVICE) — дескриптор устройства;

  • 2 (CONFIGURATION) — дескриптор конфигурации;

  • 3 (STRING) — дескриптор строки;

  • 4 (INTERFACE) — дескриптор интерфейса;

  • 5 (ENDPOINT) — дескриптор конечной точки.

  Поле wIndex обычно используется для задания номера интерфейса или конечной точки. Если поле wIndex задает конечную точку, оно имеет следующий формат:

  • биты 0-3 — номер конечной точки;

  • биты 4-6 зарезервированы и должны содержать нули;

  • бит 7 — направление передачи конечной точки (0 — OUT, 1 — IN);

  • биты 8-15 зарезервированы и должны содержать нули.

 

Если поле wIndex задает номер интерфейса, то младший байт (биты 0-7) содержит номер интерфейса, а старший байт не используется (биты 8-15 зарезервированы и должны содержать нули).

Запрос Get Status позволяет определить состояние устройства, интерфейса или конечной точки. Запрос имеет следующие параметры:

  • поле bmRequestType уточняет запрос ( 10000000b - получить состояние устройства, 10000001b — получить состояние интерфейса, 10000010b — получить состояние конечной точки);

  • wValue = 0;

  • wlndex — ноль (если запрос обращен к устройству), номер интерфейса или конечной точки;

  • wLength = 2.

По запросу Get Status устройство возвращает 16-разрядное слово состояния, описывающее текущее состояние устройства, интерфейса или конечной точки. Разряды слова состояния устройства имеют следующее назначение:

  • бит 0 (Self Powered) — режим электропитания (0 — устройство получает питание от шины USB, 1 — от собственного источника энергии);

  • бит 1 (Remote Wakeup) — реакция на сигнал пробуждения от шины USB (0 — устройство игнорирует сигнал, 1 — устройство реагирует на сигнал);

  • биты 2-15 зарезервированы и должны содержать нули.

 

Слово состояния интерфейса зарезервировано и содержит нули во всех разрядах.

Разряды слова состояния конечной точки имеют следующее назначение:

  • бит 0 (Halt) — признак «зависания» конечной точки (0 конечная точка функционирует нормально, 1 — передача данных заблокирована);

  • биты 1-15 зарезервированы и должны содержать нули. Запрос Clear Feature используется для того, чтобы запретить свойство или состояние, указанное значением селектора свойств. Запрос имеет следующие параметры:

  • поле bmRequestType уточняет запрос (00000000b – запретить свойство устройства, 00000001b - запретить свойство интерфейса, 00000010b — запретить свойство конечной точки);

  • wValue — селектор свойств;

  • wlndex — ноль (если запрос обращен к устройству), номер интерфейса или конечной точки;

  • wLength = 0.

 

В спецификации USB 1.1 определены только два значения селектора свойств:

  • 0 (обозначение — ENDPOINT_HALT, получатель — конечная точка) — блокировка конечной точки;

  • 1 (обозначение — DEVICE_REMOTE_WAKEUP, получатель — устройство) — разрешить выполнение сигнала пробуждения.

 

Передача данных по запросу Clear Feature не производится. Сброс состояния ENDPOINT_HALT разблокирует конечную точку; сброс состояния DEVICE_REMOTE_WAKEUP лишает устройство способности реагировать на сигнал пробуждения.

Запрос Set Feature используется для того, чтобы разрешить свойство или состояние, указанное значением селектора свойств. Запрос - имеет следующие параметры:

  • поле bmRequestType уточняет запрос ( 00000000b — разрешить свойство устройства, 00000001b — разрешить свойство интерфейса , 00000010b — разрешить свойство конечной точки);

  • wValue — селектор свойства;

  • wIndex — ноль (если запрос обращен к устройству), номер интерфейса или конечной точки;

  • wLength = 0.

 

Передача данных по запросу Set Feature не производится. Установка состояния ENDPOINT_HALT блокирует конечную точку; установка состояния DEVICE_REMOTE_WAKEUP позволяет устройству реагировать на сигнал пробуждения.

Запрос Set Address позволяет присвоить устройству новое значение адреса на шине USB. Запрос имеет следующие параметры:

  • bmRequestType = 00000000b ;

  • wValue — адрес устройства;

  • wIndex = 0;

  • wLength = 0.

 

Передача данных при выполнении запроса Set Address не производится.

Запрос Get Descriptor позволяет получить дескриптор устройства, дескриптор конфигурации или дескриптор строки. Запрос имеет следующие параметры:

  • bmRequestType = 10000000b ;

  • wValue содержит тип дескриптора в старшем байте (DEVICE — дескриптор устройства, CONFIGURATION — дескриптор конфигурации, STRING— дескриптор строки) и индекс дескриптора в младшем байте (при запросе дескриптора устройства индекс имеет значение 0);

  • wIndex — ноль (для дескриптора устройства или конфигурации) или идентификатор языка (для дескриптора строки);

  • wLength — размер дескриптора в байтах.

По запросу Get Descriptor хаб передает хосту дескриптор, тип которого указан в запросе.

Запрос Set Descriptor позволяет дополнить существующий (или добавить новый) дескриптор устройства, конфигурации или строки. Запрос имеет следующие параметры:

  • bmRequestType = 00000000b ;

  • wValue — тип дескриптора и индекс дескриптора;

  • wIndex — ноль или идентификатор языка;

  • wLength — размер дескриптора в байтах.

В процессе выполнения запроса Set Descriptor хост передает периферийному устройству дескриптор, тип которого определяется параметрами запроса.

По запросу Get Configuration устройство выдает код своей текущей конфигурации. Запрос имеет следующие параметры:

  • bmRequestType = 10000000b ;

  • wValue = 0;

  • wIndex = 0;

  • wLength = 1.

При выполнении запроса Get Configuration от устройства к хосту передается один байт данных, содержащий код конфигурации устройства.

Запрос Set Configuration позволяет задать устройству новую конфигурацию. Запрос имеет следующие параметры:

  • bmRequestType = 00000000 b;

  • wValue — код конфигурации;

  • wIndex = 0;

  • wLength = 1;

  • передача данных не производится.

При выполнении запроса Set Configuration от хоста к устройству передается один байт данных, содержащий код конфигурации, которую требуется установить.

Запрос Get Interface позволяет получить код текущей настройки для указанного интерфейса. Запрос имеет следующие параметры:

  • bmRequestType = 10000001 b;

  • wValue = 0;

  • wIndex — номер интерфейса;

  • wLength = 1.

При выполнении запроса Get Interface от устройства к хосту передается один байт данных, содержащий код текущего варианта настройки интерфейса.

Запрос Set Interface позволяет задать новый вариант настройки для указанного интерфейса. Запрос имеет следующие параметры :

  • bmRequestType = 00000001 b;

  • wValue — код варианта настройки интерфейса;

  • wIndex — номер интерфейса;

  • wLength = 0.

Передача данных при выполнении запроса Set Interface не производится.

Запрос Synch Frame используется для задания номера кадра синхронизации. Запрос имеет следующие параметры:

  • bmRequestType = 10000010 b ;

  • wValue = 0;

  • wlndex — номер конечной точки;

  • wLength = 2.

С помощью запроса Set Interface хост передает заданной конечной точке, работающей в изохронном режиме, 16-разрядное слово данных, содержащее номер кадра, который конечная точка должна использовать для синхронизации передачи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]