terça-feira, 6 de março de 2012

O protocolo I2C (I)

O protocolo I2C (“Inter Integrated Circuit bus”) é um padrão de interface serial de 2 fios; foi criado pela Philips Semiconductors no início da década de 1980, e visava facilitar a comunicação das CPUs de aparelhos de TV digital com seus chips periféricos.

Fisicamente, o protocolo é constituído por 2 sinais (clock e dados) mais o terra comum. Os dois sinais (SDA - Serial DAta line e SCL - Serial CLock line) são bidirecionais e permitem a comunicação em full duplex entre diversos dispositivos. O barramento I2C é multi-master, ou seja, qualquer dispositivo conectado pode ser o master e comandar os demais, com a restrição (óbvia) de que haja um dispositivo master de cada vez. A freqüência de transferência de dados é baixa - tipicamente 100kHz a 400kHz.

Cada dispositivo requer um endereço único (que era fixo nos dispositivos da Phillips - mas as implementações do protocolo, por exemplo a biblioteca Wire do Arduino, permitem que cada dispositivo conectado determine seu próprio endereço). Uma rede I2C pode comportar no máximo 127 dispositivos (existem alguns endereços reservados); no entanto, há uma restrição mais concreta: a capacitância máxima da rede I2C é de 400 pF; caso contrário, atrasos e deformações no sinal tornam a comunicação inviável. Cada dispositivo a ser conectado tem uma capacitância interna de no mínimo 10 pF, e há de se considerar ainda a capacitância do cabeamento que conecta os chips ou periféricos. Na prática, algumas poucas placas funcionarão com um cabeamento de no máximo 2 ou 3 metros, o que é mais que suficiente para estudantes e hobbystas.

O dispositivo master é o que (naquele momento) controla as comunicações, ou seja, controla a transferência dos dados e emite o sinal de clock; o dispositivo controlado é o slave. O master pode transmitir ou receber sinais de um slave selecionado, ou coordenar a transferência de sinais entre dois slaves, onde um é o emissor e o outro é o receptor.

O protocolo exige que cada uma das 2 linhas (SDA e SCL) sejam conectadas à alimentação por um resistor (normalmente 1.5 Kohms).

Revisões recentes do I2C podem manipular velocidades maiores (400 kbit/S Fast mode, 1 Mbit/S Fast mode plus ou Fm+, e 3.4 Mbit/S High Speed mode), além de outras novidades, como endereçamento de 10 bits.

Nenhum comentário:

Postar um comentário