Tutorial do protocolo de barramento I2C, interface com aplicativos

Tutorial do protocolo de barramento I2C, interface com aplicativos

Hoje em dia, os protocolos desempenham um papel essencial no projeto de sistema embarcado . Sem ir aos protocolos, se você quiser expandir os recursos periféricos do microcontrolador, a complexidade e o consumo de energia aumentarão. Existem diferentes tipos de protocolos de barramento disponíveis, como USART, SPI, CAN, Protocolo de barramento I2C , etc., que são usados ​​para transferir os dados entre dois sistemas.

Protocolo I2C

O que é I2C Bus?


A transmissão e o recebimento de informações entre dois ou mais dispositivos requerem um caminho de comunicação denominado sistema de barramento. Um barramento I2C é um barramento serial bidirecional de dois fios usado para transportar os dados entre circuitos integrados. O I2C significa “Inter Integrated Circuit”. Foi introduzido pela primeira vez pelos semicondutores Philips em 1982. O barramento I2C consiste em três velocidades de transferência de dados, como padrão, modo rápido e modo de alta velocidade. O barramento I2C suporta dispositivos de espaço de endereço de 7 e 10 bits e sua operação difere com tensões baixas.



Protocolo I2c Bus

Protocolo I2c Bus

Linhas de Sinal I2C

Linhas de Sinal I2C

Linhas de Sinal I2C

O I2C é um protocolo de barramento serial que consiste em duas linhas de sinal, como linhas SCL e SDL, que são usadas para se comunicar com os dispositivos. O SCL significa uma 'linha de relógio serial' e este sinal é sempre conduzido pelo 'dispositivo mestre'. O SDL significa 'linha de dados seriais' e este sinal é conduzido pelo mestre ou pelos periféricos I2C. Ambas as linhas SCL e SDL estão em estado de dreno aberto quando não há transferência entre os periféricos I2C.

Saídas de dreno aberto


O ralo aberto é o conceito para transistor FET em que o terminal de drenagem do transistor está no estado aberto. Os pinos SDL e SCL do dispositivo mestre são projetados com os transistores no estado aberto, portanto, a transferência de dados só é possível quando esses transistores são conduzidos. Portanto, essas linhas ou terminais de drenagem são conectados a resistores pull-up completos ao VCC para o modo de condução.

Interfaces I2C

Vários dispositivos escravos têm interface com o microcontrolador com a ajuda do barramento I2C através do deslocador de nível I2C IC para transferir as informações entre eles. O protocolo I2C usado para conectar no máximo 128 dispositivos, todos conectados para se comunicarem com as linhas SCL e SDL da unidade mestre, bem como com os dispositivos escravos. Ele suporta comunicação Multimaster, o que significa que dois mestres são usados ​​para comunicar os dispositivos externos.

Taxas de transferência de dados I2C

O protocolo I2C opera três modos, tais como: modo rápido, modo de alta velocidade e modo padrão em que a velocidade de dados do modo padrão varia de 0 Hz a 100 Hz, e os dados do modo rápido podem ser transferidos com velocidade de 0 Hz a 400 KHz e o modo de alta velocidade com 10 KHz a 100KHz. Os dados de 9 bits são enviados para cada transferência em que 8 bits são enviados pelo transmissor MSB para o LSB e o 9º bit é um bit de confirmação enviado pelo receptor.

Taxas de transferência de dados I2C

Taxas de transferência de dados I2C

Comunicação I2C

O protocolo de barramento I2C é mais comumente usado na comunicação mestre e escravo, em que o mestre é chamado de “microcontrolador” e o escravo é chamado de outros dispositivos como ADC, EEPROM, DAC e dispositivos semelhantes no sistema embarcado. O número de dispositivos escravos é conectado ao dispositivo mestre com a ajuda do barramento I2C, em que cada escravo consiste em um endereço único para comunicá-lo. As etapas a seguir são usadas para comunicar o dispositivo mestre ao escravo:

Passo 1: Primeiro, o dispositivo mestre emite uma condição inicial para informar todos os dispositivos escravos para que eles escutem na linha de dados seriais.

Passo 2: O dispositivo mestre envia o endereço do dispositivo escravo alvo, que é comparado com todos os endereços dos dispositivos escravos, conforme conectado às linhas SCL e SDL. Se houver correspondência de algum endereço, esse dispositivo será selecionado e todos os dispositivos restantes serão desconectados das linhas SCL e SDL.

Etapa 3: O dispositivo escravo com um endereço correspondente recebido do mestre responde com uma confirmação ao mestre e, em seguida, a comunicação é estabelecida entre o mestre e os dispositivos escravos no barramento de dados.

