Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

01/11/2015 #1

Avatar de Scooter

Las direcciones I²C. ¿Solución de conflictos?
Voy a preguntar una obviedad:
Estoy haciendo unos cuantos circuitos que llevan bastantes cosas colgando del bus I²C,
¿Que pasa cuando dos circuitos tienen la misma dirección?... que no funcionan por que chocan
Y esta la pregunta de verdad:
¿Como se soluciona?
  1. Cambiando de dirección uno de los dispositivos en conflicto... No en todos es posible y no en todos los modulitos premontados ese pin, si existe, está accesible
  2. Si el dispositivo tiene un Chip Enable hacer uso de él
  3. Poniendo dos buses I²C. Este sistema no me gusta, tendría que implantar uno por software y soy de la liga antisoftware salvo que sea imprescindible
  4. ¿Veis viable hace un "multiplexor" I²C con un par de buffers triestado? Eso no lo he visto por ningún sitio pero me parece que sería viable

La A y la B serían las ideales pero eso no siempre es posible, o bien porque no exista el pin, o bien porque no esté accesible.
¿Alguna otra idea/recomendación/sugerencia?
01/11/2015 #2

Avatar de Dr. Zoidberg

Cual hardware podes modificar??
El maestro o los esclavos??
01/11/2015 #3

Avatar de Scooter

Depende, puede que ninguno de ellos.
El maestro son dos pines de un microcontrlador, ahí poca cosa hay que tocar.
01/11/2015 #4

Avatar de chclau

TI y NXP fabrican multiplexores I2C
01/11/2015 #5

Avatar de Dr. Zoidberg

Hummmmm....
Si tenes esclavos con la misma direccion, podes modificar tal como decis para generar dos buses con alguna suerte de multiplexor, pero requiere distribucion cuidadosa de los esclavos y vale si solo tenes pares de dispositivos con igual direccion.
Por supuesto que la activacion de uno u otro par SCL/SDA va a complicar un poco el soft...
01/11/2015 #6

Avatar de Daniel Meza

¿De qué"esclavos" se habla?, y ¿cuántos?, vamos para que se hayan duplicado las direcciones es porque hay muchos esclavos de una sola categoría. La solución que veo sencilla es la "a)".
No está de más hacer un pequeño corte en las pistas para cambiar la dirección del módulo.
01/11/2015 #7

Avatar de Scooter

Lo de cortar la pista, en teoría si, en la práctica suelen ser minusculos o lo siguiente. Muy dificil de acceder a la pista.

También está la de poner un maestro por esclavo

Voy a buscar info sobre los multiplexores a ver que hay por ahí y como son de accesibles.
01/11/2015 #8

Avatar de cosmefulanito04

Si no podés a) o b), además de lo que mencionó chclau, se me ocurre:

1- Si la cantidad lo permite, usar un uC con más de un bus I2C.
2- Usar un buffer con enable que sirva de repetidor, por ej. un PCA9515 de nxp, el problema es que necesitás uno de estos por c/esclavo con dirección repetida.

Es medio primitivo usar así el I2C, pero bue.
01/11/2015 #9

Avatar de Ardogan

Voto por usar un multiplexor, pero debería ser posible multiplexando solo la señal de clock, cierto? (cuidando de que las líneas de reloj sin usar queden en el estado alto).
Si no hay un clock activo el esclavo no debería manejar ni escuchar la línea de datos.
Y sí... también coincido que vale para salir del paso con algo pre-armado, pero no va para hacer un diseño nuevo.
01/11/2015 #10

Avatar de cosmefulanito04

Ardogan dijo: Ver Mensaje
Voto por usar un multiplexor, pero debería ser posible multiplexando solo la señal de clock, cierto? (cuidando de que las líneas de reloj sin usar queden en el estado alto).
Si no hay un clock activo el esclavo no debería manejar ni escuchar la línea de datos.
Y sí... también coincido que vale para salir del paso con algo pre-armado, pero no va para hacer un diseño nuevo.
Estuve viendo sobre los multiplexores y te permiten multiplexar las dos señales, clock y datos. Hay uno que permite hasta 8 canales.
02/11/2015 #11

Avatar de reyvilla

Un saludo compañeros luego de un largo tiempo sin participar, regreso por acá esperando seguir aportando y aprendiendo de este gran foro. En esta oportunidad tengo un pequeño aporte que espero sea de utilidad, vi hace poco un sistema que implementa registros de desplazamiento para la selección de chips, les dejo un esquema que realice para asi logremos ver si es factible y si es funcional. Actualmente ando trabajando con este protocolo y por eso me intereso el tema.

Funcionamiento: Lo que entiendo es que a través del registro de desplazamiento le damos la dirección o selección a cada dispositivo que este en el bus i2c con el cual nos vamos a comunicar.


Por el momento espero poder experimentar y aprender mas del tema...Saludos
Archivos Adjuntos
Tipo de Archivo: pdf varios chip i2c.pdf (63,7 KB (Kilobytes), 13 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.