Ahora sé que para tener una dirección de I2C reservada para usted, debe pagar algo de dinero a las personas de I2C. Pero no quiero hacer esto.
Estoy pidiendo consejo sobre qué dirección debo elegir para mis MCU esclavas y maestras en mi proyecto. También habrá una EEPROM en el tablero. Así evitaré usar la dirección de la EEPROM. Planeo que el maestro se conecte a una amplia gama de sensores, incluidos giroscopios y acelerómetros, y quizás dispositivos de memoria adicionales. ¿Hay algún bloque de direcciones que deba evitar? Estaba pensando en usar 0x00 para el maestro y 0x01 para el esclavo, porque parece que rara vez se usan.
Otra pregunta: ¿sería una mala idea mezclar dispositivos de 10 bits y dispositivos de 7 bits en el mismo bus? Estaba considerando la posibilidad de que mis MCU se comuniquen con direccionamiento de 10 bits, pero solo usando direcciones de 7 bits para sensores.
Respuestas:
Primero, no use 0x00 y 0x01, ¡están reservados! La Tabla 3 de la Especificación del bus I2C enumera las direcciones reservadas (y los motivos):
También debe mantenerse alejado de 0x00 porque eso no tiene transiciones de borde y podría ser una condición de error (y es difícil de depurar).
Aparte de eso, yo diría "Solo hazlo configurable". Si desea poder conectar una amplia variedad de sensores, puede pagar a NXP por una dirección o darle direcciones ajustables. Las modificaciones de software deberían ser obvias si desea distribuir el código fuente. Una opción de hardware para alternar uno o dos bits de la dirección seleccionada (puentes de soldadura en pines digitales) es barata y fácil, o una red en escalera de resistencias con puentes conectados a un pin A / D podría darle un control completo en el hardware.
fuente
Elija un dispositivo que no utilizará en su diseño y use su dirección I2C. Por ejemplo, si no necesitará un RTC, puede usar 0xA2 y 0xA3, que son utilizados por el NXP PCF8563 (y probablemente otros RTC).
fuente
Aquí hay una lista de direcciones asignadas a partir de 1999: http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF
No publican una lista completa con este razonamiento:
De http://www.nxp.com/products/interface_control/i2c/faq/
Ahora, si todo va a ser interno a su proyecto, no hay razón para que no pueda seleccionar cualquier dirección que desee, siempre que no entre en conflicto con nada que planee conectarse.
fuente
Como dice Kellenjb, no obtendrá una lista completa de direcciones de dispositivos esclavos.
Sin embargo, hay varias direcciones reservadas que no puede usar (0x00, por ejemplo, es la dirección de llamada general).
La lista esta aqui
La combinación de direccionamiento de 10 y 7 bits está bien siempre que los esclavos de 7 bits obedezcan el estándar I2C e ignoren las direcciones de 10 bits.
fuente