Passo 4: O mestre e o escravo recebem e transmitem os dados, dependendo se a comunicação é de leitura ou gravação.

Passo 5: Em seguida, o mestre pode transmitir 8 bits de dados para o receptor, que responde com uma confirmação de 1 bit.

Tutorial I2C

Transmitir e receber as informações passo a passo em série com respeito aos pulsos de clock é chamado de protocolo I2C. É um protocolo inter-sistemas e de curta distância, ou seja, é utilizado dentro da placa de circuito para comunicar os dispositivos mestre e escravo.

Fundamentos do protocolo I2C

Em geral, o sistema de barramento I2C consiste em dois fios que são usados ​​facilmente para expandir os recursos periféricos de entrada e saída, como ADC, EEROM e RTC, e outros componentes básicos para fazer um sistema cuja complexidade é muito menor.

Exemplo: Como o microcontrolador 8051 não tem ADC embutido - então, se quisermos fazer a interface de qualquer sensor analógico com o microcontrolador 8051 - temos que usar dispositivos ADC, como ADC de canal ADC0804-1, ADC de canal ADC0808-8, etc. Usando esses ADCs, podemos conectar os sensores analógicos ao microcontrolador.

Sem usar o protocolo para expandir os recursos de E / S de qualquer microcontrolador ou processador, podemos ir para o dispositivo 8255 ICit de 8 pinos. O O microcontrolador 8051 é um microcontrolador de 40 pinos usando o IC 8255, podemos expandir as portas de 3 E / S com 8 pinos em cada porta. Ao usar todos os dispositivos como RTC, ADC, EEPROM, Timers, etc. - para expandir o circuito periférico - a complexidade, o custo, o consumo de energia e o tamanho do produto também são aumentados.

Para superar esse problema, o conceito de protocolo entra em cena para reduzir a complexidade do hardware e o consumo de energia. Podemos expandir mais o número de recursos, como periféricos I / 0, ADCs, T / C e dispositivos de memória para até 128 dispositivos usando este protocolo I2C.
Terminologia usada em protocolos I2C

Transmissor: O dispositivo que envia dados para o barramento é chamado de transmissor.

Destinatário: O dispositivo que recebe dados do barramento é denominado receptor.

Mestre: O dispositivo que inicia as transferências para gerar sinais de relógio e encerrar uma transferência é chamado de mestre.

Escravo: O dispositivo endereçado por um mestre é denominado escravo.

Multimaster: Mais de um mestre pode tentar controlar o barramento ao mesmo tempo sem corromper a mensagem. É chamado de Multimaster.

Arbitragem: Procedimento para garantir que, se mais de um mestre tentar controlar o barramento simultaneamente, apenas um poderá fazê-lo, a mensagem vencedora não será corrompida.

Sincronização: O procedimento para sincronizar o relógio único de dois ou mais dispositivos é chamado de sincronização.

Sequência de Comandos Básicos I2C

  1. Condição de bit inicial
  2. Parar condição de bit
  3. Condição de Reconhecimento
  4. Operação de gravação mestre para escravo
  5. Leia a Operação Slave to Master

Iniciar e parar condição de bits

Quando o mestre (microcontrolador) deseja falar com um dispositivo escravo (por exemplo, ADC), ele inicia a comunicação emitindo uma condição de partida no barramento I2C e, em seguida, emite uma condição de parada. Os níveis lógicos de partida e parada I2C são mostrados na figura.

A condição de início I2C é definida como uma transição de alto para baixo da linha SDA enquanto a linha SCL é alta. Uma condição de parada I2C ocorre quando a linha SDA muda de baixa para alta enquanto a linha SCL está alta.

O mestre I2C sempre gera as condições S e P. Uma vez que o mestre I2C inicia uma condição de PARTIDA, o barramento I2c é considerado como estando no estado ocupado.

Iniciar e parar condição de bits

Iniciar e parar condição de bits

Programação:

START Condtion:

sbit SDA = P1 ^ 7 // inicializa os pinos SDA e SCL do microcontrolador //
sbit SCL = P1 ^ 6
void delay (unsigned int)
void main ()
{
SDA = 1 // processando os dados //
SCL = 1 // clock é alto //
atraso()
SDA = 0 // enviou os dados //
atraso()
SCL = 0 // sinal de clock é baixo //
}
Atraso vazio (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}

Condição de PARADA:

void main ()
{
SDA = 0 // Pare de processar os dados //
SCL = 1 // clock é alto //
atraso()
SDA = 1 // Parado //
atraso()
SCL = 0 // sinal de clock é baixo //
}
Atraso vazio (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}

Condição de Confirmação (ACK) e Não Confirmação (NCK)

