11 votos

Cálculos de las resistencias de arranque de I2C

Estoy tratando de conducir esta pantalla LCD de I2C con un 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, el cálculo de los límites de la resistencia de tracción da algunos valores de impar.

Calculando el valor mínimo de la resistencia de arranque de I2C:

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

Mirando las hojas de datos de la UC, en la página 92 se enumera la máxima capacitancia de entrada de los pines de 10pF.

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

Por ejemplo, cuando trato de calcular el valor máximo de la resistencia de arranque para un reloj de 400kHz:

\begin {ecuación} 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 permitido de la resistencia de arranque no puede ser menor que el valor mínimo permitido.

De la misma manera, si asumo una máxima capacitancia de bus neto de 400pF, obtengo:

\begin {ecuación} R_{max} = \frac {300ns}{400pF} = 750 \Omega \end {ecuación}

todavía por debajo del valor máximo permitido.

12voto

SandeepJ Puntos 1339

Hay una errata en el datasheet de Atmel, el tiempo de subida para el caso de 100kHz debería ser de 1000ns, no de 100ns (no tendría por qué ser inferior al caso de 400kHz de 300ns) entonces se consigue:

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

La hoja de datos del LCD (casi seguro) se refiere a la capacitancia máxima del bus, no a la capacitancia que añade al bus. Probablemente añade alrededor de 10pF. Puedes comprobarlo con un medidor LCR o simplemente configurarlo con una resistencia de 2k y mirar los tiempos de subida.

Muchos dispositivos no cumplen totalmente con la especificaciones oficiales de 400kHz Así que es mejor consultarlas para entender las condiciones en las que los 400kHz pueden funcionar (capacitancia del bus, fuente de corriente/ pullup/etc.) Ver la sección 6 en adelante en particular (por ejemplo ver la nota 4 en la pg.47:

[4] Para conducir la carga completa del bus a 400 kHz, se requieren 6 mA IOL a 0,6 V VOL. Las piezas que no cumplan 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 tus cálculos:

I2C Pullups

0 votos

Sí, me he dado cuenta de eso en la hoja de datos. una señal de 400kHz debería tener un tiempo de subida más corto que una señal de 100kHz :D

1voto

Nick Alexeev Puntos 20994

Su cálculo tiene sentido. Hay un cálculo similar en este Nota de aplicación de TI (sección 4.1) . Obsérvese que utilizan V cc \=1,8V para calcular R min .

Es concebible que el C b es la capacitancia máxima del bus con la que la LCD puede trabajar, y no la capacitancia que la LCD añade al bus. Puede probar la capacitancia de la I 2 C midiendo su constante RC. Eso proporcionaría la comprobación de cordura del orden de magnitud.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X