USB
Universal Serial Bus (USB) is a standard for connecting computer peripheral devices to hosts.
Contents |
USB Speeds
Low Speed
Low Speed USB is designed to work at 1.5Mbps (666ns per bit) or 1/8 the speed of Full-Speed USB. It is intended primarily for low-speed Human-Computer Interface devices such as keyboards, mice and game controllers.
Software Implementations
Several software implementations of the low-speed USB standard include:
- V-USB for Atmel AVR microcontrollers
- USBtiny for Atmel AVR
- 16FUSB for Microchip PIC16F family microcontrollers
Full Speed
High Speed
USB 2.0 (local copy) is a specification of USB for operation at High Speed 480Mbps. There are a number of USB2.0 Interface devices available.
In High-Speed USB, there are 8 "microframes" per standard USB frame (one microframe every 125usec). High-Speed also allows data transfers up to 1024bytes per packet. According to section 5.9 of the Universal Serial Bus Specification Revision 2.0 (USB2.0) High-Speed High Bandwidth endpoints are allowed up to 3 packets per microframe, which limits the per-endpoint data rate to 192Mbps (24MByte/sec), less than half the raw maximum of 60MBytes/sec. As each endpoint is either an IN or and OUT, this means that we could get up to 48MByte/sec full-duplex.
Software Stacks
- LUFA (Light-weight USB Framework for AVRs) (LUFA at Four Walled Cubicle)
- AVR4900: ASF - USB Device stack Application note from Atmel
HDL Implementations
- USB FPGA Development Boards at MyHDL.org.
USB Classes
To simplify support for USB in various operating systems (O/Ss), USB divides devices into "classes". Common classes are:
- Communications Device Class (class ID 0x02) (include USB Network interfaces, such as usbnet)
- Human Interface Device Class (class ID 0x03)
- USB Mass Storage Class (class ID 0x08)
- USB Hub Class (class ID 0x09)
- USB Vendor Class (class ID 0xFF)
Descriptors
- USBDescriptorKitchen A USB Descriptor creation and maintainance tool, written in Python and wxWidgets
- ZTEX EZ-USB FX2 SDK primarily for ZTEK USB-FPGA boards or any other using FX2 chip
USB Devices
Some USB devices are listed here.
Parts
Connectors
Micro USB Type A/B Receptacle
The USB-IF define the Micro USB Type A/B Receptacle in their documentation: Micro-USB_1_01.pdf (local copy).
Several manufacturers make compliant receptacles, including FCI as Micro USB A/B Type Receptacle, available from X-ON as FCI p/n 10104111-0001LF (drawing: local copy).
The GEDA symbol file for it is available in my SVN repository and the outline at:
Filters
- STMicroelectronics USBUF02W6 SOT323-6L EMI Filter and Line Termination for USB Upstream Ports (RS-Online p/n 250-656)
Transceivers
- Philips PDIUSBP11A Universal Serial Bus Transceiver
- Cypress CY7C68003 USB 2.0 UTMI + Low Pin Interface (ULPI) Transceiver
Device Controllers
Debug/Development
- Facedancer11 from the GoodFET project
External links
- USB website
- USB Developer Documentation
- USB on Wikipedia
- evTest - open source tool that can be used for testing the USB HID class drivers
- USB capture setup for Wireshark
- USB Central by Jan Axelson
- USB Developers FAQ by Jan Axelson
- Linux based USB Devices from EETimes, 2002
- USB in a NutShell from Beyond Logic
- USB/IP project
- USB Designer Links (quite old)
- https://linux.m2osw.com/usb-over-ip-add-usb-devices-over-your-ip-network USB over IP to add USB devices over your IP network