¿Existe alguna guía definitiva para el pin-out de I2C? No busco un “STANDARD”

14

EDITAR: Esto se ha repetido varias veces, así que poniéndolo en la parte superior: Sí, es bien sabido que no hay un "estándar" para I2C conectores entre dispositivos, pero seguramente esta comunidad puede formular una lista de puntos de "guía" para realizar dichas interconexiones, según el comportamiento de la señal, la minimización del ruido y la mitigación del riesgo debido a conexiones incorrectas.

NXP definió el I2C standard sin especificar un pin-out para conectores I2C, es mi entendimiento. 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 transporta 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 pequeñas cuñas de conmutación de cable de cinta que he tenido que hacer por ellos.

por ejemplo

  • 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.
  • Sensor Shield para Arduino: SDA, SCL, GND, 5V (de nuevo, no es ideal, más SCL / SDA conmutados)
  • Módulo LCD a color: SCL, GND, 5V, SDA (¡Yay!)
  • Repetidor I2C sin nombre: SCL, 5V, GND, SDA (¡ay, cambiaron las clavijas de alimentación! Casi dejan que la magia salga)

Así que mi pregunta es esta :
¿Existe una guía definitiva / autoritativa para el uso de la secuencia pin-out del conector I2C de 4 pines, donde tanto el Vss como el GND deben ser transportados del host al dispositivo?

Si esto falla, ¿existe algún directorio, aunque esté incompleto, de módulos / dispositivos I2C que incluyan el pin-out que cada uno haya adoptado?

Aclaración: Buscando pautas como "acercar Vss a SCL porque ..." en lugar de un estándar definido que claramente no existe.

    
pregunta Anindo Ghosh

7 respuestas

13

Recientemente he rodado mi propio en cuanto a los conectores I2C. El conector en sí no es muy importante, en este momento solo estoy usando un encabezado de paso de 100 millas (generalmente hembra en la placa, así que no es tan molesto cuando no está conectado), pero cualquier conector de pin 4plus funcionará. Además, estoy usando el P82B715 de TI como extensor de bus I2C. Esto supera los problemas de capacitancia asociados con la ejecución prolongada de caídas de I2C, lo que, como se ha dicho, I2C no estaba destinado inicialmente. Intenté muchas combinaciones diferentes, como en los ejemplos que dio y 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 ocurrirán interferencias) en el bus es mucho más pequeño que la longitud de un bit. Por lo tanto, puede que eso no sea lo que usted quiere escuchar, pero sí ofrece más opciones. Personalmente, fui con [VCC, SDA, GND, SCL] para ser fácilmente enrutado a / desde este chip y también ser inmune a una mezcla de VCC / GND cuando se enchufa al revés.

    
respondido por el Samuel
11

Cuando se estableció por primera vez, el bus I2C (Circuito Inter-Integrado) solo estaba destinado a Conecte los chips en un solo ensamblaje de PCB. Nunca fue diseñado para ser usado en cables para conectar varias 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 las ACCESS.bus para conectar dispositivos de interfaz de usuario a computadoras y el Canal de Datos de Pantalla VESA utilizado para recuperar información del monitor a través de VGA, DVI y HDMI conectores.

    
respondido por el Dave Tweed
4

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 por norma si los controles están en el host o en el dispositivo? No. También hay muchas otras cosas que no sabes, como dónde están las capacidades de tu cable, qué necesita Vcc ...

De hecho, incluso hay dispositivos I2C que necesitan líneas adicionales para interrupciones y otras E / S digitales simples. ¿Cómo agregarlos al estándar, si no puede llegar a un acuerdo sobre la cantidad de pines que necesita?

Conclusión, si busca portabilidad y estabilidad en sus interconexiones, I2C y SPI no están donde debe buscar.

    
respondido por el Scott Seidman
3

Si bien no hay un pinout I²C o un conector estándar, hay algunos lugares donde se usa I²C que están estandarizados. Algunos de los que vienen a la mente son módulos de memoria (DIMM, SO-DIMM), 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 SM-bus está codificado y contiene solo I²C y alimentación, pero SM-Bus impone restricciones adicionales, así que técnicamente no todas El dispositivo I²C debe estar conectado a un SM-Bus real. También existen algunos otros enchufes patentados, como los sensores Lego NXT.

    
respondido por el Yann Vernier
2

No hay estándar.

No hay una práctica común.

En cuanto a los problemas para decidir qué hacer:

  1. Mantenga las señales en una placa como si estuvieran destinadas a estar en primer lugar. Las líneas IIC tienen una impedancia bastante alta, tienen un solo extremo y, por lo tanto, son susceptibles al ruido y no terminan bien las líneas de transmisión. IIC simplemente no es para irse a bordo.

  2. Si vas a bajar del barco de todos modos, mantén el autobús corto. Unos centímetros probablemente esté bien. Un metro o más realmente está pidiendo problemas.

  3. Manténgase alejado de las líneas alejadas de fuentes de ruido No los envuelva alrededor de un motor, por ejemplo, ni intente acercarse a uno.

  4. Use un conector que no se pueda conectar hacia atrás. Si alguien puede enchufarlo al revés, alguien lo hará.

  5. El cable de cinta es probablemente el más fácil de usar. Necesita tres cables como mínimo, SCL, SDA y tierra. Agregar poder es probablemente una buena idea. En cualquier caso, asegúrese de que el cable de conexión a tierra esté entre SCL y SDA para evitar interferencias. El cable de alimentación no debe ser ruidoso, así que péguelo en un lado, no importa cuál.

  6. Después de jugar con los conectores y buscar posibles problemas, comprenda que el punto 1 era en realidad el único que necesitaba saber.

respondido por el Olin Lathrop
2

Muchas personas usan algún tipo de conector para transportar señales I²C y alimentar entre dos PCB. Por ejemplo,

Algunos consejos generales para transportar señales de I²C en distancias más largas:

ps: veo que Wikipedia: interconexión del circuito I²C se ha vinculado a esta pregunta.

    
respondido por el davidcary
1

Como es habitual en cualquier publicación que pregunte por qué algo está [nt] estandarizado:

From XKCD

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas