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.
-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.
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.
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.
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.
UART
A sigla UART significa Universal Asynchronous Receiver/Transmitter ou Transmissor/Receptor assíncrono universal.
Sua conexão é realizada da seguinte forma:
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:
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.
Seu tipo de conexão é a porta RS232 que é ligada da seguinte maneira
Um exemplo onde podemos encontra-la é em computadores mais antigos. Eles possuíam uma saída para conexão serial, geralmente 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).
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 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:
Já o data packet fica assim:
E o pacote de HandShake:
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.