Dado que las direcciones de esclavos tienen una longitud de 7 bits, ¿por qué es que el número de esclavos solo puede ser 127? ¿Una de las direcciones está reservada para algún propósito especial?
Dado que las direcciones de esclavos tienen una longitud de 7 bits, ¿por qué es que el número de esclavos solo puede ser 127? ¿Una de las direcciones está reservada para algún propósito especial?
Del documento NXP UM10204, "I 2 Especificación del C-bus y manual del usuario" , sección 3.1.12, "Direcciones reservadas":
Se reservan dos grupos de ocho direcciones (0000 XXX y 1111 XXX) [...]
Esto deja solo 112 direcciones disponibles. Sin embargo, continúa:
Si se sabe que la dirección reservada nunca se va a utilizar para el propósito previsto, se puede usar una dirección reservada para una dirección de esclavo.
Técnicamente, usted puede tener 128 dispositivos esclavos si usted mismo está diseñando todos los esclavos, pero en un sistema general no debe asumir que ninguna de las direcciones reservadas es disponible.
En realidad, la mayoría de los dispositivos I2C no pueden tomar ninguna dirección I2C. Por lo general, tienen una dirección fija. Algunos pueden tener una dirección elegida en un conjunto reducido, generalmente menos de 16 posibilidades. En ese caso, la dirección del dispositivo se elige en el momento del diseño al accionar algunos pines dedicados, por ejemplo: sensor de temperatura de microchip MCP9804, capítulo 3.1
Al final del día, el tamaño del espacio de direcciones I2C no es realmente importante.
El LSB en el byte se usa como un indicador R / W, dejando 7 bits para direccionamiento. Esto permite 127 esclavos (verifique con @Ignacio Vazquez-Abrams por qué esto no es necesariamente totalmente cierto) + "dirección general de llamada 0000 0000" . La dirección general de llamada se utiliza para "transmitir" a todos los dispositivos en el bus.
Del documento NXP UM10204, "I 2 Especificación del C-bus y manual del usuario" , sección 3.1.13 "Dirección general de llamada".
La dirección de llamada general se puede usar, por ejemplo, para restablecer el software (3.1.14).
Lea otras preguntas en las etiquetas i2c