i2c with different pull ups

Discussion in 'The Projects Forum' started by skybox, Aug 25, 2010.

  1. skybox

    Thread Starter Active Member

    Mar 2, 2009
    Hi guys,

    I have a microprocessor that I want to interface with another device via I2c. The PCB board with the microprocessor is using using 10k pullups on a 3.3V line on the i2c bus while the device I am interfacing with also has 10k pullups connected to 5V. My question is, would this even work? The device I am interfacing with has a uP running off of 5V. Even if I removed the 10k pullups connected to the 5V supply on the other device, would a uP running off of 5V think of a 3.3V input signal as "high"?

    Any suggestions would be apprecicated.

  2. mik3

    Senior Member

    Feb 4, 2008
    Remove the pull up resistors on the 5V side.
  3. skybox

    Thread Starter Active Member

    Mar 2, 2009

    Ive tried this and it is not working. I think I will need to use a level shifter of some sort to translate my 3.3V logic into 5V logic that the other device is expecting, even with the 5V pullups removed.
  4. Papabravo


    Feb 24, 2006
    Be careful. If the I2C were unidirectional then a level shifter might be a possible solution. Since SDA is bidirectional you will need a level shifting transceiver AND logic to implement the bus turnaround for the ACK pulse. I can tell you from bitter experience that this will challenge your skills as a logic and system designer.
  5. tom66

    Senior Member

    May 9, 2009
    Does you MCU have 5V tolerant IOs? If so, you can just connect the pull-ups to 5V and be done with it. Because I²C is open collector. I did this in one of my projects, both micros on the bus were 3.3V but I wanted to allow people to interface with their 5V micros and sensors.
  6. skybox

    Thread Starter Active Member

    Mar 2, 2009
    Thanks for the reply guys.

    Doing more research, I might not need a level shifter. I am using a dsPic33f series and it does have 5V tolerant pins.

    So what I will try is remove the pullups that connect to 3.3 and reinsert the 5V pullups on the other end.

    I will let you guys know.

  7. BMorse

    Senior Member

    Sep 26, 2009
    Only digital IO pins are 5 volt tolerant, any pin that can be used as an ADC input is NOT 5 volt tolerant...