When Your Level Shifter Is Too Smart To Function

Logic analyzer capture, showing the rails constantly oscillating at a high rate

By now, 3.3V has become a comfortable and common logic level for basically anything you might be hacking. However, sometimes, you still need to interface your GPIOs with devices that are 5 V, 1.8 V, or something even less common like 2.5 V. At this point, you might stumble upon autosensing level shifters, like the TXB010x series Texas Instruments produces, and decide that they’re perfect — no need to worry about pin direction or bother with pullups. Just wire up your GPIOs and the two voltage rails you’re good to go. [Joshua0] warns us, however, that not everything is hunky dory in the automagic shifting world.

During board bring-up and multimeter probing, he found that the 1.8 V-shifted RESET signal went down to 1.0V — and its 3.3 V counterpart stayed at 2.6V. Was it a current fight between GPIOs? A faulty connection? Voltage rail instability? It got more confusing as the debugging session uncovered the shifting operating normally as soon as the test points involved were probed with the multimeter in a certain order. After re-reading the datasheet and spotting a note about reflection sensitivity, [Joshua0] realized he should try and probe the signals with a high-speed logic analyzer instead.

At a high enough frequency, he’s found the signals constantly oscillating back and forth, as the shifter’s autosensing mechanism was being fooled into switching by the signal reflections at a fast enough rate to confuse the multimeter into reading the signals as being at an in-between voltage. It turns out that even with signals that are meant to change only once in a board’s bootup, these shifters might give you more trouble than they’re worth. Not to worry, however, as you still have myriad ways to level shift any signal you want.

9 thoughts on “When Your Level Shifter Is Too Smart To Function

  1. Usually the tolerances are wide enough that it doesn’t really matter. Maybe it would cause problems with some finicky and sensitive circuits, but most of the time things will still recognize the logic levels. I’ve gotten away with simply not using a level shifter because the tolerance for my application was wide enough… A sloppy solution, but workable if you’re doing a quick and dirty one-off and not something that will go into production

    1. I dont understand why you’d not fix this properly given that there are probably other complexities in your circuits? Are you not always going to be thinking in the back of your mind when debugging “I wonder if it’s the logic level issue”? I’m genuinely curious why people do this sort of thing.

      1. You ask a question based on the unproven assertion of an improper fix. First you must prove that omitting level shifters is an “improper fix”.
        A 5V tolerant 3V3 MCU communicating with a 5V device that requires 2.6V minimum input voltage does not need any level shifting.

  2. I had this problem at work. I think it might even have been the same part. Two of these connected to each other (with some wire connected for my lab prototype) made a perfect 50 MHz radio transmitter =) Supposedly, there is another part from the same family that can be used for this kind of connection, which won’t oscillate.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.