# Pull up res in I2C

## Main Question or Discussion Point

In any signal line that's oscillating, how does the pull up resistor value affect the signal frequency.
According to I2C specs, The pullup res and the device capacitance limit the rise time of the signal, thus limiting the max frequency.
But when I simulated, I didn't see any change in frequency when I varied the value of R.
In the circuit attached, V1 is the oscillating source(1MHz), R is tied to V2(3.3V)

#### Attachments

• 5.9 KB Views: 105

Related Electrical Engineering News on Phys.org
V1 is just a mathematical function that produces a waveform at a specified amplitude and frequency. It has no internal capacitance nor can it be affected by external components.

Try creating a real oscillator using a transistor and see what happens.

Why is the cap to ground? I think the parasitic capacitance should be in series with the pullup. You'll need to charge this capacitance through the pullup and that's what's going to slow you down.

Last edited:
NascentOxygen
Staff Emeritus
IThe pullup res and the device capacitance limit the rise time of the signal, thus limiting the max frequency.
You need to give your voltage source, V1, a realistic output impedance. If the source is an open-collector arrangement, then its output impedance should be represented as a very high value for output going HI.

Why is the cap to ground? I think the parasitic capacitance should be in series with the pullup. You'll need to charge this capacitance through the pullup and that's what's going to slow you down.
The cap to ground represents the IC input capacitance.

V1 is just a mathematical function that produces a waveform at a specified amplitude and frequency. It has no internal capacitance nor can it be affected by external components.

Try creating a real oscillator using a transistor and see what happens.
I can add series resistance and some parallel capacitance for V1. If I add series resistance, then the series res and parallel cap of 10pf will act as low pass filter.
But I am interested in seeing how the pullup res and 10pf cap degrade the signal.

Your V1 is just a mathematical function that outputs a specific waveform at a specific amplitude and frequency. Adding external components will not affect its frequency. You need to create an oscillator in place of V1.

OP, you are not using a load, and like Skeptic2 said, you are not using a realistic output driver either. Its an open collector, so that means, when the output should be high, your pin should be floating (to be pulled up by the resistor). Instead, you are driving the high output directly with a voltage source in your simulation. The voltage source can source/sink infinite current since it exists only as an ideal mathematical model. That ideal voltage source has no problem removing and adding charge to the capacitor, which results in that pull up resistor basically being ignored.

Try using a diode in series, between your voltage signal source and your RC circuit, to imitate the open-collector behavior (cathode at the + side of your voltage source, anode at the RC). Using an NPN open collector would be even more accurate, especially when you are trying to discharge the capacitor with a low output. Just using a high value resistor in series will not give you accurate results, although more realistic than what you were simulating originally.

Also, as a side comment, I think generally I2C is recommended to use 1k pull-ups, and probably never much higher than 22k. It depends on the current sinking abilities of your chip and how many devices you have on the bus. Why are you using a 470k pull up?

Last edited: