I'm looking for a bi-directional level shifter circuit to interface a 3.3V controller to a 1.8V component which is not 3.3V tolerant. Usually I'm using the well-known level shifter circuit, e.g., https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide. This circuit will output a high logic-level on either end unless one end is pulled low which causes the other end to go low as well. This works well for bus-systems such as I2C or One-Wire where the bus wires are usually pulled to Vcc using resistors.

However, I now have to interface with a bus-system (MIPI RFFE) that uses pull-down resistors to set the bus lines to GND level unless a bus device pulls it to Vcc. The bi-directional level-shifter circuit does not work in these cases (at least not bi-directional, I was able to hack something for devices that only require writing). Otherwise the bus is very similar to I2C.

Can anyone point me to a circuit that implements a bi-directional level shifter that outputs a LOW-signal unless one end is actively driven HIGH?

Addition 1: Regarding the comments using P-Channel MOSFETS and Pull-Down Resistors.

Wouldn't that cause the loss of the level-shifting capability of the circuit. As far as I understood the pull-up based level shifter the Pull-Up resistors cause a High potential on either end and the transistor to be "closed". Now, when one end pulls the line low, the transistor will open in any case connecting both ends and hence, pulling the other side low as well. I guess the reason that this works is that LOW potential is the same for both sides of the circuit.

My guess is that when I use a P-Channel MOSFET with pull-down resistors, whatever HIGH-potential is applied to one end will also appear on the other end which goes against the level-shifting requirement. Or am I missing something here?

  • \$\begingroup\$ Can you just flip the polarity of everything over? PMOS instead of NMOS? \$\endgroup\$ Mar 30, 2015 at 18:15
  • \$\begingroup\$ so instead of an n-channel mosfet with pull-ups, I think you'd want a p-channel mosfet with pulldowns. \$\endgroup\$
    – Octopus
    Mar 30, 2015 at 18:16
  • \$\begingroup\$ Thanks for your input. I updated the question with my thoughts on that. \$\endgroup\$
    – jan
    Mar 31, 2015 at 12:06

1 Answer 1


This part from TI might be functional in your application:


  • \$\begingroup\$ Yes, that is what I would do. I believe TI makes other bi-directional level shifters as well. \$\endgroup\$
    – user57037
    Apr 2, 2015 at 6:42
  • \$\begingroup\$ Accepting this answer as there does not seem to be a simple way to build a comparably simple discrete circuit. I just used two digital I/Os of my microcontroller, one for writing (puts a 1.8V reference on the bus with a PNP controlled by the µC) and one for reading (puts a 3.3V reference on the input pin controlled by the bus). But of course, this is not really a bus level-shifter anymore. I'll try this part if I run into a similar problem again. \$\endgroup\$
    – jan
    Apr 8, 2015 at 16:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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