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.
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.