I2C cálculos de resistencia pullup

10

Estoy tratando de manejar esta pantalla LCD I2C con un microcontrolador ATxmega16A4U .

Ambos dispositivos están listados para funcionar con frecuencias de reloj I2C de hasta 400 kHz. Los dos dispositivos son los únicos dispositivos en el bus I2C.

Sin embargo, calcular los cálculos para los límites de resistencia pull-up da algunos valores bastante extraños.

Cálculo del valor mínimo de resistencia de pullup I2C:

Rmetroyonorte=VCC-0.4 0.43metroUN=966,7Ω

Mirando las hojas de datos de uC, en la página 92 ​​se enumera la capacitancia máxima de entrada del pin de 10pF.

Sin embargo, para la pantalla LCD, tiene en la página 8 algo llamado Capacitive load represent by each bus lineetiquetado como Cb, y aparece en la lista con un valor máximo de 400pF. Supongo que debería agregar este valor a la capacitancia de entrada de 10pF uC, pero esto parece muy alto y los cálculos son inestables.

Por ejemplo, cuando intento calcular el valor máximo de resistencia de pullup para un reloj de 400 kHz:

RmetrounX=300nortes10pagsF+400pagsF=731,7Ω

¿Estoy malinterpretando la hoja de datos LCD? Obviamente, el valor máximo permitido de resistencia pullup no puede ser menor que el valor mínimo permitido.

Del mismo modo, si supongo una capacidad máxima del bus neto de 400pF, obtengo:

RmetrounX=300nortes400pagsF=750Ω

aún por debajo del valor máximo permitido.

helloworld922
fuente

Respuestas:

11

Hay un error tipográfico en la hoja de datos de Atmel, el tiempo de subida para el caso de 100 kHz debería ser 1000ns, no 100ns (no necesitaría ser menor que el caso de 400kHz de 300ns), entonces obtienes:

1tus400pagsF=2.5kΩ ; para el caso de 100kHz

La hoja de datos del LCD (casi con certeza) significa la capacidad máxima del bus, no la capacidad que agrega al bus. Probablemente agrega alrededor de 10pF. Puede verificar con un medidor LCR o simplemente configurarlo con una resistencia de 2k y ver los tiempos de subida.

Muchos dispositivos no cumplen totalmente con las especificaciones oficiales de 400 kHz , por lo que es mejor consultarlas para comprender las condiciones bajo las cuales puede funcionar 400 kHz (capacitancia del bus, pullup / fuente de corriente / etc.) Consulte la sección 6 en adelante en particular (por ejemplo, vea nota 4 en la página 47:

[4] Para manejar la carga completa del bus a 400 kHz, se requiere una IOL de 6 mA a 0.6 V VOL. Las piezas que no cumplen con esta especificación aún pueden funcionar, pero no a 400 kHz y 400 pF)

Más adelante, estas tablas son bastante útiles y parecen estar de acuerdo con sus cálculos:

Pullups I2C

Oli Glaser
fuente
Sí, lo noto sobre la hoja de datos. una señal de 400 kHz debería tener un tiempo de subida más corto que una señal de 100 kHz: D
helloworld922
1

Tu cálculo tiene sentido. Hay un cálculo similar en esta nota de la aplicación TI (sección 4.1) . Observe que usan V cc = 1.8V para calcular R min .

Es concebible que C b sea ​​la capacitancia máxima del bus con la que LCD puede trabajar, y no la capacitancia que LCD agrega al bus. Puede probar la capacitancia de las entradas I 2 C midiendo su constante RC. Eso proporcionaría el control de cordura de orden de magnitud.

Nick Alexeev
fuente