What happens if I omit the pullup resistors on I2C lines?

Discussion in 'General Electronics Chat' started by kynix, Sep 22, 2016.

  1. kynix

    Thread Starter New Member

    Jul 18, 2016
    ust now I realized that the I2C data and clock lines (SDA and SCL) must have pullup resistors.

    Well, I've built a couple of clocks using the DS1307 RTC <snipped commercial link> according to the schematic below. Notice that I have omitted both pullup resistors.
    Both clocks work fine, one of them is working for more than 3 months now. How is that possible? In any case, I wanted to know:

    1. What happens when the I2C pullups are omitted?

    2. Is the lack of pullups likely to damage any of those two ICs in my board?
    I'm after answers that address my specific case of connecting ATmega328P to a DS1307 RTC like in the schematics I provided, but if the question doesn't get too broad, it would be helpful to know what happens when the pullups are omitted in general, i.e., in other scenarios of I2C operation.

    PS. I did search the Net to find the answer, but could just find articles about dimensioning the pullups.
    Last edited by a moderator: Feb 17, 2017 at 1:45 PM
  2. MrChips


    Oct 2, 2009
    No, you would not damage any device. The worst that can happen is there will be no communication.
    Many controllers today come with configurable pull-up and pull-down resistors avoiding the need for external resistors. You have to enable the desired resistor in the configuration settings of the input/output port.
  3. DickCappels


    Aug 21, 2008
    A few years ago I used an ATMEGA48 with an I2C memory at low speed using the weak pull-up resistors in the controller. It worked! -but very unreliably. To put it succintly, those resistors are there for a reason, per MrChips's explanation.
  4. AlbertHall

    Distinguished Member

    Jun 4, 2014
  5. Papabravo


    Feb 24, 2006
    You are more likely to get I2C to work without pullups if the traces are short between the CPU and the single device. The more distributed capacitance you have the more useful the pullups are.
  6. MrChips


    Oct 2, 2009
    DickCappels likes this.
  7. kynix

    Thread Starter New Member

    Jul 18, 2016
  8. MrChips


    Oct 2, 2009
    Well, did you get any?
    What were you expecting to hear?
    Were the folks on the other site lying to you?
  9. ErnieM

    AAC Fanatic!

    Apr 24, 2011
    New answers would require new information.

    Have these clocks been working for the last 3 months, or 2 years and 3 months?

    Did you get a new supervisor who wants you to once again explain the resistor omission issue?

    Do you understand the comment from "Passerby" about the wire library code enabling the weak pull ups?
  10. schmitt trigger

    Active Member

    Jul 12, 2010
    The I2C bus is open-collector (well, open-drain).
    The bus idle state is at a high level.
    To generate a START condition, the master pulls the data line from high to low while maintaining the clock high.

    How would you achieve that, a bus START condition, without a pullup resistor on both open-drain outputs?
    Short answer, you can't.