Entendendo o protocolo I2C

O protocolo I2C é muito utilizado em projetos envolvendo Arduino, então que tal a gente aprender mais sobre ele? Este protocolo funciona a partir de um barramento de comunicação serial com conexão a dois fios, criado nos anos 90 pela Philips. Utilizando este protocolo, é possível conectar dispositivos periféricos que possuem baixa velocidade de comunicação à placas-mãe, microcontroladores e outros circuitos de aquisição e gestão de dados.

Como mostrado em nosso tutorial para a utilização do módulo GY-521, os dispositivos com comunicação I2C possuem os pinos SDA e SCL e alimentação (VDD), tipicamente de 3.3V ou 5V. Os fios de comunicação possuem pull-ups, isso significa que na ausência sinal, os pinos SCL e SDA estarão com tensão igual a 5V, conforme imagem abaixo:

O número de “nós” (ou dispositivos conectados na rede) possui um limite de dados até 16 bits, tento também restrição quanto à distância de comunicação, no qual os cabos não sejam maiores que alguns metros, pois neste caso, a capacitância nos mesmos poderia ser maior que 400pF (capacitância máxima nos cabos de comunicação do protocolo).

O protocolo I2C adota o tipo de comunicação mestre-escravo, sendo o mestre, responsável por efetuar a requisição de dados/tarefas dos escravos.

A linha SCL é responsável pelo clock do barramento, gerando os pulsos que o sistema necessita para caminhar em cada passo da comunicação e, o pino SDA transmite os dados propriamente ditos. Note na imagem abaixo, o layout da comunicação entre o dispositivo mestre (master) e escravos (slaves), interconectados no barramento I2C.

Fonte: Fórum Laboratório de Garagem

Inicialmente, os pinos da linha SDA e SCL encontram-se em 5V (ou nível lógico alto) e, no início da comunicação, o mestre os comutam para 0V (ou nível lógico baixo).

O sistema possui um padrão de início e término de cada pacote de dados a serem enviados, conforme mostra a imagem abaixo.

Fonte: UNIVASF, Universidade Federal do Vale do São Francisco

Note que logo após do SDA ser comutado pra nível baixo, leva um tempo até que o SCL seja também levado para baixo. Assim, inicia-se o processo de comunicação, no qual o mestre envia o endereço do escravo a ser comunicado e, caso dispositivo exista, o mesmo irá retornar um aviso, ou um pulso no pino SCL, começando assim a transferência de dados entre o mestre o escravo.

A velocidade de comunicação pode chagar até 5Mhz, no entanto, placas mãe costumam utilizar baixas velocidades, na casa dos Khz. Já sistemas embarcados costumam utilizar o máximo da capacidade de taxa de transmissão.

Referências

UNIVASF, Universidade Federal do Vale do São Francisco

Fórum Laboratório de Garagem

Sobre Leandro Castro 2 artigos
Engenheiro de Controle e Automação. Trabalhou no SENAI como professor dos cursos de Automação Industrial, Eletromecânica, Instalações Elétricas Prediais e Industriais, Mecânico de Refrigeração e Desenho. Atuou como pesquisador na área de sistemas de energia alternativa na empresa Globaltek e pesquisador convidado no SENAI Riachuelo – RJ.

2 Trackbacks / Pingbacks

  1. Entendo o funcionamento do sensor inclinação (Giroscópio) com Arduino – Blog Arduino Ômega
  2. Raspberry Pi 4 GPIO - Os primeiros passos - Blog Arduino Ômega

Deixe uma resposta

O seu endereço de email não será publicado.


*