Você está na página 1de 42

PROTOCOLOS DE

COMUNICAÇÃO
Disciplina: Sistemas Embarcados
Aula 4
Prof.: Luís Felipe Vieira Silva
felipemmha@gmail.com
SPI
Serial Peripheral Interface
SPI
• Usado em Cartões SD, leitores RFID, transmissores wireless;
• O dado pode ser transferido sem interrupção;
• Qualquer quantidade de bits pode ser enviado ou recebido;
• Os dispositivos comunicam-se através da relação Mestre-Escravo;
SPI
• O mestre geralmente é o microcontrolador;
• O slave geralmente são sensores, display, chip de memória, ou pode ser outro
microcontrolador;
• A configuração mais simples do SPI é apenas um master e apenas um slave, mas
um master pode possuir mais de um slave.
SPI
• MOSI (Master Out/Slave In) – Linha que o master usa para transferir ao slave;
• MISO (Master In/Slave Out) – Linha que o slave usa para transferir ao master;
• SCLK (Clock) – Sinal de clock do master;
• SS/CS (Slave select/Chip select) – Linha por onde o master seleciona o slave.
Linhas usadas 4
Taxa máxima >10 Mbps
Tipo de transmissão Síncrona
Tipo de comunicação Serial
Nº máximo de Masters 1
Nº máximo de Slaves Teoricamente ilimitado
SPI - Clock
• O sinal de clock sincroniza a saída de dados pelo master;
• Um bit de dados é enviado cada ciclo de clock, então a velocidade de transmissão
é dependente da frequência do sinal de clock;
• A comunicação SPI é sempre iniciada pelo master devido ao clock;
• O sinal de clock pode ser modificado usando as propriedades de “polaridade de
clock” e “fase de clock”.
• A polaridade do clock define se o bit é amostrado na subida ou na descida do
clock;
• A fase do clock define se o bit é amostrado na primeira borda do clock ou na
segunda.
Slave select
• O master seleciona com qual slave ele irá se comunicar setando o sinal SS (slave
select) para baixo;
• Quando em alto, o SS não irá transmitir dados;
• Um master pode ter múltiplos pinos SS;
• Isso possibilita a comunicação paralela.
Múltiplos Slaves
• Há duas formas de comunicar-se com múltiplos slaves: com múltiplos pinos SS ou
de forma encadeada.
MOSI E MISO
• O master envia dados para o slave bit a bit pela linha serial MOSI;
• O dado enviado pelo master geralmente tem o bit mais significativo na frente;
• O slave envia dado para o master pelo pino MISO;
• O dado enviado pelo slave geralmente tem o bit menos significativo na frente;
Passo a passo da comunicação
• O master inicia a comunicação com o clock;
Passo a passo da comunicação
• O master troca o pino SS para baixo, ativando o slave;
Passo a passo da comunicação
• O master envia os bits um de cada vez para o slave através do pino MOSI, o slave
lê os bits assim que eles são recebidos.
Passo a passo da comunicação
• Caso a resposta seja necessária, o slave retorna bit a bit para o master através do
pino MISO.
SPI - Vantagens
• Não precisa de bit de início e bit de parada;
• O endereço dos slaves não é complicado como no I2C;
• Ao menos duas vezes mais rápido que o I2C na taxa de transmissão;
• Pinos separados para receber e enviar (MISO e MOSI).
SPI - Desvantagens
• Usa quatro pinos (I2C e SPI usam apenas 2);
• Não há forma de detecção de erro;
• Apenas permite um master;
• Não detecta se o dado foi transferido com sucesso (I2C faz).
I2C
Inter-integrated Circuit
I2C (IIC)
• Desenvolvido pela Philips em 1986 para reduzir o custo de produção de controles
remotos;
• É uma interface serial que pode ser implementada em software, mas muitos
microcontroladores incorporaram em hardware;
• É usado para comunicação entre chips na placa mãe, geralmente entre os chips e
qualquer outro periférico que suporta I2C;
• Combina as melhores características de SPI e UART;
• Pode ter múltiplos slaves em um master (SPI) e pode ter muitos masters
controlando um ou múltiplos slaves;
I2C
• Usa dois pinos para transferir dados:
• Serial Data Line (SDA);
• Serial Clock Line (SCA);
• Com isso é reduzido o custo de produção, tamanho do dispositivo e consumo de
energia;
SDA e SCL
• SDA (Serial Data) – Pino para o master e slave transmitirem dados;
• SCL (Serial Clock) – Pino do sinal de clock.
• I2C é um protocolo de transmissão serial, logo transfere o dado bit a bit.

