Olá, continuando a série de tutoriais básicos sobre as placas Microcontroladoras, vamos aprender um pouco sobre os protocolos de comunicação serial mais utilizado pelas placas.

A comunicação Serial pode ser realizada através dos seguintes protocolos listados a baixo, se deseja conhecer um protocolo em específico basta clicar em seu nome e você será redirecionado para a parte equivalente do texto.

-O que é um protocolo de comunicação?

-Comunicação Serial e suas características.

-Método

-Transmissão

-Taxa de atualização/comunicação

-Tipos de protocolos de comunicação Serial:
I2C
UART
RS 232
SPI
1wire
Comunicação USB

 

O que é um protocolo de comunicação?

Para que dois dispositivos consigam se comunicar é necessário que haja uma transferência de dados. 

Com diversas fabricantes, protótipos e aplicações, criar um padrão para realizar essa transferência de dados é o que possibilita a comunicação entre componentes.

Por tanto, um protocolo de comunicação, é um conjunto de regras que viabilizam a comunicação entre placas, computadores e dispositivos eletrônicos que são de marcas diferentes e concorrentes.

Um exemplo de protocolo muito utilizado nos dias atuais é o Wifi, que pode ser encontrado em nossos celulares e que possibilita a nossa conexão com a internet sem a necessidade de cabos. 

 

Comunicação Serial e suas características

Para realizar a comunicação entre as placas e o computador é necessário um protocolo que permita a comunicação entre elas.

 O protocolo Serial é utilizado por essas placas e permite o envio de dados de um bit por vez em sequência, utilizando um barramento ou um canal de comunicação.

 Suas principais características são o método, a transmissão e a taxa de comunicação.

 

Método                                                                                            

O método pode ser dividido em três características distintas: Síncrona, Assíncrona, Isócrona. 

A comunicação Síncrona possui as seguintes características:

- Transmissor e Receptor deve utilizar a mesma frequência e fase, além de mesmo clock para comunicação.

- Transferência de blocos onde cada bloco possuí caracteres de sincronismo, dados e checagem de erro

- Pouco Overhead (Overhead é o que nos dá uma ideia de quantos bits será necessário adicionar para que a informação chegue corretamente ao destino). Para cada bloco: +3 bytes (2 sincronismo, 1 checksum). 

Ex: Bloco=1024 bytes + 3 bytes = 1027 bytes. O Que causa somente 0,3% de aumento de tempo.

comunicação_sincrona

Na comunicação Assíncrona, destacam-se as características:

- O Clock entre o transmissor e o receptor pode ser diferente, pois possuí ressincronismo a cada byte.

-Transferência de bytes

- Para cada byte mais 2 ou 3 bits possui start bit, bit de paridade, stop bits (1 a 2)

-Muito Overload, pois para cada byte (8bits) + 3 bits totalizando 11 bits, ou 37,5% de tempo a mais o que resulta em uma menor velocidade.

comunicação_asssincrona

Por ultimo, a transferência Isócrona possui as seguintes características:

- Clock é incluído/incorporado ao dado, ou seja, é ressincronizado a cada pacote

- Transferência de pacotes

-Transferência contínua sem a checagem dos dados enviados.

-Muito útil em aplicações que necessitam realizar a transferência de grande quantidade de pacotes de dados sem necessitar checar cada pacote. Uma aplicação muito utilizada nos dias de hoje que necessita desse tipo de transferência de pacotes é a chamada de vídeo. 

 

Transmissão

A Transmissão também é dividida em três características, sendo elas responsáveis pela direção da informação: Simplesx, Half-Duplex e Full-Duplex.

A transmissão Simplesx é um modo de comunicação unidirecional. Somente um dos dispositivos pode transmitir e consequentemente o outro só receberá informações.

Já na transmissão Half-duplex, cada dispositivo pode transmitir e receber informações, mas nunca ao mesmo tempo. Quando um dispositivo envia o outro recebe. Na comunicação Half-duplex toda a capacidade do canal é direcionada ao dispositivo que está transmitindo os dados.

