18 votos

¿Existe alguna guía definitiva sobre las patillas I2C? No busco un "ESTÁNDAR".

EDITAR: Esto se ha repetido varias veces, por lo que ponerlo en la parte superior: Sí, es bien sabido que no existe una "norma" para los conectores I2C entre dispositivos, pero seguro que esta comunidad puede formular una lista de puntos "orientativos" para realizar dichas interconexiones, basada en el comportamiento de la señal, la minimización del ruido y la mitigación del riesgo debido a conexiones erróneas.


NXP definió el Norma I2C sin especificar un pin-out para los conectores I2C, es mi entendimiento. La única orientación de NXP parece ser una mención de la colocación de una tierra y / o Vss entre SDA y SCL si Vss / Gnd se llevan a través de la interconexión.

Las compras de varios módulos I2C me han dejado con una variedad de pin-outs I2C, y un poco de una tarea de seguimiento de las diversas pequeñas calzas de cinta-cable de conmutación que he tenido que hacer para ellos.

Por ejemplo

  • Módulo OLED mono: SCL, SDA, GND, 5V (obviamente no es lo ideal, ya que el reloj y los datos están uno al lado del otro.
  • Sensor Shield para Arduino: SDA, SCL, GND, 5V (de nuevo no es lo ideal, más SCL/SDA conmutados)
  • Módulo LCD en color: SCL, GND, 5V, SDA (¡Yay!)
  • Repetidor I2C sin nombre: SCL, 5V, GND, SDA (¡ay, cambiaron los pines de alimentación! Casi dejan salir el humo mágico).

Así que mi pregunta es la siguiente :
¿Existe una norma definitiva / autorizada directriz para la secuencia de pines del conector I2C de 4 pines que se debe utilizar, en la que tanto Vss como GND deben pasar del host al dispositivo?

En su defecto, ¿existe algún directorio, aunque sea incompleto, de módulos / dispositivos I2C en el que figure la distribución de patillas que ha adoptado cada uno?

Aclaración: Buscando directrices como "pon Vss más cerca de SCL porque..." en lugar de un estándar definido que claramente no existe.

20voto

FredB Puntos 496

Recientemente he hecho mi propio rollo en lo que a conectores I2C se refiere. El conector en sí no es muy importante, en este momento sólo estoy usando 100mil cabecera de paso (por lo general hembra en el tablero por lo que no es tan pokey cuando no está conectado), pero cualquier conector 4plus pin va a hacer. Además, estoy usando el P82B715 de TI como extensor de bus I2C. Esto supera los problemas de capacitancia asociados con la ejecución de largas gotas de I2C fuera de la placa, que como la gente ha estado diciendo, I2C no fue pensado inicialmente para. Probé muchas combinaciones diferentes, como en los ejemplos que diste y no noté absolutamente ninguna diferencia en el rendimiento. Creo que esto se debe a que I2C es relativamente lento, la interferencia entre SDA y SCL no es un gran problema. Básicamente, el tiempo de subida de los voltajes (cuando se producen interferencias) en el bus es mucho menor que la longitud de un bit. Por lo tanto, puede que no sea lo que quieres oír, pero ofrece más opciones. Personalmente me fui con [VCC, SDA, GND, SCL] para ser fácilmente enrutados hacia / desde este chip y también ser inmune a una mezcla de VCC / GND cuando se conecta al revés.

11voto

GSerg Puntos 33571

Cuando se creó, el Bus I2C (circuito integrado) sólo estaba pensado para conectar chips en un único conjunto de placas de circuito impreso. Nunca se pensó en utilizarlo en cables para conectar varias placas entre sí, por lo que no se definieron conectores para ese fin.

Las únicas interfaces externas "estándar" basadas en I2C que conozco son las efímeras ACCESO.bus para conectar dispositivos de interfaz de usuario a ordenadores y Canal de datos de pantalla VESA se utiliza para recuperar información del monitor a través de los conectores VGA, DVI y HDMI.

5voto

Jeremy Ruten Puntos 59989

Mucha gente utiliza algún tipo de conector para transportar señales I²C y alimentación entre dos PCB. Por ejemplo,

Algunos consejos generales para transportar señales I²C a grandes distancias:

p.d.: Veo que Wikipedia: Interconexión de circuitos I²C ha enlazado con esta pregunta.

4voto

shash Puntos 668

No hay conectores estándar. El estándar I2C no se presta a este tipo de cosas. Se especifica a nivel de bus, no a nivel de dispositivo. Por ejemplo, cuando quieres conectar un dispositivo I2C, ¿sabes por el estándar si los pullups están en el host o en el dispositivo? No. Hay muchas otras cosas que tampoco sabes, como dónde están las capacitancias de tus cables, qué Vcc necesita ser ....

De hecho, incluso hay dispositivos I2C que necesitan líneas adicionales para interrupciones y otras E/S digitales. ¿Cómo se añaden al estándar si no se llega a un acuerdo sobre cuántos pines se necesitan?

En resumen, si lo que buscas es portabilidad y estabilidad en tus interconexiones, I2C y SPI no son lo que necesitas.

3voto

Jordan S. Jones Puntos 1023

Aunque no existe un estándar de conectores o pinouts para I²C, hay bastantes lugares en los que se utiliza I²C que están estandarizados. Algunos que se me ocurren son los módulos de memoria (DIMM, SO-DIMM), los conectores de vídeo ( DDC en DVI , VGA ) y SM-Bus (sí, su página web parece hecha por un niño a mediados de los 90). En particular, la Conector de bus SM está codificado y sólo contiene I²C y alimentación, pero SM-Bus impone restricciones adicionales, por lo que técnicamente no todos los dispositivos I²C deben conectarse a un SM-Bus real. También existen algunos conectores propietarios, como los sensores Lego NXT.

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