¿Cuántas resistencias de pull up por bus I2C?

1

Estoy diseñando un PCB con el que necesito hablar con 13 IC en un bus I2C. Me pregunto cuántas resistencias de arranque debo colocar en el autobús. Los chips son MAX9611 y aquí está el diseño actual del área de la placa I2C (continúa al lado derecho):

Comopuedever,R17yR18sonresistenciaslimitadorasdecorrienteyR21yR22sonresistenciasdeextracción(1paraSCLyotraparaSDA).LatrazaSCLpasaporlacapasuperiorySDAvaporlacapainferior).

Acabodeveralgunosejemplosen guía de bus TI I2C , y me pregunto qué Ya he diseñado un diseño incorrecto, porque parece que para cada dispositivo hay una resistencia de recuperación local en las líneas SDA y SCL:

¡Realmente apreciaría su sugerencia, antes de que falle miserablemente con el costo de un mal diseño de PCB!

    
pregunta Sean87

3 respuestas

14

Mire más de cerca ...

Solo hay un solo par de resistencias pull-up para cada bus . Su diagrama muestra cuatro buses I2C separados. El multiplexor y el repetidor aíslan los segmentos.

Por lo tanto, como solo tiene un un bus, solo necesita dos resistencias: una para SCL y otra para SDA.

    
respondido por el pipe
2

Una cosa que creo que estoy viendo es que todas tus fichas parecen tener la misma huella, lo que me hace pensar que todas son del mismo chip. Si son el mismo chip, entonces todos deben tener una dirección única, de lo contrario, todos intentarán responder a los mismos comandos dados. Esto es algo bueno si todos necesitan comportarse al mismo tiempo, no tan bueno si necesitan actuar independientemente. Sin embargo, si tienen la misma dirección, si uno de ellos se rompe, falta, no recibió un comando, etc., entonces su código no lo sabrá.

En cuanto a los pull-ups, la tubería es absolutamente correcta, solo desea que se usen un par de pull-ups por bus. La imagen que ha publicado muestra cuatro buses completamente separados (micro a multiplexor, multiplexor a expansores de E / S y luces intermitentes LED, repetidor de concentrador a más expansores de E / S y convertidor de multiplexor a datos, eeprom, etc.).

La Sección 7.1 de la norma I2C (www.nxp.com/documents/user_manual/UM10204.pdf) muestra cómo dimensionar los pull-ups. La Tabla 10 en la sección 6.1 especifica los tiempos de subida para las diferentes velocidades.

Un truco que aprendí para dimensionar correctamente los pull-ups es especificar una resistencia de rango medio (~ 5k) como pull-up, y luego explorar las formas de onda en la unidad prototipo. La resistencia real requerida será igual a CurrentResistor * (TargetRiseTime / MeasuredRiseTime). Una resistencia más pequeña que el número especificado le dará el tiempo de subida para cumplir con las especificaciones. Si la resistencia es más pequeña que el mínimo de pull-up calculado (de la sección 7.1), es posible que deba dividir su bus en múltiples segmentos usando repetidores, multiplexores u otra cosa. Hay dos ventajas para medir y luego calcular, la primera es que siento que es más rápido que tratar de calcular la capacitancia de su bus, especialmente porque muchos factores pueden afectarlo, la segunda es que realmente puede ver la forma de onda y puede elevar una bandera roja si la señal se ve mal.

    
respondido por el CraigC
1

Solo se necesitan pullups necesarios en el maestro. (I2C no es un bus rápido, y no usa resistencias de terminación, y no tiene impedancia coincidente.)

PERO Debe asegurarse de que los segmentos de bus después de los mux / interruptores permanezcan detenidos cuando está apagado. Dependiendo de cómo implemente los muxes, es posible que necesite pullups en los segmentos de bus aislados. Estos pueden ser R altos, solo para mantener las líneas altas, no para levantarlas durante la operación, por ejemplo. Los pullups maestros podrían ser 1k5, y los pullups de segmentos 100k. Verá esto en nuestra tarjeta de conmutación de bus: enlace

Hay una segunda razón para la recuperación de segmentos: un segmento aislado es más largo / alto capacitancia, y necesita más corriente, es decir, menor R. Por cierto, este caso, un segmento, es una muy buena razón para usar los conmutadores de bus, ya que aísla los problemas (por ejemplo, el ruido) de los chips en ese segmento, mientras que el resto del sistema será confiable.

vea también: enlace

    
respondido por el Henry Crun

Lea otras preguntas en las etiquetas