Protocolo I2C

Publicado: 14 de outubro de 2010 em Protocolos

Protocolo I²C ou IIC

O protocolo I²C foi desenvolvido pela Philips em 1996, e veio para ficar pois este permite uma boa modelarização das comunicações, baixando o tempo e custo de desenvolvimento de dispositivos, assim como uma grande flexibilidade no funcionamento, consumindo pouca corrente, e sendo bastante imune a ruídos.

Deixemos-nos de teorias pois não é o objectivo deste artigo, existe muita informação sobre este barramento e por isso vamos tentar apenas criar aqui um local de fácil compreensão e consulta do protocolo.

Começamos então pelo modo Standard, ou Single Master.

O barramento é conhecido por utilizar apenas dois fios para comunicação entre vários dispositivos electrónicos (128 slaves creio eu devido à estrutura que iremos analisar mais à frente.), mas contudo este necessita de 4 fios, dois de alimentação, e os dois fios de dados.

Estes são então:

  • VCC (normalmente +5V)
  • GND (massa comum entre os equipamentos, muito importante para que quando os dispositivos queiram dizer zero, o consigam dizer de forma perceptível para todas as outras máquinas)
  • SDA (Serial DAta Line)
  • SCL (Serial CLock)

No esquema a baixo pode-se facilmente identificar a estrutura da rede:

R –> pullup opcional, raramente são mencionadas mas devem de se usar entre 4KOhm a 10KOhm.

Assim, como na maioria dos barramentos, meter um fio a VCC (quer este seja a 5V ou até mesmo a 3,3V, pois testei a utilização de 3,3V para este barramento e funciona sem quaisquer problemas, mesmo com um master a comunicar e a ler entre 0V~5V) significa mete-lo a HIGH, ou a estado binário 1 (um).

E como é de calcular, se os estados são binários, serão o oposto ou seja meter um fio a GND (0V quer para um circuito entre 0V~5V quer para entre 0V~3,3V) significa mete-lo a LOW, ou estado 0 (zero).

Assim passo a mostrar o esquema de comunicações:

Passando então a explicar:

  • Start bit é gerado pelo Master
  • 7 bits de endereço são dados pelo master para dizer com que slave pretende comunicar
  • 1 bit indica se existe intenção de escrita ou de leitura nesse dispositivo
  • slave após se ter identificado com aquele endereço diz que tomou conhecimento
  • 1 byte (8 bits) de dados são mandados para o slave ou pelo salve dependendo da intenção anterior de R/W
  • após cada thread de dados um ack bit é dado pelo outro dispositivo para dizer que recebeu o byte inteiro
  • a tarefa repete-se desde o ponto 5 até que seja dado o stop bit representado por um Fim no esquema

Bits de start e de stop:

Outras condições de estado:

  • SDA só pode variar com SCL a LOW, e quando SCL subir SDA tem que se manter estável até que SCL desça. Qualquer variação de SDA enquanto SCL esta a HIGH será interpretado como um START ou STOP bit.
  • O dispositivo que está endereçado naquele momento ou acaba de ficar endereçado deve de responder com um acknowledge bit após cada byte transmitido. O master gerará um SCL extra após cada byte, ao qual o slave deverá fazer pull down do SDA para que o master saiba que o byte foi bem recebido.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s