Estoy diseñando una placa basada en arduino que usará mucho el puerto I2C. Quiero poder conectar varios dispositivos esclavos y / o conectar varias placas madre juntas (al menos 4 sería genial). El I2C se ejecutará a 400 kHz a 3.3V. El cable plano entre las tablas puede tener hasta 2 metros de largo.
Editar: Cuando digo que planeo usar 4 placas principales al mismo tiempo, solo 1 de ellas será la maestra / host.
- Tire hacia arriba las resistencias
Mi problema no es realmente elegir el valor correcto de la resistencia de pullup (para eso encontré este interesante artículo ). Es más sobre "diseño patern".
De acuerdo con el artículo mencionado anteriormente, debería usar una resistencia entre 4.7kR y 1.5kR. Está bien siempre y cuando solo tenga una placa principal con sus pull-ups y esclavos sin pullups, pero si conecto varias placas principales juntas, la resistencia de pull-up estará en paralelo, y luego demasiado baja.
¿Debo agregar algunos puentes para habilitar / deshabilitar las resistencias de pull-up? No me gusta esta solución, ocupa espacio en la PCB y no es útil. Y quiero que mi tablero sea fácil de usar, simplemente conecte las cosas y todo funciona.
Si utilizo resistencias de 4.7 kR y conecto 4 placas principales, tendré una recuperación equivalente de 1.2 kR, que es bastante baja, y luego consumirá más corriente (mi dispositivo funciona con batería), los dispositivos tengo que hundir toda esa corriente (no puedo predecir la capacidad de sumidero de los esclavos que se conectarán al puerto I2C).
- Cable blindado
¿Debo usar cable blindado entre dispositivos ya que será bastante largo (hasta 2 metros) y el voltaje será bastante bajo (3.3V)?
- Conector
Finalmente, no encontré ningún conector I2C "normal". El más común parece ser el conector SIL de 4 pines con pines en ese orden: GND, VCC, DATA, CLOCK (en grove de seeed o tinkerkit por ejemplo). Me parece bien, pero cualquier sugerencia es bienvenida.
- Naming
Pregunta de bonificación: ¿debo escribir "I2C" o "TWI" en mi PCB? Según wikipedia, TWI parece ser una implementación incompleta del protocolo I2C. Tinkerkit usa "TWI", pero "I2C" parece ser más común en electrónica.