主機是通過(guò)標準的USB請求命令中的GET_DESCRIPTOR獲得一個(gè)USB設備屬性的描述符的。關(guān)于Descriptor即描述符,是一個(gè)完整的數據結構,可以通過(guò)C語(yǔ)言等編程實(shí)現,并存儲在USB設備中,用于描述一個(gè)USB設備的所有屬性。它的作用就是通過(guò)響應主機的請求命令操作來(lái)給主機傳遞信息,從而讓主機知道設備具有什么功能、屬于哪一類(lèi)設備、要占用多少帶寬、使用哪類(lèi)傳輸方式及數據量的大小,只有主機確定了這些信息,并為設備分配資源后,設備才能真正開(kāi)始工作。標準的描述符有5種,USB為這些描述符定義了編號:
1——設備描述符
2——配置描述符
3——字符描述符
4——接口描述符
5——端點(diǎn)描述符
一個(gè)設備只有一個(gè)設備描述符,而一個(gè)設備描述符可以包含多個(gè)配置描述符,而一個(gè)配置描述符可以包含多個(gè)接口描述符,一個(gè)接口使用了幾個(gè)端點(diǎn),就有幾個(gè)端點(diǎn)描述符。這些描述符是用一定的字段構成的,分別如下說(shuō)明:
1.設備描述符
struct_DEVICE_DEscriptOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
WORD bcdUSB;
BYTE bDeviceClass;
BYTE bDeviceSubClass;
BYTE bDeviceProtocl;
BYTE bMaxPacketSize0;
WORD idVendor;
WORD idProduct;
WORD bcdDevice;
BYTE iManufacturer;
BYTE iProduct;
BYTE iSeialNumber;
BYTE bNumConfiguration;
}
2.配置描述符
struct_CONFIGURATION_DEscriptOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
WORD wTotalLength;
BYTE bNumlnterface;
BYTE bConfigurationValue;
BYTE iConfiguration:
BYTE bmAttribute;
BYTE MaxPower;
}
3.字符描述符
struct_STRING_DEscriptOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
BYTE SomeDes criptor[36];
}
4.接口描述符
struct_INTERFACE_DEscriptOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
BYTE bInterfaceNumber;
BYTE bAlternateSetting;
BYTE bNumEndpoints:
BYTE bInterfaceSubClass;
BYTE bInterfaceProtocol;
BYTE iInterface;
}
5.端點(diǎn)描述符
struct_ENDPOINT_DescriptOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
BYTE bEndpointAddress;
BYTE bmAttribute;
WORD wMaxPacketSize;
BYTE bInterval;
}
聯(lián)系客服