Skip to main content
Tweeted twitter.com/#!/StackElectronix/status/298689689584541696
added 196 characters in body
Source Link
helloworld922
  • 17k
  • 10
  • 57
  • 88

I am trying to drive this I2C LCD display with an ATxmega16A4U microcontroller.

Both devices are listed to work with I2C clock frequencies up to 400 kHz. The two devices are the only devices on the I2C bus.

However, working out the calculations for the pull-up resistor bounds gives some rather odd values.

Calculating the I2C minimum pullup resistor value:

\begin{equation} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{equation}

Looking at the uC datasheets, on page 92 lists the max pin input capacitance of 10pF.

However for the LCD, it has on page 8 something called the Capacitive load represent by each bus line labeled as Cb, and is listed at a max value of 400pF. I'm assuming I should just add this value to the 10pF uC input capacitance, but this seems really high and the calculations are wonky.

For example, when I try computing the maximum pullup resistor value for a 400kHz clock:

\begin{equation} R_{max} = \frac{300ns}{10pF + 400pF} = 731.7 \Omega \end{equation}

Am I misinterpreting the LCD datasheet? Obviously the max allowable pullup resistor value cannot be smaller than the min allowable value.

likewise, if I assume a maximum net bus capacitance of 400pF, I get:

\begin{equation} R_{max} = \frac{300ns}{400pF} = 750 \Omega \end{equation}

still under the maximum allowable value.

I am trying to drive this I2C LCD display with an ATxmega16A4U microcontroller.

Both devices are listed to work with I2C clock frequencies up to 400 kHz. The two devices are the only devices on the I2C bus.

However, working out the calculations for the pull-up resistor bounds gives some rather odd values.

Calculating the I2C minimum pullup resistor value:

\begin{equation} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{equation}

Looking at the uC datasheets, on page 92 lists the max pin input capacitance of 10pF.

However for the LCD, it has on page 8 something called the Capacitive load represent by each bus line labeled as Cb, and is listed at a max value of 400pF. I'm assuming I should just add this value to the 10pF uC input capacitance, but this seems really high and the calculations are wonky.

For example, when I try computing the maximum pullup resistor value for a 400kHz clock:

\begin{equation} R_{max} = \frac{300ns}{10pF + 400pF} = 731.7 \Omega \end{equation}

Am I misinterpreting the LCD datasheet? Obviously the max allowable pullup resistor value cannot be smaller than the min allowable value.

I am trying to drive this I2C LCD display with an ATxmega16A4U microcontroller.

Both devices are listed to work with I2C clock frequencies up to 400 kHz. The two devices are the only devices on the I2C bus.

However, working out the calculations for the pull-up resistor bounds gives some rather odd values.

Calculating the I2C minimum pullup resistor value:

\begin{equation} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{equation}

Looking at the uC datasheets, on page 92 lists the max pin input capacitance of 10pF.

However for the LCD, it has on page 8 something called the Capacitive load represent by each bus line labeled as Cb, and is listed at a max value of 400pF. I'm assuming I should just add this value to the 10pF uC input capacitance, but this seems really high and the calculations are wonky.

For example, when I try computing the maximum pullup resistor value for a 400kHz clock:

\begin{equation} R_{max} = \frac{300ns}{10pF + 400pF} = 731.7 \Omega \end{equation}

Am I misinterpreting the LCD datasheet? Obviously the max allowable pullup resistor value cannot be smaller than the min allowable value.

likewise, if I assume a maximum net bus capacitance of 400pF, I get:

\begin{equation} R_{max} = \frac{300ns}{400pF} = 750 \Omega \end{equation}

still under the maximum allowable value.

Source Link
helloworld922
  • 17k
  • 10
  • 57
  • 88

I2C pullup resistor calculations

I am trying to drive this I2C LCD display with an ATxmega16A4U microcontroller.

Both devices are listed to work with I2C clock frequencies up to 400 kHz. The two devices are the only devices on the I2C bus.

However, working out the calculations for the pull-up resistor bounds gives some rather odd values.

Calculating the I2C minimum pullup resistor value:

\begin{equation} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{equation}

Looking at the uC datasheets, on page 92 lists the max pin input capacitance of 10pF.

However for the LCD, it has on page 8 something called the Capacitive load represent by each bus line labeled as Cb, and is listed at a max value of 400pF. I'm assuming I should just add this value to the 10pF uC input capacitance, but this seems really high and the calculations are wonky.

For example, when I try computing the maximum pullup resistor value for a 400kHz clock:

\begin{equation} R_{max} = \frac{300ns}{10pF + 400pF} = 731.7 \Omega \end{equation}

Am I misinterpreting the LCD datasheet? Obviously the max allowable pullup resistor value cannot be smaller than the min allowable value.