Valor de resistencia pull-up I2C; Capacitancia superior a 400 pf

Estoy usando I2C de 100 kHz para comunicarme con 12 esclavos. Descubrí que la capacitancia MAX es de aproximadamente 400 PF. cuando calculo el valor de la resistencia pull up, parece que puedo aumentar mucho más la capacitancia. ¿Es esto correcto?

Usando 5V y VOL = 0.4V para LIO = 3mA

Rmin=5V−0.4V /3mA = 1533 ohm Esto significa que puedo bajar hasta 1533 ohm.

Si el bus C es 650pf

Rmáx=1000ns/(Cbus*0,8473) = 1000ns/(650PF *0,8473) = 1800 ohmios.

Entonces, si elijo una resistencia pull-up de aproximadamente 1.8K, satisfará AMBAS equitación Rmin y Rmax. My Bus puede manejar una capacitancia de hasta 650 PF.

¿Es esto correcto o me estoy perdiendo algo? ¿Por qué van las especificaciones oficiales para un máximo de 100 kHz hasta 400 pf?

¡¡Gracias!! Todas las equitaciones provienen de las especificaciones oficiales de I2C http://www.ti.com/lit/an/slva689/slva689.pdf

https://www.nxp.com/docs/en/user-guide/UM10204.pdf P55

(PD: Los dispositivos I2C que uso también pueden manejar hasta 20 mA IOL para VOL = 0,4 V. Esto significa que Rmin puede ser mucho más bajo; Rmin = 5 V−0,4 V /20 mA = 230 ohmios. Mi bus puede manejar mucha más capacitancia)

Simplemente acumulando referencias: Cálculos de diseño para comunicaciones I2C sólidas
Ya he leído esto. no responde mi pregunta :(
En Ingeniería hay una cosa que se llama "márgenes seguros". Si sus cálculos muestran que el pullup de 1.8k cumple con el margen de tiempo (Trise) incluso con una carga de 650pF, no significa que todos sus otros dispositivos cumplirán de manera confiable con todos los demás parámetros en todos los rincones de proceso y temperatura.

Respuestas (1)

Por lo general, la resistencia pull up para su bus se elige según la capacitancia del bus. Entonces, cuanto mayor sea la capacitancia del bus, tendrá que usar una resistencia pull-up más baja. El criterio que debe cumplirse es que, a la frecuencia de conmutación, su almohadilla debería poder cargar hasta el 90% del voltaje del riel (que es una especificación en i2c). Los pull-ups de resistencia mencionados generalmente corresponden a diferentes modos de operación de i2c (como modo rápido, modo rápido plus, modo de alta velocidad). El modo FM+ utiliza una señal de 1 MHz y, por lo tanto, la elevación de la resistencia se calcula de modo que el bus se cargue al voltaje del riel dentro de 0,5 us.

Ahora, en su caso, si tiene un requisito de Iol de CC de 3mA @ Vol = 0.4V, entonces, solo significa que se supone que puede absorber 3mA de corriente a través del transistor de drenaje abierto que tiene. Es posible que no tenga que preocuparse por la caída en la resistencia pull-up.

Además, no obtuve su parte de cálculo de Rmax, ¿es una ecuación mencionada en la hoja de datos de i2c?

Por favor, no haga ninguna pregunta al OP en su respuesta. Para eso está la sección de comentarios :) pero de todos modos es una buena respuesta +1
Sí, @KingDuken, no deseo hacer preguntas en mi respuesta, pero Stackoverflow no me permite comentar hasta que mi reputación sea mayor de 50, lo cual es ingobernable. :)
¡Sí, todos los cálculos provienen de las especificaciones oficiales!
El problema es que la especificación oficial de I2C para 100 kHz alcanza un máximo de 400 pf. Sin embargo, según mis cálculos, puedo subir hasta 650 pf.
Gracias Berkay, parece que han considerado la especificación de tiempo de subida de Tr para un 10-90% más o menos, en cuyo caso su fórmula tiene sentido. Si la capacitancia de su bus puede subir hasta 650pF, entonces tendrá que usar un Rpullup más bajo. Pero el problema sería cumplir con las especificaciones mínimas y máximas de Tfal, en la frecuencia de conmutación mencionada.
Lo consideran del 30% al 70%. Pero esto no cambia nada. La especificación oficial limita la capacitancia máxima a 400 pf. Eso es algo que no puedo entender. ¿Qué es el Tfal por cierto?
Tfal es el tiempo de caída en el bus, donde se supone que Tfal es inferior a 120 ns y superior a algún valor que se mencionará en la hoja de datos (será proporcional al voltaje de activación externo). Nuevamente, con respecto a los 650pF, no creo que deba ser un problema siempre que pueda cumplir con las otras especificaciones requeridas para i2c (que incluye tfall, el voltaje del bus debe ser superior al 90% del voltaje del riel, inferior a 10% de tensión de carril). Indirectamente tendrás más poder que depende de ti.
Tfal para 100 Khz es 300ns. Pero, ¿cómo se relaciona esto con la resistencia pull-up? La fórmula Rmin es la fórmula para garantizar que el dispositivo pueda tirar de la línea BAJA. La fórmula Rmax es la fórmula para llevar la línea de nuevo a un nivel alto, considerando el aumento de T. No he visto a T fal por ninguna parte.
Sí, tienes razón, mi mal. Tfal no es una especificación externa. Pero cuando se menciona la capacitancia máxima de 400pF, se sabe que los valores Tfal mencionados en la hoja de datos se violarán con una capacitancia de bus más alta. Esto se debe a que el i2c se diseñaría teniendo en cuenta el límite de 400 pF que se descarga a través del transistor de drenaje abierto (el tamaño del transistor/unidad se basará en esto). La mayor capacidad de carga afectará sus corrientes estáticas y de carga y, a su vez, también su consumo de energía. En resumen, si Tfal o el poder no son una preocupación importante para usted, no debería ser un problema.
Oh bien... Entonces, ¿será imposible para mí ir más allá de 400 pf? (usar repetidor/búfer no es una opción para mi aplicación)
No sé si un búfer sería suficiente, sin embargo, resolverá el problema de la capacitancia. Dado que la señal será una señal de variación lenta (100 kHz) en la salida i2c, es posible que el ancho de pulso T_on varíe en la salida del búfer. Si está bien vivir con una señal de ciclo de trabajo distorsionada, supongo que debería estar bien.