Cada byte transmitido pelo barramento I2C é seguido por uma condição de reconhecimento do receptor, o que significa que, após o mestre puxar o SCL para baixo para completar a transmissão de 8 bits, o SDA será puxado do receptor para o mestre. Se, após a transmissão do receptor não puxar, a linha SDA LOW é considerada uma condição NCK.

Reconhecimento (ACK)

Reconhecimento (ACK)

Programação

Reconhecimento
void main ()
{
SDA = 0 // linha SDA vai para baixo //
SCL = 1 // clock é alto para baixo //
atraso (100)
SCL = 0
}
Sem confirmação:
void main ()
{
SDA = 1 // linha SDA vai para alta //
SCL = 1 // clock é alto para baixo //
atraso (100)
SCL = 0
}

Operação de gravação de mestre para escravo

O protocolo I2C transfere os dados na forma de pacotes ou bytes. Cada byte é seguido por um bit de confirmação.

Formato de transferência de dados

Formato de transferência de dados

Formato de transferência de dados

Começar: Primeiramente, a sequência de transferência de dados iniciada pelo mestre gerando a condição inicial.

Endereço de 7 bits: Depois disso, o mestre envia o endereço do escravo em dois formatos de 8 bits em vez de um único endereço de 16 bits.

R / W: Se o bit de leitura e gravação for alto, a operação de gravação será executada.

ALAS: Se a operação de gravação for realizada no dispositivo escravo, o receptor envia o ACK de 1 bit para o microcontrolador.

Pare: Após a conclusão da operação de gravação no dispositivo escravo, o microcontrolador envia a condição de parada para o dispositivo escravo.

Programação

Operação de gravação

voidwrite (unsigned char d)
{
Caractere sem sinal k, j = 0x80
Para (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
atraso (4)
SCL = 0
}
SDA = 1
SCL = 1
atraso (2)
c = SDA
atraso (2)
SCL = 0
}

Operação de leitura mestre para escravo

Os dados são lidos de volta do dispositivo escravo na forma de bit ou bytes - leia o bit mais significativo primeiro e leia o bit menos significativo por último.

O formato de leitura de dados

Formato de leitura de dados

Formato de leitura de dados

Começar: Primeiramente, a sequência de transferência de dados é iniciada pelo mestre gerando a condição inicial.

Endereço de 7 bits: Depois disso, o mestre envia o endereço do escravo em dois formatos de 8 bits em vez de um único endereço de 16 bits.

R / W: Se o bit de leitura e gravação for baixo, a operação de leitura será executada.

ALAS: Se a operação de gravação for realizada no dispositivo escravo, o receptor envia o ACK de 1 bit para o microcontrolador.

Pare: Após a conclusão da operação de gravação no dispositivo escravo, o microcontrolador envia a condição de parada para o dispositivo escravo.

Programação

Leitura nula ()
{
Caractere sem sinal j, z = 0x00, q = 0x80
SDA = 1
para (j = 0j<8j++)
{
SCL = 1
atraso (100)
flag = SDA
if (bandeira == 1)
q)
q = q >> 1
atraso (100)
SCL = 0

Exemplo prático de interface ADC com o microcontrolador 8051

O ADC é um dispositivo que é usado para converter os dados analógicos na forma digital e digital para analógica. O microcontrolador 8051 não tem um ADC embutido, então temos que adicionar externamente por meio do protocolo I2C. O PCF8591 é baseado em I2C analógico para digital e conversor digital para analógico. Este dispositivo pode suportar um máximo de 4 canais de entrada analógica junto com tensões de 2,5 a 6 V.

Saídas Analógicas

As saídas analógicas vêm na forma de tensões. Por exemplo, o sensor analógico de 5 V fornece lógica de saída de 0,01 V a 5 V.
O valor digital máximo de 5v é = 256.
O valor de 2,5 V é = 123 de acordo com o valor máximo de tensão.

A fórmula da saída analógica é:

A fórmula das saídas digitais:

Interface do ADC com o microcontrolador 8051

Interface do ADC com o microcontrolador 8051

A figura acima mostra a transferência de dados usando o protocolo I2C do dispositivo ADC para o microcontrolador 8051. Os pinos ADC de SCL e SDA são conectados aos pinos 1.7 e 1.6 do microcontrolador para estabelecer a comunicação entre eles. Quando o sensor fornece valores analógicos ao ADC, ele converte para digital e transfere os dados para o microcontrolador por meio do protocolo I2C.

Trata-se do tutorial do protocolo de barramento I2C com programas apropriados. Esperamos que o conteúdo fornecido forneça um conceito prático de interface de vários dispositivos com microcontroladores usando a comunicação I2C. Se você tiver alguma dúvida no procedimento de interface deste protocolo, pode entrar em contato conosco comentando abaixo.