App note: Electrically isolating a USB device from the host

Posted on Saturday, January 14th, 2012 in app notes by DP

The Analog Devices ADUM4160 isolates and protects a computer from shorts, high voltage, or high currents in a USB device. The isolator chip sits on the D+ and D- data lines between the USB jack and the microcontroller on the USB peripheral. Unfortunately it doesn’t come cheap at more than $5, but it could save your USB port from an errant 180 volt supply when developing that USB Nixie tube Sudoku board.

Many microcontrollers implement USB so that it presents only the D+ and D− lines to external pins. This is desirable in many cases because it minimizes external components and simplifies the design; however, this presents particular challenges when isolation is required. USB lines must automatically switch between actively driving D+/D−, receiving data, and allowing external resistors to set the idle state of the bus. The ADuM4160 provides mechanisms for detecting the direction of data flow and control over the state of the output buffers. Data direction is determined on a packet-by-packet basis.

This entry was posted on Saturday, January 14th, 2012 at 7:00 pm and is filed under app notes. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

13 Responses to “App note: Electrically isolating a USB device from the host”

  1. Alex says:

    Hmm, interesting. It seems to me though, that in many applications it would be easier to have two microcontrollers though, one on each side of the isolation, and that way you could just do simpler isolation of a SPI signal or similar.

  2. fcobcn says:

    For people intrested in using this IC, take a look a usbisolator project.

  3. Dan says:

    Why not just use two optocoupler chips in parallel?

    • Marvin S. says:

      You would have to implement data direction detection yourself.

      • Dan says:

        If the couplers are in parallel, they are bi directional. Each side has both an LED and a phototransistor.

      • Marvin S. says:

        That’s all nice, but this will not help you. Without detection of the data direction you only have the choice to connect the transmitting optocouplers to the data lines and thus you could not receive anything from the host. This is the reason for this IC. If, of course, you do have an external way to detect the data direction, for example with an appropriate controller, you can of course transmit this signal, too and then switch the transmitting isolator on or off.

      • Tony says:

        The optocouplers wouldn’t work fast enough for usb. This chip and other high speed isolators use transformers.
        Impedance, capacitance issues.
        High voltages would destroy the optocouplers.
        Transmitting opto would still require single-ended to differential conversion.

      • Marvin S. says:

        This works because they are not isolating USB, but the asynchronous serial data lines after the USB controller. You can easily see this: First comes the usb connector, then the ft232 usb uart and then the isolators.

      • Dan says:

        I didn’t even think about that..! Thanks :-)

  4. Gridstop says:

    I suppose if you’re just using the USB for serial, it might make more sense to just go USB-FT232-ISO-uC, but if you’re doing any other kind of protocols (HID, keyboard/mouse, storage) this makes a lot of sense if you need isolation.

    And you could probably build a add-on board with USB connectors in & out, to use with something like the bus pirate or logic sniffer.

  5. Drone says:

    These Analog Devices ADUM4160 iCoupler devices are around ten bucks a-pop! They provide galvanic (transformer) isolation. Nice chip – painful price.

  6. I know everybody might hate on them, but I don’t even think they seem so unhealthy.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments

  • Craig B: Shouldn't the default be 00xxx010? Note that bit 0 appears out of order in the documentation. In that case I think the initial value is...
  • JJM: From the datasheet extract you are showing, the power up status should be 00xxx010, not 000xxx01. Bit numbering is misleading since 'measurement resolution' is apparently...
  • Jan Ciger (@janoc200): Hmm, that could actually explain why the three sensor IMU breakout I have bought a few years ago had all sorts of issues - I...
  • Travis: Is it preset to the windows 3 fingered salute?
  • Glenn: What a cool idea !