I2C

Prós: requer apenas 2 pinos, vários dispositivos podem ser incluídos em um único barramento e permite comunicação bidirecional. Múltiplos dispositivos mestres são possíveis. Múltiplos dispositivos escravos são possíveis – sem o custo de pinos extras.

Contras: essa abordagem não é tão rápida quanto a SPI, os dispositivos podem ter conflitos de endereço e a configuração do software é necessária

Informações Gerais: I2C

I2C significa Circuito Inter-Integrado e é pronunciado "I ao quadrado C", "I dois C" ou "IIC". I2C é um protocolo que permite que um dispositivo troque dados com um ou mais dispositivos conectados através do uso de uma única linha de dados e sinal de clock.

I2C  é um protocolo mestre/escravo, o que significa que qualquer número de nós mestres pode estar presente. Além disso, as funções de mestre e escravo podem ser alteradas entre as mensagens.

I2C requer apenas duas conexões de comunicação:

Conexões de Comunicação I2C


SCL

Este é o sinal do relógio que mantém o dispositivo e o módulo sincronizados durante a transferência de dados. Os dois dispositivos precisam ter um entendimento mútuo de quão rápido os dados serão transferidos entre eles. Às vezes, isso é chamado de baudrate ou bitrate (taxa de bits). O sinal de relógio (clock) fornece o sinal de referência que os dispositivos usam ao trocar dados. Sem um sinal de relógio para sincronizar os dispositivos, eles não teriam como interpretar o sinal nas linhas de dados.

SDA

Esta é a linha de dados usada para troca de dados entre o mestre e os escravos. Em vez de ter linhas de comunicação separadas para os dispositivos mestre e escravo, ambos compartilham uma única conexão de dados. O mestre coordena o uso dessa conexão para que apenas um dispositivo esteja "falando" por vez.

Como vários dispositivos escravos podem usar a mesma linha SDA, o mestre precisa distinguir entre eles e falar com um único dispositivo por vez. O protocolo I2C usa o conceito de endereçamento de dispositivo para coordenar o tráfego na linha de dados.

Todo dispositivo I2C conectado ao microcontrolador do dispositivo terá um endereço interno que não pode ser igual a nenhum outro módulo conectado ao microcontrolador. Esse endereço geralmente é determinado pelo fabricante do dispositivo e listado na folha de dados. Às vezes, você pode configurar o endereço por meio de ajustes específicos do dispositivo definidos pelo fabricante.

Endereços de dispositivos I2C


O diagrama a seguir ilustra como os pinos SDA e SCL são alternados ao transferir dados com o protocolo I2C.

Fluxo de dados entre vários dispositivos I2C


Para iniciar uma transação de dados, o mestre cria o que é chamado de condição inicial puxando o pino SDA para baixo antes do pino SCL.

O mestre então transmite o endereço do dispositivo com o qual deseja se comunicar, enviando cada bit do endereço de 7 bits. Observe que o sinal de clock (SCL) é alternado para cada bit. Essa alternância é como os escravos sabem quando ler cada bit do endereço, para que possam determinar com qual dispositivo o mestre deseja se comunicar.

Logo após o endereço, o mestre envia um bit de leitura/escrita, que sinaliza se estará enviando dados para o escravo ou lendo dados do escravo.

Depois de transmitir o endereço, o mestre transmite os dados para o escravo ou envia o endereço de um registrador (armazenamento interno) no escravo do qual deseja recuperar os dados.

Finalmente, o mestre emitirá uma condição de parada no barramento puxando o SCL para cima, em seguida puxando o SDA para cima.

Last modified: Tuesday, September 27, 2022, 3:11 PM