Articles

Noções básicas do Protocolo de Comunicação I2C

Posted by admin

até agora, falamos sobre os conceitos básicos de comunicação SPI e UART comunicação, então agora vamos para o protocolo final desta série, o Inter-Circuito Integrado, ou I2C.

Você provavelmente vai encontrar-se usando I2C se você já se criar projetos que utilizam exibe OLED, sensores de pressão barométrica, ou giroscópio/acelerômetro módulos.

Introdução à comunicação I2C

I2C combina as melhores características de SPI e UARTs., Com o I2C, você pode conectar vários escravos a um único mestre (como o SPI) e você pode ter vários mestres controlando simples, ou múltiplos escravos. Isto é realmente útil quando você quer ter mais do que um microcontrolador registrando dados para um único cartão de memória ou exibindo texto para um único LCD.tal como a comunicação UART, a I2C utiliza apenas dois fios para transmitir dados entre dispositivos:

SDA (dados seriais) – a linha para o mestre e escravo enviar e receber dados.

SCL (Relógio Serial) – a linha que carrega o sinal do relógio.,

I2C é um protocolo de comunicação serial, por isso os dados são transferidos bit a bit ao longo de um único fio (a linha SDA).

Como SPI, I2C é síncrono, então a saída de bits é sincronizada com a amostragem de bits por um sinal de clock compartilhado entre o mestre e o escravo. O sinal do relógio é sempre controlado pelo mestre.

Como I2C Obras

Com I2C, os dados são transferidos em mensagens. As mensagens são divididas em quadros de dados., Cada mensagem tem um frame de endereço que contém o endereço binário do escravo, e um ou mais frames de dados que contêm os dados que estão sendo transmitidos. A mensagem também inclui condições de início e paragem, bits de leitura/escrita e bits ACK/NACK entre cada quadro de dados:

condição de início: a linha SDA muda de um nível de alta tensão para um nível de baixa tensão antes que a linha SCL muda de alta para baixa.condição de paragem: a linha SDA muda de um nível de baixa tensão para um nível de alta tensão após a linha SCL mudar de baixa para alta tensão.,

Frame de Endereço: uma sequência de 7 ou 10 bits única para cada escravo que identifica o escravo quando o mestre quer falar com ele.

Read/Write Bit: um único bit especificando se o mestre está enviando dados para o escravo (nível de baixa tensão) ou solicitando dados a partir dele (nível de alta tensão).

Ack / NACK Bit: cada moldura de uma mensagem é seguida por um bit de reconhecimento/não-reconhecimento. Se um frame de endereço ou frame de dados foi recebido com sucesso, um bit ACK é devolvido ao remetente do dispositivo receptor.,

endereçamento

I2C não tem linhas de seleção de escravos como SPI, então ele precisa de outra maneira de deixar o escravo saber que os dados estão sendo enviados para ele, e não outro escravo. Fá-lo dirigindo-se. O frame do endereço é sempre o primeiro frame após o bit do start em uma mensagem nova.

O Mestre envia o endereço do escravo com o qual quer se comunicar a cada escravo ligado a ele. Cada escravo, em seguida, compara o endereço enviado do mestre para o seu próprio endereço. Se o endereço corresponder, envia um ACK de baixa tensão de volta para o mestre., Se a morada não corresponder, o escravo não faz nada e a linha SDA permanece alta.

Bit De Leitura / Escrita

a moldura de endereço inclui um único bit no final que informa o escravo se o mestre quer escrever dados para ele ou receber dados a partir dele. Se o mestre quiser enviar dados para o escravo, o bit de leitura/escrita é um nível de baixa tensão. Se o mestre está pedindo dados do escravo, o bit é um nível de alta voltagem.

A moldura de dados

Depois que o mestre detecta o bit ACK do escravo, a primeira moldura de dados está pronta para ser enviada.,

A moldura de dados é sempre de 8 bits de comprimento, e enviado com o bit mais significativo primeiro. Cada frame de dados é imediatamente seguido por um bit ACK/NACK para verificar se o frame foi recebido com sucesso. O bit ACK deve ser recebido pelo mestre ou pelo escravo (dependendo de quem está enviando os dados) antes que a próxima moldura de dados possa ser enviada.

Depois de todos os quadros de dados terem sido enviados, o mestre pode enviar uma condição de paragem para o escravo para parar a transmissão., A condição de parada é uma transição de tensão baixa a alta na linha SDA após uma transição baixa a alta na linha SCL, com a linha SCL permanecendo alta.Steps of I2C Data Transmission

1. O mestre envia a condição inicial para todos os escravos conectados trocando a linha SDA de um nível de alta tensão para um nível de baixa tensão antes de mudar a linha SCL de alta para baixa:

2., O mestre envia a cada escravo o endereço de 7 ou 10 bits do escravo com o qual ele quer se comunicar, juntamente com o bit de leitura/escrita:

3. Cada escravo compara o endereço enviado do mestre ao seu próprio endereço. Se a morada corresponder, o escravo devolve um ACK bit puxando a linha SDA para baixo por um bit. Se o endereço do Mestre não corresponder ao endereço do escravo, o escravo deixa a linha SDA alta.

4. O mestre envia ou recebe a base de dados:

5., Após cada quadro de dados ter sido transferido, o dispositivo receptor devolve outro bit ACK ao remetente para acusar a recepção bem sucedida da moldura:

6. Para parar a transmissão de dados, o mestre envia uma condição de parada para o escravo por comutação de SCL alta antes de mudar de SDA alta:

Single Master com Vários Escravos

Devido I2C usa endereçamento, vários escravos pode ser controlado a partir de um único mestre. Com um endereço de 7 bits, 128 (27) endereço único estão disponíveis., Usar endereços de 10 bits é incomum, mas fornece 1.024 (210) endereços únicos. Para se conectar a múltiplos escravos para um único mestre, fio-los como esta, com 4,7 K Ohms pull-up resistores de ligar o SDA e SCL linhas Vcc:

Vários Mestres, com Vários Escravos

Vários mestres podem ser conectados a um único escravo ou vários escravos. O problema com múltiplos mestres no mesmo sistema vem quando dois mestres tentam enviar ou receber dados ao mesmo tempo ao longo da linha SDA., Para resolver este problema, cada mestre precisa detectar se a linha SDA é baixa ou alta antes de transmitir uma mensagem. Se a linha SDA é baixa, Isso significa que outro mestre tem o controle do ônibus, e o mestre deve esperar para enviar a mensagem. Se a linha SDA é alta, então é seguro transmitir a mensagem. Para conectar vários mestres a vários escravos, use o seguinte diagrama, com 4.,use I2C para se conectar a um dispositivo em particular:

Vantagens

  • utiliza Apenas dois fios
  • Suporta vários mestres e vários escravos
  • ACK/NACK pouco dá a confirmação de que cada quadro é transferido com sucesso.
  • Hardware é menos complicado do que com UARTs
  • conhecido e amplamente utilizado protocolo

Desvantagens

  • mais Lenta taxa de transferência de dados de SPI
  • O tamanho do quadro de dados é limitado a 8 bits
  • Mais complicado do hardware necessário para implementar do que o SPI

Obrigado pela leitura!, Espero que tenhas aprendido algo com esta série de artigos sobre protocolos de comunicação electrónica. Caso ainda não os tenha lido, a parte um cobre o protocolo de comunicação SPI, e a parte dois cobre a comunicação guiada pela UART.

Leave A Comment