18 votos

¿Qué dirección I2C debo elegir?

Ahora sé que para tener una dirección I2C reservada para ti tienes que pagar a la gente de I2C algo de dinero. Pero yo no quiero hacer esto.

Estoy pidiendo consejo sobre qué dirección debo elegir para mi esclavo y maestro MCUs en mi proyecto. También habrá una EEPROM en la placa. Así que voy a evitar el uso de la dirección de la EEPROM. Planeo que el maestro se conecte a una amplia gama de sensores, incluyendo giroscopios y acelerómetros, y tal vez dispositivos de memoria adicionales. ¿Hay algún bloque de direcciones que debería evitar? Yo estaba pensando en usar sólo 0x00 para el maestro y 0x01 para el esclavo, porque los que parecen ser rara vez se utiliza.

Otra pregunta: ¿sería mala idea mezclar dispositivos de 10 bits y dispositivos de 7 bits en el mismo bus? Estaba considerando la posibilidad de que mis MCUs se comunicasen con direccionamiento de 10 bits, pero que sólo utilizasen direcciones de 7 bits para los sensores.

18voto

lillq Puntos 4161

Elige un dispositivo que positivamente no vayas a utilizar en tu diseño y utiliza su dirección I2C. Por ejemplo, si no vas a necesitar un RTC, puedes usar 0xA2 y 0xA3, que son usadas por el NXP PCF8563 (y probablemente otros RTCs).

14voto

Simon Gillbee Puntos 366

En primer lugar, no utilices 0x00 y 0x01, ¡están reservados! La tabla 3 de la Especificación del bus I2C enumera las direcciones reservadas (y los motivos):

Slave addr  R/W        Description
 0000 000    0     General call address
 0000 000    1     START byte
 0000 001    X     CBUS address
 0000 010    X     Reserved for different bus format
 0000 011    X     Reserved for future purposes
 0000 1XX    X     Hs-mode master code
 1111 1XX    1     Device ID
 1111 0XX    X     10-bit slave addressing

También debes evitar 0x00 porque 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: "Que sea configurable". Si quieres poder conectar una gran variedad de sensores, entonces puedes pagar a NXP por una dirección, o darle direcciones ajustables. Las modificaciones de software deberían ser obvias si quieres 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 los pines digitales) es barato y fácil, o una red de escalera de resistencias con puentes conectados a un pin A / D podría darle un control completo en el hardware.

11voto

Binarytales Puntos 1145

A continuación figura una lista de las direcciones asignadas en 1999: http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF

No publican una lista completa con este razonamiento:

P: ¿Es posible recibir una lista de todas las direcciones I²C-esclavo utilizadas hasta la fecha?

R: No. NXP Semiconductors no emite esta lista de todas las direcciones direcciones esclavas, ya que es la única manera de garantizar que la lista actualizada y que cada dirección asignada única. Si esta lista estuviera disponible, los licenciatarios del bus I²C empezarían a seleccionar direcciones esclavas y la lista central quedaría incompleta, lo que podría conflictos de direcciones. El principio principio establecido, que ha demostrado bien, es que cada licenciatario envíe una solicitud de dirección esclava a un único contacto dentro de NXP Semiconductors, que que asigna la dirección esclava basándose en una lista maestra única.

En http://www.nxp.com/products/interface_control/i2c/faq/

Ahora, si todo va a ser interno a su proyecto, no hay ninguna razón por la que no pueda seleccionar cualquier dirección que desee, siempre y cuando no entre en conflicto con cualquier cosa que planee conectar.

1voto

Jon Ericson Puntos 9703

Como dice Kellenjb no obtendrás una lista completa de direcciones de dispositivos esclavos.

Sin embargo, hay varias direcciones reservadas que no se pueden utilizar (0x00, por ejemplo, es la dirección de llamada general).

La lista está aquí

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

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