Remove ads
Da Wikipédia, a enciclopédia livre
I²C (Inter-Integrated Circuit) é um barramento serial Barramento multimestre desenvolvido pela Philips que é usado para conectar periféricos de baixa velocidade a uma placa mãe, a um sistema embarcado ou a um telefone celular. O nome significa Circuito Inter-integrado e é pronunciado I-ao quadrado-C, ou I-dois-C. Desde o dia 1 de Outubro de 2006, nenhuma taxa de licenciamento é exigida para implementar o protocolo I²C, contudo, algumas taxas ainda são exigidas para obtenção de endereços escravos I²C.
Vários concorrentes, como a Siemens AG, NEC Corporation, Texas Instruments, STMicroelectronics, Motorola e Intersil apresentaram produtos compatíveis desde a metade dos anos 90.
O System Management Bus foi definido pela Intel Corporation, é um subsistema da I²C que define os protocolos mais estritamente. Um propósito do SMBus é promover um melhor comportamento a erros. Sistemas modernos I²C incorporaram politicas e regras do SMBus, algumas vezes suportando ambos I²C e SMBus, o que requer uma pequena reconfiguração.
O I²C utiliza apenas duas linhas bidirecionais de dreno aberto, Dados Seriais (Serial Data - SDA) e Clock Serial (Serial Clock - SCL), computadores. Este protocolo especifica dois sinais de comunicação, um com o sinal de clock (gerado pelo mestre), e outro de dados, bidirecional.
I²C usa apenas duas linhas bidirecionais Coletor aberto, a linha serial de dados e linha serial de clock com Resistores pull-up. Tensões tipicamente utilizadas são +5V ou +3.3V entretanto sistemas com outras tensões são permitidos. O modelo de referência I²C tem um espaço de endereçamento[2] de 7-bit ou de 10-bit. Normalmente barramentos I²C tem velocidade de 100 kbits/s no modo padrão e de 10kbits/s no modo de baixa velocidade, mas arbitrariamente frequências baixas de clock também são permitidas. As atualizações recentes do I²C podem hospedar mais nodos e funcionar em maior velocidade (400 kbit/s Versão 1(Fast mode), 1Mbit/s Versão 3(Fast mode plus), e 3.4Mbit/s Versão 2 (High Speed mode)). Estas velocidades são muito mais usadas em sistemas embarcados do que em PCs. Existe também outros recursos, como o endereçamento 16-bit.
A transição de bits são especificadas pelas transações entre mestre e escravo sem clock ou hardware. Protocolo de gastos incluem um endereço escravo e talvez um registrador de endereço dentro do dispositivo escravo e também por byte ACK/NACK bits. Assim a verdadeira velocidade de transferência de dados é mais baixa que aquelas indicadas pelo pico de velocidade de bits sugere. Por exemplo, para cada interação com um escravo ineficientemente permite 1 byte de dados ser transferido, a transferência de dados será menor que a metade do pico de transferência de bits.
O numero maximo de nodos é limitado pelo espaço de endereçamento, e também pela capacitância do barramento de 400 pF, que torna restrita a distancia pratica da comunicação para poucos metros.
O antes mencionado modelo de referência é um barramento com um clock (SCL) e linhas de dados (SDA) com endereçamento 7-bit. O barramento tem dois papeis para modos: mestre e escravo:
O barramento é um barramento multimestre que significa que qualquer número de nodos mestre pode estar presente. O papel de mestre e escravo podem trocar durante mensagens (após receber um PARAR).
Pode haver quatro modos potenciais para operação de um determinado dispositivo de barramento, entretanto a maioria dos dispositivos usam um simples papel e são dois modos:
O mestre está inicialmente em modo mestre envia, enviando um bit inicial seguido de um endereço 7-bit do escravo que deseja se comunicar, que é seguido por um bit simples que deseja escrever(0) ou ler(1) do escravo.
Se o escravo existe no barramento então ele irá responder com um bit para saber se esta ativo aquele endereço. O mestre então continua em modo envia ou recebe e o escravo continua no seu modo complementar.
O bytes de endereço e dados são enviados pelo Bit mais significativo primeiro. O bit inicial é indicado por uma transição alta-para-baixa de SDA com alta SCL; o bit final é indicado por uma transição baixa-para-alta de SDA com alta SCL. Todas outras transições de SDA tomam posição com baixa SCL.
Se o mestre deseja escrever no escravo então ele manda um byte repetidamente com o escravo enviando um bit de atividade (mestre em modo envia e escravo em modo recebe).
Se o mestre deseja ler do escravo então repetidamente vai receber byte do escravo, o mestre enviando um bit de que foi recebido depois de cada byte menos o final (mestre em modo recebe e escravo em modo envia).
O mestre pode então terminar a transmissão enviando um bit para parar, ou enviar outro bit para iniciar se desejar controlar o barramento para outra transferência.
I²C define vários tipos básicos de mensagens, cada qual inicia com um INICIAR e um PARAR no final.
Em uma mensagem combinada, cada leitura ou escrita começa com um INICIAR e o endereço do escravo. Depois do primeiro INICIAR em uma mensagem combinada isto também é chamado de repetição de bits INICIAR. Bits INICIAR repetidos não são precedidos de bits PARAR, que é como escravos sabem quando a próxima transferência faz parte da mesma mensagem.
Na pratica, quase todos escravos adotam controle de modelos pedido/resposta, onde um ou mais bytes seguindo um comando de escrita são tratados como um comando e endereço. Estes bytes determinam o quanto subsequente bytes escritos são tratados e/ou quanto o escravo responde em leituras subsequentes. Maioria das operações SMBus envolvem comandos com único byte.
Um exemplo específico é o 24c32 tipo EEPROM, que usa dois pedidos de bytes que são chamados de Endereço Alto e Endereço Baixo. Estes bytes são usados para endereçar bytes dentro de 32 kbit (4 kb) suportado pela EEPROM; o mesmo endereçamento de dois bytes é também usado por EEPROM mais largas, como as 24c512 armazenando 512 kbits (64kB). Lendo ou escrevendo dados para estas EEPROMs usa um protocolo simples: o endereço é escrito, e quando os dados são transferidos até o final da mensagem.
Uma mensagem simples escreve na EEPROM. Depois do INICIAR , o mestre manda o endereço do chip com a direção e o bit escrever(write), então manda os dois bytes de endereço de dados para o EEPROM e depois envia os bytes de dados para ser escritos começando por aquele endereço seguido de um PARAR. Quando escrever múltiplos bytes, todos os bytes devem estar na mesma página 32 byte. Quando está ocupado salvando aqueles bytes para a memória, o EEPROM não irá responder os próximos pedidos I²C. (É uma incompatibilidade com SMBus: dispositivos SMBus sempre devem responder para seus endereços de barramento.)
Para ler um endereço particular no EEPROM, a mensagem combinada é usada. Depois do iniciar, o mestre primeiro escreve o endereço do chip do barramento com a direção e bit escrever(write) e depois dois bytes com o endereço de dados do EEPROM. Manda repetidamente um INICIAR e o endereço de barramento do EEPROM com o bit de direção ler(read). Então o EEPROM irá responder com os bytes de dados começando no endereço de dados especificado - uma mensagem combinada, primeiro ler e depois ecrever. A cada leitura o mestre envia uma resposta exceto no ultimo byte e então identifica um PARAR. O EEPROM incrementa o endereço depois de cada byte tranferido; leituras de multi-byte pode retornar todo conteúdo do EEPROM usando uma mensagem combinada.
I²C é apropriado onde a simplicidade e o baixo preço são mais importantes que a velocidade. Aplicações comuns de I²C são:
Quando desenvolvendo ou resolvendo sistemas usando I²C, a visibilidade do level do hardware pode ser importante.
Há um número de soluções de hardware para computadores host, rodando Linux, Mac ou Windows, recursos I²C mestre e/ou escravo. Quase todos baseados em USB para adaptadores I²C. Nem todos requerem drivers proprietários ou API.
I²C analisadores de protocolo são ferramentas que testam um barramento I²C e decodificam sinais elétricos para prover um nível maior de visão dos dados sendo transmitidos pelo barramento.
Quando desenvolvendo e/ou resolvendo o barramento I²C, examinação de sinais de hardware podem ser muito importante. Analisadores lógicos são ferramentas que coletam, analisam, decodificam e armazenam sinais para que as pessoas possam ver os formatos de onda em alta velocidade ao seu prazer. Analisadores lógicos mostram data e hora para cada mudança de nível de sinal, que pode ajudar a achar problemas de protocolo. A maioria dos analisadores lógicos tem a capacidade de decodificar sinais de barramentos em dados de protocolo de alto nível e mostrar dados ASCII.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.