When connecting devices with different USB versions, the data transfer rate will be limited by the slowest of the connected devices. This means that data transfer will occur at 12 Mbps when you connect a USB 2.0 device to a USB 1.1 device, even though the USB 2.0 device is capable of transferring data at 480 Mbps.
When a USB device is connected to a host, the speed of the device needs to be detected. This is done with pull-up
resistors on the D+ or D- line. A 1.5-kΩ pull-up on the D+ line indicates that the attached device is a Full-Speed
device. A 1.5-kΩ pull-up resistor on the D- line indicates the attached device is a Low-Speed device. This can be
seen in below figure.
High-Speed devices start as Full-Speed devices, so they have a 1.5-kΩ pull-up on the D+ line. When the device is
connected, it emits a sequence of J-States and K-States during the reset phase of enumeration. If the hub supports
High-Speed, then the pull-up resistor is removed.
The pull-up resistor is essential to USB enumeration. Without the pull-up resistor, USB assumes that there is nothing
attached to the bus. Some devices require an external pull-up resistor on the D+/D- line. PSoC, however, implements
the required pull-up resistor internal to the device, which eliminates the need for this external component.
One common misconception about speed on a USB device is that a device listed as USB 2.0 indicates that the
device is High-Speed. All Hi-Speed devices are USB 2.0, but this is because Hi-Speed support was added with USB
2.0. The USB 2.0 specification includes Full- and Low-Speed devices as well.
These speeds also have an effect on the bit timing for USB signaling, such as the End of Packet (EOP) signal. A
Low-Speed and Full-Speed USB device will use a 48-MHz clock for the SIE and the other USB clocking purposes.
This 48-MHz clock and the bus speed is what will determine USB bit times:
Full-Speed: 48 MHz / 12 Mb/s = 4 clocks per bit time.
Low-Speed: 48 MHz / 1.5 Mb/s = 32 clocks per bit time.