Difference between revisions of "USB"

From Stm32World Wiki
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 06: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:

USB Descriptor Hierarchy.png

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

Device Descriptors

Configuration Descriptors

Configuration Descriptor.png

Interface Descriptors

Endpoint Descriptors

String Descriptors

Miscellaneous Links