I'm trying to connect a few devices on an I2C bus - primarily a GNSS module and a microcontroller. The microcontroller is the bus controller and must run on 3.3V, while the GNSS module internally uses 2.8V logic. How can I shift this 0.5V differential between 2.8 and 3.3V with an level shifting IC?

I figured this was exactly what I2C buffers are made for. There are circuits to level-shift I2C busses using discrete transistors, but I'd like a convenient VSSOP package, an enable pin, and a known-good configuration. The classic IC for this seems to be the PCA9306, available from NXP, Texas Instruments, OnSemi, and probably others.

Unfortunately, they don't seem to be designed for 2.8 to 3.3V shifting: Both NXP and On Semi warn (using the exact same language and similar diagrams; looks rather a lot like plagarism guys...) that:

In the Enabled mode, the applied enable voltage and the applied voltage at Vref(1) should be such that Vbias(ref)(2) is at least 1 V higher than Vref(1) for best translator operation.

TI has a more reasonable value for the MOSFET thevenin voltage:

VREF2 Reference voltage [Minumum:] VREF1 + 0.6V
EN pin high logic must not exceed Vref2 + Vth (0.6V)

but they also state (page 12, section 8.1.5):

PCA9306 has the capability of being used with its VREF1 voltage equal to VREF2

How can I make this work? I'm happy to drive the EN pin with a 3.3V GPIO (there's already one that does this), but how does this work around the minimum voltage requirement?

  • 1
    \$\begingroup\$ I can't find such a limitation for PCA9617A. \$\endgroup\$
    – asdfex
    Commented Nov 12, 2021 at 18:01
  • \$\begingroup\$ What's the part number for the GNSS module? 3v3 and 2v8 aren't that far away - you might get lucky with the absolute max ratings on the sense that they might permit 3v3 \$\endgroup\$
    – raaymaan
    Commented Nov 12, 2021 at 18:02
  • \$\begingroup\$ I2C signals are pulled up. Can you use just 2.8V? What is the Vin (H/L) & Vout(L) spec. of the devices on both side of the nodes? \$\endgroup\$
    – jay
    Commented Nov 12, 2021 at 18:02
  • \$\begingroup\$ It seems all your troubles are related to your desire to use EN control. However if you manipulate EN during transmission you will disrupt the data. And switching it between the transmissions does not bring you any benefits, while complicating the software. So, my advice would be to use any voltage translator available, whether it is made of discrete components or dedicated permanently enabled chip. \$\endgroup\$
    – Maple
    Commented Nov 12, 2021 at 20:40
  • \$\begingroup\$ @raaymaan - It's a Quectel L96. I asked this question of Quectel support, and they explicitly cautioned me against using 3.3V. \$\endgroup\$
    – johannes
    Commented Nov 12, 2021 at 20:46

2 Answers 2


NXP's application note AN10441: Level shifting techniques in I²C-bus design suggests to use simple MOSFETs for level shifting:

AN10441 I2C level shifter

Please note that the gate voltage must be the lower voltage.

The PCA9306 consists of nothing more than three MOSFETs. The third MOSFET allows to raise the gate voltage slightly above the lower supply in order to speed up switching (see TI's application note Voltage-Level Translation With the LSF Family), but that is not necessary for a slow protocol like I²C.

When you connect EN to the 2.8 V supply, you have the same circuit as in AN10441. (The VREF1/VREF2 connections do not matter in this case; you can leave them open.)


I'm using a P82B96 which is an "open collector" equivalent redriver with 2-15V tolerant inputs interface 3.3 and 2.8V devices and it works very well.

  • \$\begingroup\$ Thanks, it looks like I may have to use something like this (or the PCA9617A that adsfex recommended) instead of the 'classic' PCA9306. The datasheet for that bipolar P82B96 warns of up to 3 mA(!) of quiescent loading, which is huge - are you using it in a battery powered device? The CMOS PCA9617 and PCA9306 have supply currents nearly 1,000 times less, just 10 uA... \$\endgroup\$
    – johannes
    Commented Nov 12, 2021 at 21:05
  • \$\begingroup\$ We're using it in a kW-class power supply so we've got current to spare. Hopefully the 9617 works for you! \$\endgroup\$
    – vir
    Commented Nov 12, 2021 at 22:45

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.