Мезонинный адаптер USB 2.0

дипломная работа

2.3.1 Дескриптор устройства

Каждое USB устройство имеет один дескриптор устройства (согласно USB спецификации). Устройство должно определять класс устройства и подклассовые коды в дескрипторе интерфейса, а не в дескрипторе устройства.

Общее описание устройства показано в таблице 1.5. Данное описание дает представление о следующих параметрах:

спецификации USB (bcdUSB), поддерживаемой устройством;

классе (bDeviceClass, bDeviceSubClass), к которому относится устройство;

стандартизованном протоколе (bDeviceProtocol), используемом при работе;

производителе и продукте (idVendor, idProduct, bcdDevice).

Описание всегда имеет длину 18 байт. Поле bMaxPacketSize0 содержит информацию о контрольной точке и показывает максимально возможный размер пакета, передаваемого в фазе данных (в отличие от дополнительных точек, сведения о контрольной точке ограничены названным полем). Поле bNumConfiguration показывает количество конфигураций, поддерживаемых устройством (как минимум одна). Количество дескрипторов конфигурации соответствует заданному здесь числу. Информация в полях iManufacturer, iProduct, iSerialNumber не является обязательной, и если значения этих полей отличны от нуля, то содержат индекс строкового дескриптора, содержащего текстовую информацию соответственно о производителе, продукте и серийном номере устройства.

Формированием классов устройств и стандартизацией протоколов занимается организация USB-IF. Именно она определяет значения для полей bDeviceClass, bDeviceSubClass, bDeviceProtocol. Если поле bDeviceClass имеет значение 0FFh, то устройство относится к классу производителя, в таком случае набор поддерживаемых дополнительных требований определяется производителем (значение поля bDeviceSubClass может быть произвольным).

Когда значение поля bDeviceClass находится в диапазоне от 1 до 0FEh, это показывает, что устройство относится к некоторому стандартизованному классу и оно должно поддерживать определенный набор команд. В таком случае поля bDeviceSubClass и bDeviceProtocol дополняют предыдущее поле в соответствии с требованиями USB-IF.

Таблица 1.5

Дескриптор устройства

Offset

Поле

Размер

Значение

Описание

0

bLength

Byte

12h

Размер дескриптора в байтах

1

bDescriptorType

Byte

01h

Тип дескриптора, в данном случае DEVICE

2

bcdUSB

Word

xxxxh

Номер спецификации USB, поддерживаемой устройством, в двоично-десятичном виде

4

bDeviceClass

Byte

00h

Код класса (распределяется организацией USB-IF)

4

bDeviceSubClass

Byte

00h

Код подкласса (распределяется организацией USB-IF)

6

bDeviceProtocol

Byte

00h

Код протокола (распределяется организацией USB-IF)

7

bMaxPacketSize0

Byte

xxh

Максимальный размер пакета для контрольной точки. Допустимые значения: 8,16, 32, 64

8

idVendor

Word

xxxxh

Идентификационный код производителя (распределяется организацией USB-IF)

10

idProduct

Word

xxxxh

Идентификационный код продукта (распределяется организацией USB-IF)

12

bcdDevice

Word

xxxxh

Номер версии устройства в двоично- десятичном виде

14

iManufacturer

Byte

xxh

Индекс строки, описывающий производителя

15

iProduct

Byte

xxh

Индекс строки, описывающий продукт

16

iSerialNumber

Byte

xxh

Индекс строки, описывающей серийный номер устройства

17

bNumConfiguration

Byte

xxh

Количество конфигураций, поддерживаемых устройством

Если поле bDeviceClass имеет значение 0, то каждый интерфейс устройства имеет собственное описание класса и все имеющиеся интерфейсы работают независимо. Для этого случая поле bDeviceSubClass должно иметь значение 0.

Значения в поле bDeviceProtocol имеют смысл, похожий на смысл значений в поле bDeviceClass: 0 - описание протокола будет задано в описании интерфейса, 1…0FEh - протокол стандартизован организацией USB-IF, 0FFh - протокол определяет производитель.

Делись добром ;)