I2C - direccionamiento

En el protocolo i2c, me gustaría saber cómo se asignan las direcciones maestra y esclava. La mayoría de los documentos de Internet hablan sobre cómo funciona el protocolo, pero no pude encontrar documentos sobre el direccionamiento maestro y esclavo i2c.

Por ejemplo, quiero comunicarme entre mi tm4c129 LP y una hoja de datos del sensor de luz SparkFun . En la hoja de datos de tivaware (controladores de TI), establecen la dirección maestra como 0x3B.

¿Puedo configurar otra dirección legal para ese dispositivo maestro?

Lo mismo ocurre con el sensor de luz, la hoja de datos se refiere a que la dirección del dispositivo tiene 0x39, 0x29 o 0x49. ¿Puedo cambiar la dirección esclava o está integrada en el IC de la PCB?

Respuestas (1)

La dirección I 2 C se establece dentro del propio chip. Puede haber pines expuestos para seleccionar una dirección alternativa dentro de un rango, pero no hay forma de darle un rango completamente diferente a menos que se vuelva a implementar desde cero.

Y supongo, ¿tienes que pagarle a Phillips para tener una dirección? Además, si tiene el mismo dispositivo varias veces y desea conectarlos todos en el mismo bus i2c, ¿necesitaría algún tipo de Demux para comunicarse con el correcto?
Necesita una licencia para crear hardware que implemente I2C, pero puede tomar cualquier dirección que desee (aunque usar una dirección común no le hará ganar el favor de los diseñadores de sistemas). Se puede usar un concentrador I2C para dividir un solo bus I2C en múltiples buses virtuales, cada uno con su propio espacio de direcciones aislado.
Una nota, como maestro I2C en un solo sistema maestro, la dirección del maestro es bastante irrelevante.
@IgnacioVazquez-Abrams Es posible que necesite una licencia para usar el término "I2C", pero muchas empresas han adoptado el nombre "protocolo de dos hilos" o "interfaz de dos hilos" e implementan I2C sin gravámenes de NXP.
@MathieuL no tiene que pagarle a nadie por una dirección; no existe un organismo de normalización que mantenga una base de datos de direcciones. Elige una dirección que es poco probable que entre en conflicto con otros dispositivos I2C con los que podría compartir el bus.
@MathieuL: con direccionamiento de 7 bits, solo hay 127 (no use 0000000b) direcciones posibles. Obviamente, cada dispositivo no puede tener una dirección única.
Los conflictos de direcciones I2C son un problema común. Recientemente, Linear Technology presentó LTC4316 , que es un IC traductor de direcciones I2C.