PORTS Forum
Ports and Interfaces => USB => Topic started by: gknight on February 19, 2014, 11:44:38 pm
-
Connecting an A/D (2.0 high speed) to a PC running Win7.
Need galvanic isolation on USB. Simple (dumb) isolators are limited to full speed.
Want to run A/D at full speed.
How to make sure or force the host to run at full speed?
I don't believe USB falls back from high to full based on error rates.
-
Use a USB 1.1 hub.
-
I am designing a circuit board and want do this without adding extra hardware, if possible.
-
I don't know of any other way to do it. You could embed the hub on the PC board if you can find a 1.1 hub controller anymore. Or use a full-speed-only device controller.
-
The default behavior for USB is for the host (upstream side) to connect all devices (downstream side) at the maximum speed the device will allow, with no regard for what speed you may actually want to use. IOW, the default connection speed is determined by the device, not by the host or by what you may want to happen.
However, if you have older hardware, which has both high-speed (EHCI) controller(s) and full/low-speed (OHCI or UHCI) companion controller(s), it is possible to "shut down" a specific EHCI root hub port. This will force all of the devices attached to that port over to the full/low speed controller. This is something that specification-compliant hardware allows, but I don't think Windows supports the use of this feature (some other OS's might). You should also be able to disable/unload the EHCI driver, which will effectively force ALL of the ports off of the EHCI controller and onto the companion controller(s) (never actually tried it myself, but it should work).
Remember, though, that this will only work if you have older hardware which uses OHCI or UHCI companion controllers. Newer hardware generally doesn't work that way any more, so you MUST use a device that will only connect at the speed you want it to. Inserting a USB 1 hub upstream of a device is an indirect way of ensuring it cannot connect at high-speed.
-
Thanks Jan and Bret. USB hub ICs with full-speed max are still availible. It seems a shame that becuase there are no high-speed isolator ICs availble I'll have to add a hub.
-
The other option is to do the "work" on a non-USB chip, then use an isolated, non-USB interface to connect to a USB controller. For example, an isolated aysync. serial link to an FTDI FTxxx USB UART.
-
Hmm, seems like I would need two back-to-back FTDI chips with USB on the oustide and async in the middle?
-
No. Here is an example:
Any generic microcontroller with A/D and async I/0
(async I/0 connection)
isolation circuits
(async I/0 connection)
FTDI FTxxx USB UART
(USB connection)
PC
-
OK, but the A/D device is a given...commercial product - USB 2.0 with High Speed.
-
I suppose, if there was some kind of back-2-back FTDI solution, a hub IC would be simpler and cheaper.
-
No ones done this, as no one's had a reasonable reason to do this. If you wanted to make such a thing what you need to do is stop the device "chirp" propagating upstream. When the host resets the device, the device signals high speed capability by raising D-. Everything follows from that.
If you wanted to stop a device enumerating at high speed, you'd need to allow bidirectional communication until there's a reset from the host. SE0 for more than 2.5µs, then cut off the D- line to stop the chirp getting to the host. When the SE0 is removed, you'd need to reestablish bidirectional communication.
It'd probably a lot easier and cheaper just to put a 1.1 hub in the way.
-
Time for a hub. Micrel (formely SMSC) has a hub that can be "eeprom strapped" to full speed.
Thanks All. This is a cool place!
-
Analog Devices USB isolators, ADuM3160/4160, don’t pass HS chirp just after bus reset. And then, a HS-capable device is recognized as FS device, when it is directly connected to host over these isolators.
That is, you don’t need any USB 1.1 hub.
Tsuneo
-
This is great! Thanks, Tsuneo!