Por ultimo, a transmissão Full-duplex suporta uma comunicação onde os dois dispositivos podem transmitir e receber informações simultaneamente.

Na tabela abaixo podemos ver alguns tipos de comunicações seriais.

tabela_comunicações

 

Taxa de atualização/comunicação

Taxa de atualização/comunicação é representada em bps( bits por segundo)

A taxa de atualização/comunicação em comunicações síncronas é chamada de Clock.

Já em comunicações assíncronas, ela é chamada de baud rate.

Podemos definir esta velocidade de comunicação, em compiladores e também pelo código, como na função Serial.begin(9600) comumente utilizada na IDE Arduino.
Nessa função, iniciamos a comunicação Serial e definimos a velocidade de comunicação que neste caso é 9600 bits por segundo.

 

Tipos de protocolos da comunicação Serial

I2C

I2C é um protocolo de comunicação criado pela empresa Philips Semiconductors nos anos 90. Utiliza apenas dois fios SDA (Serial DATA) e SCL (Serial CLOCK) e alimentação (Normalmente 3.3V ou 5V). Sua entrada VDD necessita de resistores de pull-up. 

Utilizado em vários dispositivos eletrônicos, como sensores, celulares, computadores e dispositivos industriais, a aplicação do protocolo I2C é muito ampla nos dias atuais.

O maior benefício do I2C é a sua capacidade de suportar diversos dispositivos conectados a um mesmo barramento.

 A quantidade de nós suportados em um mesmo barramento possui um limite.

Esse limite é atrelado ao tamanho do endereço (7,10 ou até 16 bits), e também ao tamanho dos fios do circuito, pois a capacitância total máxima é algo em torno de 400pf, e isso pode impedir o funcionamento correto do barramento como um todo.

Esse protocolo conta com um Master e um Slave, onde o dispositivo Master controla todos os dispositivos Slave.

A linha de comunicação SDA é responsável pela transmissão de dados, e a linha SCL é responsável pelo Clock do barramento. 

comunicação_I2C


UART

 A sigla UART significa Universal Asynchronous Receiver/Transmitter ou Transmissor/Receptor assíncrono universal.

Sua conexão é realizada da seguinte forma:

comunicação_RX_TX

Um dispositivo que utiliza a comunicação UART, é responsável pela comunicação de dados paralelos em um meio de transmissão serial.

O protocolo UART tem como principal função converter dados entre as formas paralela e serial. Os dispositivos que utilizam esse protocolo normalmente são usados com padrões de comunicação serial, como os RS-232C, RS-422 e o RS-485. 

Dispositivos que utilizam a comunicação UART são divididos em quatro blocos:

- Transmissão

- Recepção

-Geração de baud-rate (Taxa de transmissão)

-Lógica de interface

A forma de transferência de dados é realizada da seguinte forma:

comunicação_UART

 

RS232

Esse é um padrão de comunicação Serial que é utilizado para transmitir dados através de uma linha de transmissão.

O padrão RS232 foi desenvolvido pela empresa Eletronic Industries Association (EIA) nos Estados Unidos nos anos 1960 buscando uma forma de padronizar a comunicação de dispositivos Seriais da época.

Atualmente tornou-se um padrão antigo, no entanto bastante utilizado por ser compatível com diversos dispositivos.

comunicação_RS232

Seu tipo de conexão é a porta RS232 que é ligada da seguinte maneira 

pinagem_RS232

Um exemplo onde podemos encontra-la é em computadores mais antigos. Eles possuíam uma saída para conexão serial, geralmente RS232.

conexão_RS232

SPI

A comunicação SPI é constituída por no mínimo 4 canais diferentes: 

MOSI

MOSI ou Master Out Slave In significa Saída do Mestre Entrada do Escravo.

É um canal utilizado pelo dispositivo Master para enviar dados para os Slaves.

 

