Difference between revisions of "USB"
Jump to navigation
Jump to search
Line 34: | Line 34: | ||
| Number | | Number | ||
| Size of the complete descriptor in bytes | | Size of the complete descriptor in bytes | ||
+ | |- | ||
+ | | 1 | ||
+ | | bDescriptorType | ||
+ | | 1 | ||
+ | | Constant | ||
+ | | Descriptor type | ||
+ | |- | ||
+ | | 2 | ||
+ | | ... | ||
+ | | n | ||
+ | | | ||
+ | | Descriptor parameters | ||
|} | |} | ||
Revision as of 05:53, 31 August 2021
Speed
Descriptors
One of the most complex things when developing USB is the descriptors. Descriptors are used by a USB Gadgets to inform the USB Host about it's capabilities.
Overall, USB Descriptors is a hierarchy of descriptors organised like this:
A USB device (or gadget) can only have one device descriptor.
When a USB host enumerates a USB device, the device and configuration descriptors are analysed and one configuration is enabled. Only one configuration can be active at any time.
While it _is_ possible for a host to switch configuration on a device offering more than one, it is very rare for devices to offer more than one configuration.
All descriptors, device, configuration or interface, follow the same common format:
Offset | Field | Size | Value | Description |
---|---|---|---|---|
0 | bLength | 1 | Number | Size of the complete descriptor in bytes |
1 | bDescriptorType | 1 | Constant | Descriptor type |
2 | ... | n | Descriptor parameters |