0
\$\begingroup\$

What is the negotiation sequence of a Low Speed (USB 1.0) Host connected to a High Speed (USB 2.0 Device) ? On connection the Device pulls up the D+. If this was HS/FS the Host would pull the D+ down - transmit SE0, followed by the device K chirp. But in this case the LS Host is waiting for a D- pull up connection event ?

\$\endgroup\$
  • 1
    \$\begingroup\$ Are you implying that the host is not full-speed capable? \$\endgroup\$ – CL. Mar 30 '16 at 9:08
  • 1
    \$\begingroup\$ Is there such a thing in existence as a Low-Speed (1.5Mbps) Host? I thought that even in the original 1.0 spec a host supports Full-Speed (12Mbps). \$\endgroup\$ – brhans Mar 30 '16 at 11:18
  • \$\begingroup\$ Thx, This is probably the piece I was missing. If I understand now correctly only the device can force LS, the host has to support FS. \$\endgroup\$ – Meir Mar 30 '16 at 14:06
1
\$\begingroup\$

Low speed (1.5 Mbps) devices can attach to any USB host (1.0, 1.1, 2.0 or 3.0). The low speed device initiates communication by pulling D- to 3 volts via 1500 ohm resistor. Any version USB host will be immediately able to communicate with the device at 1.5Mbps, e.g. ask for device descriptor, set address etc. Full and high speed devices use D+ for the same purpose.

I'd be surprised if there is a low-speed-only USB host commercially available. But if you are making the USB host yourself, and you only need to support low speed devices, such as an old keyboard or mouse, then you don't need to implement full speed. You don't need anything that is not necessary for your application as you have complete control on how you want to communicate with the device (except the speed). And by making the host yourself, I mean that you are not using a ready-made USB hardware. Perhaps you are using discrete logic or even bit-banging it on a microcontroller (there are known software implementations that bit-bang 1.5 Mbps USB).

With discrete logic, CPLD etc, it's not that complex. At core level, USB is remarkably simple. As an example, here's logic of how to do a USB receiver with just 15 flip-flops. I once did it because I was bored one summer day in 2014. It snoops USB data and converts it to SPI output so it can be snooped with a microcontroller with an SPI input.

USB receiver with 15 flip flops

Obviously, if a full speed or high speed device is connected to your low-speed-only host, your host will not be able to initiate communication with those devices. But if you're only going to attach low speed devices, then you don't need full speed. You can still detect the DP pull-up of full/high speed device and display a message that the device is not supported.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.