Author Topic: I2C level shifter for a breakout board  (Read 5095 times)

0 Members and 1 Guest are viewing this topic.

Offline Richard_LTopic starter

  • Contributor
  • Posts: 12
I2C level shifter for a breakout board
« on: March 10, 2014, 04:45:47 pm »
Hello all,

I'm looking to create a breakout board for a 3V3-only I2C sensor. I'd like to be able to use the sensor with both 5V and 3V3 microcontrollers and have been reading the Philips app note AN97055 www.adafruit.com/datasheets/an97055.pdf? (warning, pdf) which details a bi-directional MOSFET-based level shifting circuit.

The circuit as given in the data sheet is below, with the pull-up resistors on each side of the level shifting MOSFETs connected to different supplies.



Now in order to use the circuit on a breakout board and allow use with either 5V or 3V3 micros, would the following be correct? - The principal deviation from the app note being that all pull-up resistors are permanently tied to 3V3 regardless of whether the "high-side" logic levels are indeed higher at 5V or the same at 3V3. (The headers on the breakout board are the breaks & text in the green outline on the right hand side of the diagram.)



Please excuse the melding of circuit diagram and block diagram, I'm still in the planning stage for this project and haven't fired up KICAD yet,

thanks,
Richard
 

Offline linux-works

  • Super Contributor
  • ***
  • Posts: 2076
  • Country: us
    • netstuff
Re: I2C level shifter for a breakout board
« Reply #1 on: March 10, 2014, 10:11:44 pm »
that won't work (well).  it might work but its not correct.

I built one using that schematic (funny proto shown here):



its ok to laugh.  it makes me laugh and I built the damned thing ;)

all I had on hand was the tiny smd mosfets and so I did the best I could to hand/air wire them.

but anyway, you have to tie the pullups to the LOCAL Vcc, be it 5v on one side or 3.3 on the other.

the general idea is that it sits at the 'right' high level and gets pulled down on 0's.  a zero is a zero to all logic (more or less) but a high could be 5v or 3v.

so its best to not try to redefine what 'high' is for the A or B side or your circuit.

(btw, this build of mine certainly redefines what it means to use GLUE LOGIC.  hahahaha) ;)

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30308
  • Country: nl
    • NCT Developments
Re: I2C level shifter for a breakout board
« Reply #2 on: March 10, 2014, 11:36:04 pm »
I'd use a chip made for this purpose. Much easier.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->