USB 2.0 supports device communications on three speed levels:
- low speed: 1.5 Megabits (800 bytes/sec)
- full speed: 12 Megabits (1.2 MB/sec )
- high speed: 480 Megabits (53 MB/sec)
Single bus is shared between all devices so host controller schedules transactions consequently for needed devices within one frame.
USB hubs can pass received traffic (1.x version) or convert the speed level of traffic (2.0 version hub).
There are four transfer types which consist of one or more transactions:
- Control (mandatory, for setup and enumeration)
- Interrupt (typically for HID like devices, sensors, etc)
- Bulk (plain data transfers)
- Isochronous (fixed transfer rate, streaming)
Each transfer is scheduled by the host and is addressed using:
- direction code (IN, OUT, SETUP)
- device id (USB device ID)
- endpoint id.
Endpoints are logical addresses of device memory buffers (0-15).
IN direction code means data goes from device to host.
OUT means data travels to device.
SETUP transaction is initiated by host and is mandatory for all devices.
The perfect reference that can help me is USB Complete by Jan Axelson