19 votos

¿Cuántos esclavos i2c puede soportar un maestro i2c?

¿Existe un número máximo de esclavos i2c que puede manejar un maestro i2c? ¿Cuáles son los factores físicos limitantes?

1 votos

Tiene una dirección de 7 bits. Eso significa que puedes direccionar hasta 127 esclavos.

0 votos

Gracias. ¿Existen factores físicos limitantes como la corriente, la capacitancia o algo así que impida que el número de esclavos llegue a 127?

1 votos

@Botnic ignorando completamente los switches i2c, hubs, buffers, repetidores, y cualquier dispositivo i2c que te permita expandir un bus.

23voto

vini_i Puntos 2101

El factor limitante del software es el tamaño de la dirección utilizada para los esclavos: 7 bits o 10 bits, que admiten 127 y 1023 dispositivos, respectivamente. Físicamente, hay dos restricciones. En primer lugar, el tamaño físico del bus, ya que éste sólo está pensado para recorridos cortos (la parte inter IC). Si el bus es demasiado grande, hay efectos de carga capacitiva y de retardo de propagación que hay que solucionar. En segundo lugar, algunos dispositivos no pueden soportar toda la gama de direcciones I2C. Como ejemplos, el giroscopio MPU6050 sólo soporta dos direcciones, y algunos dispositivos reservan direcciones específicas para fines especiales.

2 votos

Tienes un error de off-by-one. El direccionamiento de 7 bits soporta 128 direcciones (0 a 127). El direccionamiento de 10 bits soporta 1024 direcciones (0 a 1023).

3 votos

No se trata de un error puntual. Es un "error de 6" porque hay 7 direcciones reservadas y no sólo una.

0 votos

El esquema de direccionamiento viene dictado por los dispositivos del bus, maestro o esclavo. Algunos dispositivos tienen rangos de direcciones preestablecidos y direcciones reservadas. Otros dispositivos, muchos microcontroladores por ejemplo, no tienen direcciones reservadas y pueden utilizar cualquier dirección en un esquema de bits determinado.

10voto

Kratz Puntos 193

El número máximo de nodos está limitado por el espacio de direcciones, y también por la capacitancia total del bus de 400 pF, que restringe las distancias de distancias prácticas de comunicación a unos pocos metros.

Más información en I²C

9voto

Spehro Pefhany Puntos 90994

El direccionamiento limita el número de dispositivos: algunos pueden utilizar el direccionamiento de 10 bits (bastante poco utilizado), lo que limita el número de direcciones a 1024. Hay un puñado de direcciones "reservadas".

I2C (a diferencia del "bus de dos hilos" o como otros quieran llamar a buses similares), debería seguir el estándar de NXP (de soltera Philips), UM10204 Especificación del bus I2C y manual de usuario . Ese debe ser su principal documento de referencia, no las diversas interpretaciones y subconjuntos que existen en otros lugares.

El número máximo de dispositivos estará influenciado por la capacidad de accionamiento de la salida más débil (que a su vez determina la resistencia mínima de pullup), el cableado y la capacidad de entrada, y el modo/frecuencia de funcionamiento. Véase el apartado 7.2 Funcionamiento por encima de la capacidad máxima permitida del bus si se debe superar la capacidad máxima:

enter image description here

5voto

Alex Andronov Puntos 178

La principal limitación del número de esclavos que puede manejar un maestro suele provenir de factores eléctricos como la capacitancia del bus, las fugas, la fuerza de accionamiento, etc. Si pudiéramos construir esclavos con cero capacitancia parásita y cero fugas, y si pudiéramos conectarlos con trazas de placa de capacitancia cero, entonces la capacitancia del bus no sería un factor, pero en la práctica ninguna de las dos suposiciones se va a cumplir.

En cambio, el direccionamiento de dispositivos que "se conocen" entre sí no es un problema. Sería trivial diseñar un periférico que permitiera conectar miles de millones de chips utilizando una dirección de lectura y otra de escritura. Basta con especificar que cada dispositivo debe tener un ID único de cuatro bytes, y que está obligado a escuchar la dirección de escritura todo el tiempo, pero debe abandonar cada transacción cuyos primeros cuatro bytes de datos transmitidos no coincidan con su ID. Especifique además que los dispositivos sólo pueden responder a la dirección de lectura si la última transacción de escritura que escucharon coincide con su dirección.

Si se quisiera añadir la posibilidad de que el maestro determine los ID de todos los esclavos conectados, se podrían reservar algunos rangos de ID especiales para tales fines. Por ejemplo, se podría decir que si el primer byte de ID es FF, los siguientes cuatro bytes serán una máscara y los cuatro siguientes un ID; un dispositivo debería permanecer conectado (y aceptar el último byte de ID) si la parte de su ID especificada por la máscara coincide con la dada en el comando. Esto permitiría a un maestro identificar al menos un dispositivo usando 64 transacciones, y dispositivos adicionales usando 62 o menos transacciones cada uno. Tal vez no sea el medio más rápido para la identificación de dispositivos, pero no está mal teniendo en cuenta un espacio de búsqueda de miles de millones de ID de dispositivos.

5voto

Venza Puntos 198

I2C especifica 2 longitudes de dirección, 7 y 10 bits , lo que da un máximo teórico de 128 y 1024 direcciones distintas, respectivamente.

Sin embargo, hay algunas direcciones reservadas, como la 0x00 (llamada general). Esto limita aún más el espacio de direcciones.

Si estás construyendo un sistema en el que tienes control directo sobre los dispositivos I2C, debes puede utilizar las direcciones reservadas para su propio uso, pero el sistema dejará de cumplir con el estándar I2C.

Además del direccionamiento, están las limitaciones físicas del bus. Cada dispositivo en el bus necesita ser capaz de tirar del bus hacia abajo en un cierto lapso de tiempo (dependiendo de la velocidad del bus). Si el bus tiene mucha capacitancia, los dispositivos pueden no ser capaces de tirar de SDA hacia abajo lo suficientemente rápido, y los tirones pueden no traer SDA de vuelta lo suficientemente rápido.

Ahora, los problemas de hardware se pueden superar con un poco de hardware de los conductores. Ahora mismo estoy trabajando en un proyecto que utiliza I2C para comunicarse con dispositivos a lo largo de varios decenas de metros. El bus principal utiliza 24v, y cada placa tiene un driver que lo reduce a 3,3v.

En pocas palabras, se puede superar la limitación física de I2C. El direccionamiento puede ser superado, pero sólo si se tiene un control directo sobre el dispositivo.

0 votos

Hace casi tres años que se trabaja en buses i2c muy largos. ¿Funcionaron bien?

1 votos

@wallyk Dejé esa empresa poco después de publicar esa respuesta. Diré que con el hardware adecuado, se puede hacer que I2C se comunique a distancias más largas. Sin embargo, hay otros protocolos de comunicación que están diseñados para larga distancia y probablemente sería una mejor opción que I2C.

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