USB 1.1 : In this specification data transfer rate is 12Mbps and 1.5Mbps.
USB 2.0 : Support data transfer rate up to 480Mbps.
Both these specifications support up to 127 devices and support for hot swapping (no need to power down to remove or connect the devices). In USB devices are categorized as a classes and each class represent the functionality that target device can provided to the host device. For example:
AUDIO : Audio and related systems
HID : Human Interface Devices. (E.g: Keyboard, Mouse, etc)
POWER: Devices related with the power such as UPS systems.
IrDA: Infrared devices.
There are 4 types of transfers take place over USB,
Control transfer : Used to configure the bus and devices on the bus.
Bulk transfer : Move data asynchronously over USB.
Isochronous transfer: Transfer time critical data and support for unidirectional transfers only.
Interrupt transfer: Used to retrieve data in regular intervals. (Generally from 1 to 255ms)
In a USB architecture data is transferred using packets and each packet contains synchronization byte, Packet ID (PID), contents and CRC (Cyclic redundancy check data) There are 4 packet types available in USB and they are,
Token Packets : 24bit packet that determine the type of a transfer that is take place over the bus.
Data Packet : Can transfer between 0 to 1023 bytes and also have 16bit CRC stage.
Handshaking Packet : Which is used to acknowledge the end to end data transfer.
Descriptor : Contain the device capabilities such as product identifier, manufacture code, class type, internal configuration, etc.
USB devices uses shielded four wires, cable to interconnect the devices. Data transfer is take place at D+ and D- (similar to RS422/485 specification) and other remaining 2 wires carrying power (+5V and 0V) to the device. D+ signal has a 15K pull-down resistor to the ground and D- has a 1.5K pull-up resistor to +3.6V power line.
In embedded systems there mainly two methods to implement USB interfaces,
Using standard bus interface: Most recommended devices are FT245, FT232 and USS820.
Using USB to SPI bridge: Most recommended device is ATMEL AT76C711 AVR microcontroller.
When designing embedded systems using USB we need to take special care about,
Noise : To prevent external noises designer need to add ferrite bead to the USB cable. Generally the value of the ferrite bead is depends on the total current required by the circuit.
Power Source : Need to provide well regulated power source to the device. Generally we use 7805 regulator to provide +5V to the USB interface and LM1086-3.3 to provide +3.3V power source to the system/device.
Double check the power lines (especially if you are working with FT245, FT232 and USS820 devices) and voltage ratings. Improper power connections and voltage levels may burn the chips and ports instantly.