EDITAR: Esto se ha repetido varias veces, por lo que lo coloca en la parte superior: Sí, es bien sabido que no existe un "estándar" para los conectores entre dispositivos I2C, pero seguramente esta comunidad puede formular una lista de puntos de "orientación" para hacer tales interconexiones, en función del comportamiento de la señal, la minimización del ruido y la mitigación del riesgo debido a conexiones incorrectas.
NXP definió el estándar I2C sin especificar un pin-out para los conectores I2C, según tengo entendido. La única guía de NXP parece ser una mención de colocar un Ground y / o Vss entre SDA y SCL si Vss / Gnd se transportan a través de la interconexión.
Las compras de varios módulos I2C me dejaron con una variedad de pines I2C y un poco de tarea para realizar un seguimiento de las varias pequeñas cuñas de conmutación de cable plano que he tenido que hacer para ellos.
p.ej
- Módulo OLED mono: SCL, SDA, GND, 5V (obviamente no es ideal, ya que el reloj y los datos están uno al lado del otro.
- Protector de sensor para Arduino: SDA, SCL, GND, 5V (nuevamente no es ideal, más SCL / SDA conmutado)
- Módulo LCD en color: SCL, GND, 5V, SDA (¡Sí!)
- Repetidor I2C sin nombre: SCL, 5V, GND, SDA (¡ay, cambiaron los pines de alimentación! Casi dejaron escapar la magia).
Entonces mi pregunta es la siguiente :
¿Existe una directriz definitiva / autorizada para la secuencia de pin-out del conector I2C de 4 pines para usar, donde tanto Vss como GND deben transportarse de host a dispositivo?
De lo contrario, ¿hay algún directorio, por incompleto que sea, de los módulos / dispositivos I2C que enumere el pin-out que cada uno ha adoptado?
Aclaración: Buscando pautas como "acercar Vss a SCL porque ..." en lugar de un estándar definido que claramente no existe.
fuente
Respuestas:
Recientemente he rodado el mío en lo que respecta a los conectores I2C. El conector en sí no es muy importante, en este momento solo estoy usando un encabezado de paso de 100mil (generalmente hembra a bordo, por lo que no es tan molesto cuando no está conectado), pero cualquier conector de 4 pines servirá. Además, estoy usando el P82B715de TI como un extensor de bus I2C. Esto supera los problemas de capacitancia asociados con la ejecución de largos abandonos de I2C, que como la gente ha estado diciendo, I2C no estaba destinado inicialmente. Intenté muchas combinaciones diferentes, como en los ejemplos que dio 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 aumento de los voltajes (cuando se producirán interferencias) en el bus es mucho más pequeño que una longitud de bits. Entonces, eso puede no ser lo que desea escuchar, pero ofrece más opciones. Personalmente, utilicé [VCC, SDA, GND, SCL] para enrutarme fácilmente a / desde este chip y también ser inmune a una mezcla de VCC / GND cuando se conecta al revés.
fuente
Cuando se estableció por primera vez, el bus I2C (circuito integrado) solo tenía la intención de conectar chips en un solo conjunto de PCB. Nunca fue diseñado para usarse en cables para conectar múltiples tarjetas juntas, y por lo tanto, no se definieron conectores para ese propósito.
Las únicas interfaces externas "estándar" basadas en I2C que conozco son el ACCESS.bus de corta duración para conectar dispositivos de interfaz de usuario a computadoras y el canal de datos de visualización VESA utilizado para recuperar información del monitor a través de conectores VGA, DVI y HDMI.
fuente
Sin pin-out estándar, sin conector estándar. El estándar I2C no es realmente adecuado para este tipo de cosas. Se especifica a nivel de bus, no a nivel de dispositivo. Por ejemplo, cuando desea conectar un dispositivo I2C, ¿sabe de manera estándar si los pullups están en el host o en el dispositivo? No. Muchas otras cosas que no sabes, como dónde están tus capacidades de cable, qué Vcc necesita ser ...
De hecho, incluso hay dispositivos I2C que necesitan líneas adicionales para interrupciones y otras E / S digitales antiguas. ¿Cómo los agrega al estándar si no puede llegar a un acuerdo sobre cuántos pines necesita?
En pocas palabras, si busca portabilidad y estabilidad en sus interconexiones, I2C y SPI no están donde necesita buscar.
fuente
Muchas personas usan algún tipo de conector para transportar señales I²C y energía entre dos PCB. Por ejemplo,
Algunos consejos generales para transportar señales I²C a distancias más largas:
ps: veo que Wikipedia: la interconexión del circuito I²C se ha vinculado a esta pregunta.
fuente
Si bien no hay un pinout I²C o un conector estándar, hay bastantes lugares donde se utiliza I²C que están estandarizados. Algunos que vienen a la mente son los módulos de memoria (DIMM, SO-DIMM), los conectores de video ( DDC en DVI , VGA ) y SM-Bus (sí, su página web parece algo que un niño hizo a mediados de los 90). En particular, el conector del bus SM está codificado y contiene solo 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 enchufes propietarios más, como los sensores Lego NXT.
fuente
No hay un estándar.
No hay práctica común.
En cuanto a los problemas para decidir qué hacer:
fuente
Como es habitual en cualquier publicación que pregunte por qué algo está [nt] estandarizado:
desde XKCD
fuente