USB

From Stm32World Wiki
Revision as of 05:53, 31 August 2021 by Lth (talk | contribs) (→‎Descriptors)
Jump to navigation Jump to search


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