Difference between revisions of "USB"
Jump to navigation
Jump to search
Line 18: | Line 18: | ||
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. | 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: | ||
+ | |||
+ | {| class=wikitable | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Field | ||
+ | ! Size | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 | ||
+ | | bLength | ||
+ | | 1 | ||
+ | | Number | ||
+ | | Size of the complete descriptor in bytes | ||
+ | |} | ||
=== Device Descriptors === | === Device Descriptors === |
Revision as of 05:51, 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 |