I2C, que significa Inter-Integrated Circuit, é um protocolo de comunicação serial amplamente utilizado que permite a comunicação entre vários dispositivos usando uma interface de dois fios. É comumente utilizado para conectar periféricos de baixa velocidade a uma placa-mãe, sistemas embarcados ou microcontroladores.
O I2C emprega uma arquitetura mestre-escravo, onde um dispositivo atua como mestre e inicia a comunicação, enquanto os outros dispositivos atuam como escravos e respondem às solicitações do mestre. O protocolo suporta configurações multi-mestre, o que significa que vários dispositivos podem ser conectados ao mesmo barramento, permitindo que se comuniquem uns com os outros.
Os dois fios essenciais no barramento I2C são:
A comunicação I2C pode ocorrer em diferentes velocidades, comumente referidas como velocidades do barramento I2C. As velocidades de barramento mais comuns são Modo Padrão (até 100 kbit/s), Modo Rápido (até 400 kbit/s) e Modo de Alta Velocidade (até 3,4 Mbit/s).
O protocolo I2C usa um mecanismo de início-parada para estabelecer a comunicação entre os dispositivos mestre e escravo. A condição de início indica o começo da transferência de dados, enquanto a condição de parada marca o fim. O processo de comunicação envolve os seguintes passos:
Condição de Início: O dispositivo mestre inicia a comunicação enviando uma condição de início. Ele puxa a linha SDA para baixo enquanto a linha SCL permanece alta.
Endereçamento: Após a condição de início, o mestre envia o endereço de 7 bits do dispositivo escravo com o qual deseja se comunicar, seguido por um bit de leitura ou escrita. O bit de leitura indica que o mestre deseja ler dados do escravo, enquanto o bit de escrita indica que o mestre deseja escrever dados no escravo. Cada dispositivo escravo no barramento tem um endereço único.
Reconhecimento: Uma vez que o escravo com o endereço especificado recebe os bits de endereço, ele responde com um bit de reconhecimento (ACK). O ACK é um puxamento para baixo na linha SDA pelo dispositivo escravo.
Transferência de Dados: Após o processo de endereçamento, o mestre e o escravo podem transferir dados entre si. Os dados são transmitidos em segmentos de 8 bits, e cada segmento é seguido por um ACK do dispositivo receptor. Este processo continua até que o mestre decida parar a comunicação.
Condição de Parada: O dispositivo mestre gera uma condição de parada puxando a linha SDA para cima enquanto a linha SCL permanece alta. A condição de parada informa aos escravos que a comunicação terminou.
É importante notar que durante a transferência de dados, a linha SDA só pode mudar quando a linha SCL está baixa. Isso garante uma comunicação sincronizada entre os dispositivos mestre e escravo.
O I2C é amplamente utilizado em vários sistemas eletrônicos para comunicação entre circuitos integrados. Algumas das aplicações comuns do I2C incluem:
O I2C é comumente usado para se comunicar com uma ampla gama de sensores, como sensores de temperatura, sensores de umidade e acelerômetros. Esses sensores podem fornecer dados sobre seus respectivos parâmetros, permitindo que os dispositivos conectados tomem decisões informadas com base nas informações recebidas.
Muitos módulos de display, como displays LCD e OLED, podem ser interfacados usando o I2C. Isso simplifica a integração de displays em diferentes sistemas, pois o protocolo I2C permite uma comunicação fácil entre o módulo de display e o dispositivo de controle.
O I2C é frequentemente utilizado para programar e ler chips EEPROM (Electrically Erasable Programmable Read-Only Memory). As EEPROMs são dispositivos de memória não volátil que podem armazenar dados mesmo quando a energia é removida. O protocolo I2C facilita a transferência eficiente de dados entre o dispositivo de controle e a EEPROM.
O I2C é utilizado em relógios de tempo real para fornecer funções precisas de cronometragem em vários dispositivos. Esses relógios podem manter informações de tempo e data precisas e são comumente usados em aplicações como registro de dados, agendamento e operações sensíveis ao tempo.
O I2C (Inter-Integrated Circuit) é um protocolo de comunicação serial amplamente utilizado que permite que dispositivos se comuniquem entre si usando uma interface de dois fios. Ele possui uma arquitetura simples e suporta configurações multi-mestre, permitindo flexibilidade na conexão de múltiplos dispositivos a um único barramento. O I2C é comumente usado em aplicações como interfaciamento de sensores, módulos de display, programação EEPROM e relógios de tempo real. Embora o I2C tenha suas limitações, continua sendo uma escolha popular para comunicação de baixa velocidade em vários sistemas eletrônicos.