cálculos de resistencia pullup I2C

10

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.

    
pregunta helloworld922

2 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 de 1000 ns, no de 100 ns (no sería necesario que fuera menor que el de 400 ncz de 300 ns).

\ $ \ dfrac {1us} {400pF} = 2.5k \ Omega \ $; para el caso de 100kHz

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

Muchos dispositivos no cumplen completamente con las especificaciones oficiales de 400kHz , por lo que es mejor consultar estos para comprender las condiciones bajo las cuales 400 kHz pueden funcionar (capacitancia del bus, pullup / fuente de corriente / etc) Vea la sección 6 en particular en particular (por ejemplo, vea la nota 4 en la página 45:

  

[4] Para manejar la carga completa del bus a 400 kHz, se requieren 6 mA IOL a 0,6 V VOL. Las piezas que no cumplan con esta especificación pueden seguir funcionando, pero no a 400 kHz y 400 pF)

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

    
respondido por el Oli Glaser
1

Tu cálculo tiene sentido. Hay un cálculo similar en esta nota de la aplicación de TI (sección 4.1) . Tenga en cuenta que utilizan Vcc = 1.8V para calcular Rmin .

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

    
respondido por el Nick Alexeev

Lea otras preguntas en las etiquetas

Comentarios Recientes

a continuación: las matemáticas pueden parecer demasiado complicadas, pero no te rindas, al final estarás acostumbrado. Necesitan una pequeña transición DIP para obtener el orden de giro correcto. Las matemáticas reales comienzan una vez que ambas trazas I2C se han cargado por completo, en el primer transistor para llevarlo a las afueras de 4V (otros 1/2 turnos). Por razones que pronto quedará claro, intente aumentar este lado lo suficiente como para hacer que la resistencia de pull-up mantenga el otro paralelo... Lees verder