MISO

É o contrario do pino MOSI. Neste pino MISO (Master In Slave Out) a comunicação entre o escravo e o mestre acontece. Este pino deve ter 3 estados lógicos, sendo eles: Nível alto, Nível Baixo e alta impedância, para que não haja conflito entre os escravos do circuito, evitando assim, um escravo responder quando não é chamado.

 

SCLK 

SCLK (Serial Clock) é o pino responsável por sincronizar as informações na comunicação Serial. Como explicado mais acima, o Clock é a taxa de atualização/comunicação em conexões síncronas. 

 

SS

SS (Slave Select) é o canal de seleção de escravo. O dispositivo que controla (Master) deve possuir um canal de saída para cada escravo. 

Em cada saída deverá haver um resistor de pull-up no canal SS para se comunicar com cada escravo (Slave) através de um sinal de nível baixo mandado pelo dispositivo controlador (Master).

comunicação_SPI


1Wire

Criada pela Analog Devices, a tecnologia OneWire é utilizada desde a década de 1980.

Este tipo de tecnologia utiliza somente um cabo para envio de dados e alimentação do dispositivo. Com isso permite a utilização de dispositivos I²C e SPI com uma interface de contato único.

É possível utilizar uma única conexão 1Wire e uma conexão terra para comunicação entre dispositivos diferentes. As velocidades podem ser 11,7 kb/s e 62,5 kb/s no modo Overdrive.

Para que esta comunicação seja possível, neste exemplo abaixo, o microcontrolador necessita de uma ponte DS28E18 para realizar a comunicação entre o Sensor SPI e o microcontrolador utilizando apenas duas conexões, uma E/S e o fio terra.

comunicação_1Wire

 


Comunicação USB

O protocolo de transferência/comunicação utilizado pela USB é baseado em pacotes. 

A comunicação é iniciada no momento em que o host envia um pacote inicial chamado “Token Packet”. Neste pacote o endereço, o tipo de transmissão, o sentido e o número de EndPoint são armazenados. 

O sentido da comunicação pode ser Host-Dispositivo e também seu inverso.

O dispositivo que utiliza USB decodifica o pacote e verifica o campo do endereço do pacote para verificar a sua origem.

A fonte ou ponto de chegada de informação na comunicação entre o Host e o dispositivo é chamada de EndPoint. Esse ponto, é o único campo endereçável de um dispositivo USB.

Após o pacote inicial ser enviado, em sequência, teremos o pacote “Date Packet” indicando que não há transferência a ser efetuada. 

Com isso o destinatário envia um pacote de HandShake “Handshake packet” indicando se a transferência obteve ou não sucesso.

O token packet fica da seguinte maneira:

token_USB

Já o data packet fica assim:

DATA_USB

E o pacote de HandShake:

HandShake_USB

A principal diferença entre as versões da comunicação USB se da através da taxa de transferência suportada. A baixo podemos ver a diferenças entre cada tipo de USB:

– USB 1.0 – Taxa de transferência de até 1.5 Mbps (Low-Speed)

– USB 1.1 – Taxa de transferência de até 12 Mbps (Full-Speed)

– USB 2.0 – Taxa de transferência de até 480 Mbps (Hi-Speed)

– USB 3.0 – Taxa de transferência de até 5 Gbps (SuperSpeed)

– USB 3.1 – Taxa de transferência de até 10 Gbps (SuperSpeed+)

– USB 3.2 – Taxa de transferência de até 10/20 Gbps (SuperSpeed+)

Dispositivos que possuem taxa de comunicação mais alta conseguem se comunicar normalmente com dispositivos de taxa de comunicação mais baixa. 

 

Conclusão

Por hoje é isso pessoal. Conseguimos aprender um pouco mais sobre a comunicação serial e alguns protocolos que utilizam este tipo de conexão para comunicação entre dispositivos.

Aguardo você no próximo tutorial.