Linhas usadas 2
Taxa máxima Até 5 Mbps
Tipo de transmissão Síncrona
Tipo de comunicação Serial
Nº máximo de Masters Ilimitado
Nº máximo de Slaves 1024
Funcionamento do I2C
• O dado é transferido em mensagens;
• As mensagens são quebradas em frames;
• Cada mensagem tem um frame de endereço que contém o endereço do slave;
• Um ou mais frames de dados que contém o dado a ser transmitido;
Funcionamento do I2C
• A mensagem possui condição de início e parada;
• Possui bit de Read ou Write;
• Possui bits ACK/NACK para checagem de comunicação.
Funcionamento do I2C
• Start: Muda para de HIGH para LOW antes do pino SCL mudar de HIGH para LOW;
• Stop: Muda de LOW para HIGH depois do SCL mudar de LOW para HIGH;
Funcionamento do I2C
• Frame de endereço: sequência de 7 a 10 bits únicos para cada slave que identifica
quando o master está se comunicando com ele.
Funcionamento do I2C
• Bit Read/Write: apenas um bit que indica se o master está enviando (LOW) ou
pedindo (HIGH) dado ao slave.
Funcionamento do I2C
• ACK/NACK: Bit que checa se o frame foi enviado com sucesso (ACK);
• O ACK é enviado do dispositivo que recebeu para o dispositivo que enviou.
Endereçamento
• Cada slave compara o endereço enviado pelo master com o seu próprio endereço;
• Se os endereços batem é enviado um sinal ACK de volta para o master;
• Se o endereço não bater nada é enviado pelo slave e o SDA continua alto.
Dataframe
• Depois do master detectar o ACK do slave, o primeiro bit do data frame está
pronto para ser enviado;
• O dataframe tem sempre 8 bits e o bit mais significativo é enviado primeiro;
• Cada dataframe é seguido por um ACK/NACK para verificação se o bit foi enviado
corretamente.
Dataframe
• O bit ACK deve ser recebido tanto pelo master quanto pelo slave (depende de
quem está enviando);
• Depois de todos os dataframes serem enviados o master envia a condição de
parada (STOP) para fechar a transmissão;
I2C passo a passo
• O master envia o START para todos os slaves conectados a ele;
• Mudando o pino SDA de HIGH para LOW antes do SCL mudar de HIGH para LOW;
I2C passo a passo
• O master envia 7 a 10 bits de endereçamento para o slave no qual ele quer se
comunicar e o bit de R/W.
I2C passo a passo
• Cada slave compara o endereço enviado pelo master com o próprio endereço, se o
endereço bater o slave retorna um ACK colocando o pino SDA de HIGH para LOW.
Caso contrário o slave permanece com SDA HIGH.
I2C passo a passo
• O master envia ou recebe o dataframe.
I2C passo a passo
• Após enviado o dataframe, o
receptor envia um ACK para
transmissor;
I2C passo a passo
• Para finalizar a transmissão o master
envia a condição de parada
colocando SCL HIGH antes de colocar
SDA HIGH.
Um master com múltiplos slaves
• Devido ao endereçamento, múltiplos slaves podem ser controlados por um
master.
• Com 7 bits de endereço é possível 128 endereços;
• Com 10 bits de endereço é possível 1024 endereços;
• Para conectar múltiplos slaves em apenas um master é necessário um resistor de
4.7 kOhm de pull-up conectando o SDA e o SCL com o VCC;
Um master com múltiplos slaves
• O problema de múltiplos masters no mesmo sistema é quando dois masters
tentam enviar ou receber dados ao mesmo tempo no pino SDA;
• Para resolver esse problema, cada master precisa detectar se o SDA é LOW ou
HIGH antes de transmitir a mensagem;
• Se o SDA é LOW significa que outro master está controlando o barramento e o
master deve esperar para enviar a mensagem;
I2C
I2C - Vantagens
• Apenas dois pinos;
• Suporta múltiplos masters e múltiplos slaves;
• Pinos de ACK/NACK para checar se a informação foi corretamente enviada;
• O hardware é menos complicado que o UART;
• Protocolo muito usado e muito conhecido.
I2C - Desvantagens
• Mais lento que o SPI na taxa de transmissão;
• O tamanho do dado é limitado a 8 bits;
• Mais complicado no Hardware que o SPI;
• Não suporta distâncias longas, necessita de extensores;
• Mais difícil a implementação em software.
Projeto de Avaliação 1.2 - SPI
• Requisitos
• Implementação da comunicação SPI entre dois Arduinos*;
• O Arduino 1 deve enviar dados para o Arduino 2;
• A comunicação precisa ser visível.

* Pode ser utilizado outro microcontrolador no lugar do Arduino, ex: ESP32, RASP, FPGA,
etc.
Projeto de Avaliação 1.3 – I2C
• Requisitos
• Implementação da comunicação I2C entre dois Arduinos*;
• O Arduino 1 deve enviar dados para o Arduino 2;
• A comunicação precisa ser visível.

* Pode ser utilizado outro microcontrolador no lugar do Arduino, ex: ESP32, RASP, FPGA,
etc.
OBRIGADO!
Dúvidas?

Você também pode gostar