Estoy tratando de conducir esta pantalla LCD I2C con una ATxmega16A4U microcontrolador.
Ambos dispositivos están listados para trabajar con frecuencias de reloj I2C de hasta 400 kHz. Los dos dispositivos son los únicos dispositivos en el bus I2C.
Sin embargo, elaborar los cálculos para los límites de la resistencia de pull-up proporciona algunos valores bastante extraños.
Cálculo del valor de resistencia de pullup mínimo I2C:
\ begin {equation} R_ {min} = \ frac {Vcc - 0.4} {3mA} = 966.7 \ Omega \ end {ecuación}
Mirando las hojas de datos de uC, en la página 92 se enumeran las capacidades de entrada de pin máximo de 10pF.
Sin embargo, para la pantalla LCD, tiene en la página 8 algo que se llama Capacitive load represent by each bus line
etiquetado como Cb, y está listado a un valor máximo de 400pF. Supongo que debería agregar este valor a la capacitancia de entrada de 10 pF uC, pero esto parece realmente alto y los cálculos son confusos.
Por ejemplo, cuando intento calcular el valor máximo de resistencia de pullup para un reloj de 400 kHz:
\ begin {equation} R_ {max} = \ frac {300ns} {10pF + 400pF} = 731.7 \ Omega \ end {ecuación}
¿Estoy malinterpretando la hoja de datos del LCD? Obviamente, el valor máximo de la resistencia de pull-up admisible no puede ser menor que el valor mínimo admisible.
del mismo modo, si asumo una capacidad máxima de bus de red de 400pF, obtengo:
\ begin {equation} R_ {max} = \ frac {300ns} {400pF} = 750 \ Omega \ end {ecuación}
aún bajo el valor máximo permitido.