Difference between revisions of "USB"

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

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

Device Descriptors

Configuration Descriptors

Configuration Descriptor.png

Interface Descriptors

Endpoint Descriptors

String Descriptors

Miscellaneous Links