EDIT: Isso foi repetido várias vezes, colocando-o no topo: Sim, é sabido que não há um "padrão" para conectores entre dispositivos I2C, mas certamente essa comunidade pode formular uma lista de pontos de "orientação" para fazer essas interconexões, com base no comportamento do sinal, minimização de ruído e mitigação de risco devido a conexões incorretas.
NXP definiu o padrão I2C sem especificar uma pinagem para conectores I2C, é o meu entendimento. A única orientação do NXP parece ser uma menção à colocação de um terra e / ou Vss entre SDA e SCL se Vss / Gnd forem transportados pela interconexão.
A compra de vários módulos I2C me deixou com uma variedade de pin-outs I2C, e um pouco de uma tarefa para acompanhar os vários calços de comutação de cabos de fita que tive que fazer para eles.
por exemplo
- Módulo OLED mono: SCL, SDA, GND, 5V (obviamente não é o ideal, pois o relógio e os dados estão próximos um do outro.
- Blindagem do sensor para Arduino: SDA, SCL, GND, 5V (novamente não ideal, mais SCL / SDA comutado)
- Módulo LCD colorido: SCL, GND, 5V, SDA (Yay!)
- Repetidor I2C sem nome: SCL, 5V, GND, SDA (ouch, eles trocaram de pinos de alimentação! Quase deixaram a mágica sair.)
Portanto, minha pergunta é a seguinte :
Existe uma diretriz definitiva / autorizada para a seqüência de pinos do conector I2C de 4 pinos usar, em que o Vss e o GND devem ser transportados do host para o dispositivo?
Caso contrário, existe algum diretório, ainda que incompleto, de módulos / dispositivos I2C que listem a pinagem adotada por cada um?
Esclarecimento: Procurando diretrizes como "aproxime o Vss do SCL porque ..." em vez de um padrão definido que claramente não exista.
fonte
Respostas:
Recentemente, criei o meu próprio tanto quanto os conectores I2C. O conector em si não é muito importante, agora estou apenas usando o cabeçalho de inclinação de 100mil (geralmente fêmea a bordo, para que não seja tão esquisito quando não conectado), mas qualquer conector de 4 pinos serve. Além disso, estou usando o P82B715da TI como extensor de barramento I2C. Isso supera os problemas de capacitância associados à interrupção prolongada do I2C, o que, como as pessoas dizem, o I2C não foi planejado inicialmente. Tentei muitas combinações diferentes, como nos exemplos que você deu e não notei absolutamente nenhuma diferença no desempenho. Eu acredito que isso ocorre porque o I2C é relativamente lento, a interferência entre SDA e SCL não é um problema. Basicamente, o tempo de subida das tensões (quando ocorrerá interferência) no barramento é muito menor do que o comprimento de um bit. Portanto, pode não ser o que você deseja ouvir, mas oferece mais opções. Pessoalmente, fui com [VCC, SDA, GND, SCL] para ser facilmente roteado para / a partir desse chip e também ficar imune a uma mistura de VCC / GND quando conectado a trás.
fonte
Quando foi estabelecido, o barramento I2C (Circuito Integrado) era destinado apenas a conectar chips em um único conjunto de placas de circuito impresso. Ele nunca foi projetado para ser usado em cabos para conectar várias placas e, portanto, nenhum conector para esse fim foi definido.
As únicas interfaces externas "padrão" baseadas em I2C que eu conheço são o ACCESS.bus de curta duração para conectar dispositivos de interface de usuário a computadores e o VESA Display Data Channel usado para recuperar informações do monitor através de conectores VGA, DVI e HDMI.
fonte
Sem pinagem padrão, sem conector padrão. O padrão I2C não é propenso a esse tipo de coisa. É especificado no nível do barramento, não no nível do dispositivo. Por exemplo, quando você deseja conectar um dispositivo I2C, você sabe por padrão se os pullups estão no host ou no dispositivo? Não. Muitas outras coisas que você também não sabe, como onde estão as capacitâncias do cabo, o que Vcc precisa ser ....
De fato, existem até dispositivos I2C que precisam de linhas extras para interrupções e outras E / S digitais antigas. Como você os adiciona ao padrão, se você não consegue obter um acordo sobre quantos pinos precisa.
Resumindo, se você está procurando portabilidade e estabilidade em suas interconexões, I2C e SPI não estão onde você precisa procurar.
fonte
Muitas pessoas usam algum tipo de conector para transportar sinais de I²C e energia entre duas placas de circuito impresso. Por exemplo,
Algumas dicas gerais para transmitir sinais de I²C por distâncias maiores:
ps: Vejo que a interconexão do circuito Wikipedia: I²C está vinculada a essa pergunta.
fonte
Embora não exista padrão de pinagem ou conector de I²C, existem muitos lugares em que o I²C é usado, padronizados. Alguns que vêm à mente são módulos de memória (DIMM, SO-DIMM), conectores de vídeo ( DDC em DVI , VGA ) e SM-Bus (sim, sua página da Web parece algo feito por crianças em meados dos anos 90). Em particular, o conector do barramento SM é chaveado e contém apenas I²C e energia, mas o SM-Bus impõe restrições adicionais; portanto, tecnicamente, nem todos os dispositivos I²C devem ser conectados a um SM-Bus real. Também existem alguns plugues proprietários, como os sensores Lego NXT.
fonte
Não existe um padrão.
Não há prática comum.
Quanto aos problemas para decidir o que fazer:
fonte
Como sempre, para qualquer postagem perguntando por que algo é padronizado: a
partir do XKCD
fonte