Você está na página 1de 5

O protocolo I2C

1 - Introdução

O protocolo I2C ou I2C, também chamado IIC, foi criado para possibilitar a
comunicação entre circuitos integrados com um número reduzido de fios, reduzindo
o número de terminais dos componentes, o número de trilhas e o tamanho da placa,
consequentemente reduzindo o custo. Este protocolo foi inventado pela Philips
Semiconductor, agora chamada NXP Semiconductors. A partir de 2006 nenhuma
taxa é cobrada pela NXP para utilização do protocolo, porém, os endereços dos
novos dispositivos criados requerem o pagamento de taxa para alocação e registro
na NXP.
Como exemplo de utilização vamos considerar o circuito integrado PT2313
fabricado pela Princeton Technology Corporation. O PT2313 é um processador de
áudio com 4 canais que permite o controle de volume, equalização de som, escolha
de entrada, balanço e fader.

Fig. 1 – Diagrama em blocos e pinos do circuito integrado PT2313.

Como possui processador interno para controle das funções, este circuito
integrado precisa receber e enviar informações de um outro circuito integrado para
obter instruções e informar o estado atual dos ajustes. Para esse fim, o PT2313
utiliza uma porta de comunicação com protocolo I2C, como pode ser visto em
destaque na figura 1 com o diagrama em blocos e pinos do circuito integrado.
Ainda como exemplo, podemos citar o processador LPC1313 da NXP.

Fig. 2 – Processador ARM Cortex-M3 LPC1313 da NXP

Este processador pode controlar vários dispositivos e executar muitas tarefas


em diversas áreas. No nosso exemplo, ele irá controlar um rádio automotivo
completo. Para controlar o volume, equalização e outras funções de som, o
dispositivo se comunica com o circuito de som pelo protocolo I2C.
Fig. 3 – Interligação entre os circuito integrados LPC1313 e PT2313.

2 - O barramento I2C

O barramento I2C utiliza além do terra duas linhas bidirecionais chamadas


de SDA ( serial data ) e SCL ( serial clock line ) que devem receber resistores de
Pull-up, ou seja, um resistor que alimenta a linha com tensão de 5V ou 3,3V. Com
relação à configuração física, todos os dispositivos são ligados em paralelo no
barramento como ilustra a imagem abaixo.

Fig.4 – Ligação dos dispositivos no barramento I2C.

Na figura 4 podemos ver um dispositivo mestre ( C Master) e vários


dispositivos escravos (Slave). As duas resistências Rp, resistências de pull up
alimentam o barramento com a tensão fornecida em Vdd. Os endereços dos
dispositivos possuem 7 bits ou 10 bits e tem como padrão uma taxa de transmissão
de 100Kbps (standard mode). Taxas menores são permitidas. Uma nova geração de
dispositivos, está sendo implementada utilizando taxas de transmissão de 400Kbit/s
(fast mode) e 3,4Mbit/s (high speed mode). Porém, no momento atual (2015) a
maioria dos dispositivos do mercado utilizam uma taxa de 100Kbps.
Vale lembrar que, o padrão I2C é muito comum em sistemas embarcados e
praticamente não é utilizado em PCs. A grande vantagem com relação ao SPI é a
utilização de somente 2 fios + terra independente do número de dispositivos, o SPI
necessita de um pino adicional para cada dispositivo ligado ao barramento.
3 - Modo de operação

Para fazer a programação e identificar possíveis defeitos nos circuitos é


necessário entender seu funcionamento. Existe um dispositivo mestre responsável
por gerar o clock e iniciar a comunicação e um dispositivo slave que recebe o pulso
de clock e responde ao dispositivo mestre quando seu endereço for o mesmo
enviado pelo mestre. Cada dispositivo é identificado por um endereço pré-definido e
registrado na NXP. Este endereço é composto por 7 bits.
Primeiramente o master sinaliza um “START condition” ou sinal de
inicialização, em seguida envia o endereço do dispositivo que deverá receber os
dados e uma indicação informando se é uma operação de leitura ou escrita. Todos
os CI´s recebem esta informação e comparam o endereço com seu próprio
endereço, assim somente o disposto com o endereço correspondente irá responder.

Fig. 5 – Descrição de um sinal I2C.

Quando o dispositivo slave reconhece seu endereço, ele responde ao master


com um sinal ACK (acknowledge). A partir deste instante os dados são transmitidos
do master para o slave no caso de escrita ou do slave para o master no caso de
leitura, sempre com um ACK ao final de 8 bits. Para finalizar a transmissão um sinal
de STOP é enviado. Perceba que a condição de Start ocorre quando o sinal de SCL
esta fixo em 1 e o sinal em SDA muda de 1 para 0. O sinal de STOP é o inverso, ou
seja, o sinal de SCL está fixo em 1 e o sinal em SDA muda de 0 para 1.

4 – Definição do master e o slave

Em um barramento I2C podem existir vários dispositivos master sem que


ocorram conflitos. Ao contrário do SPI, qualquer dispositivo pode iniciar a
comunicação. Como os dispositivos funcionam com circuito open drain na saída, ou
seja aterram o sinal do barramento, um conflito pode ocorrer sem danificar os
componentes e este é facilmente detectável pois o dispositivo pode monitorar sua
própria transmissão.
5 – A limitação dos endereços

Um endereçamento de somente 7 bits permite a utilização de somente 128


dispositivos. Como cada dispositivo possui um endereço físico registrado na NXP,
teoricamente existiriam somente 128 tipos de CI´s no mundo utilizando I2C. Para
contornar este problema foi criado um endereçamento de 10 bits que funciona da
seguinte forma:

- Um endereço iniciado por 11110 indica um endereço de 10 bits


- Os dois próximos bits são os dois primeiros bits de endereço.
- Após o ACK são enviados os 8 bits de endereço restantes.

Fig. 6 – Formato do endereçamento de 10 bits.

Além do endereço iniciado por 11110 os seguintes endereços são reservados:

Fig. 7 – Endereços reservados pela NXP.

Maiores detalhes podem ser obtidos no I2C User Manual no site da NXP:

http://www.nxp.com/documents/user_manual/UM10204.pdf