+1 500 000 produtos na nossa oferta
7000 encomendas enviadas diariamente
+300 000 clientes de 150 países
Data de publicação: 26-07-2024 Data de atualização: 10-04-2026 🕒 13 min de leitura
I2C, SPI, GPIO, UART… Qualquer engenheiro eletrónico, ao consultar a oferta de kits de desenvolvimento ou computadores de placa única, ou ao procurar um microcontrolador para o seu projeto, cruza-se com estas abreviaturas. Caso ainda tenha algumas dúvidas, não há razão para se preocupar, e este artigo é mesmo para si.
Quando lhe perguntam a que se referem as abreviaturas citadas na introdução, a resposta é muito simples: são os nomes das interfaces de comunicação. Infelizmente, este problema complica-se muito rapidamente quando começamos a fazer uma breve avaliação. Em primeiro lugar, surge uma questão: interface e bus são a mesma coisa, e o protocolo, o que é a “serialização” da interface? E assim por diante.
Compreender os princípios básicos da comunicação digital facilita a navegação em muitas áreas da eletrónica. Surgem não só nas telecomunicações ou na construção de sistemas de microprocessadores, mas também quando se fala da arquitetura dos próprios processadores. Assim, vamos familiarizar-nos com as bases deste tópico e ver quais são as características dos métodos de comunicação mais populares nos circuitos eletrónicos.Neste artigo, respondemos às seguintes questões:
Para alguém que não esteja familiarizado com a eletrónica moderna, a utilização da palavra “comunicação” quando se refere a circuitos integrados pode parecer um pouco confusa. De facto, seria um exagero mesmo no caso dos circuitos eletrónicos clássicos, em que o fluxo de corrente e as alterações na intensidade da corrente provocavam uma reação específica dos componentes, que por sua vez interagiam entre si de forma semelhante às engrenagens, válvulas e outros mecanismos de uma máquina.
No caso da eletrónica digital, a situação é outra. Veja o exemplo de um interruptor de luz num sistema eletrónico “inteligente” moderno. Um interruptor tradicional contém contactos: ao premir uma alavanca, o utilizador provoca um curto-circuito físico em duas peças de metal, completando assim o circuito e permitindo que a corrente passe pela lâmpada. No caso de um interruptor “inteligente”, a questão é muito mais complicada (daí também o nome). Premir o botão altera o estado lógico na entrada do microcontrolador (por exemplo, de alto para baixo, de 1 para 0). O programa executado pelo microcontrolador recebe esta informação. Através de uma das suas interfaces, dá instruções ao módulo de comunicação sem fios soldado no mesmo circuito para enviar para o éter um pacote de dados com a informação de que este ou aquele interrutor acabou de ser premido. As ondas de rádio chegam ao controlador escondido na caixa de distribuição. No interior, o módulo recetor descodifica a mensagem e envia-a (novamente ao longo de caminhos PCB e através de uma interface) para o microprocessador central. Mas mesmo este não controla diretamente os circuitos de iluminação. Pelo contrário, envia outra mensagem através de outra interface, normalmente dirigida ao sistema de expansão, que envia uma mensagem “0” ou “1” para a porta do transístor de polo único, resultando na ligação ou desativação da fonte de alimentação da lâmpada.
Mesmo uma descrição tão longa contém muitas limitações, mas serve sobretudo para ilustrar a magnitude do problema em causa. A comunicação entre sistemas num circuito e entre circuitos desempenha um papel fundamental na eletrónica atual.
Comecemos por três conceitos básicos relacionados com a transferência de informação: interface, bus e protocolo. Os seus equivalentes podem ser encontrados em qualquer teoria da comunicação, mesmo que se refiram a interações interpessoais.
Interface deve ser definida como circuito eletrónico cuja tarefa é transmitir sinais de um sistema para outro. Tem geralmente uma capacidade de transmissão/receção. O conceito de interface refere-se tanto ao nível físico (por exemplo, a presença de pinos específicos ou mesmo de um conetor específico) como ao nível funcional (a capacidade de codificar/descodificar mensagens de acordo com uma norma específica). Por conseguinte, se dissermos que um microcontrolador está “equipado com uma interface UART”, significa que tem um circuito integrado capaz de transmitir dados nesta norma e que este circuito está ligado a pinos específicos do circuito integrado. Também seria adequado dizer que “um computador portátil típico tem uma interface USB”.
O “bus” refere-se à estrutura do próprio circuito. Estamos a referir-nos a caminhos físicos ou cabos que são utilizados para ligar componentes. O bus é constituído por barramentos, ou seja, linhas (fios, circuitos PCB) agrupadas de acordo com a sua função, por exemplo, linhas de endereço, barramento de dados, etc. Na prática dos sistemas eletrónicos básicos, os barramentos são raramente encontrados, uma vez que, na maioria das vezes, cada linha de bus tem a sua própria função específica. Note-se desde já que, embora os conceitos de interface e de bus sejam semelhantes, referem-se a elementos diferentes do sistema de comunicação: uma interface é um circuito eletrónico que é utilizado para ligar um determinado circuito ao bus.
Resta-nos o último conceito importante: protocolo. Este é o nome mais intuitivo, podendo mesmo ser entendido literalmente: protocolo, ou seja, um conjunto de regras que constituem um método de comunicação. É mais do que apenas a “linguagem” em que os dados são transmitidos, porque também descreve todo o procedimento de troca de informações. Muitas vezes, nos sistemas de microprocessadores, nos dispositivos eletrónicos simples, etc. - a interface, o bus e o protocolo são descritos por uma norma, que será apresentada mais adiante no texto. Mas isto não é uma regra, cujo melhor exemplo são os métodos de utilização da Internet. Embora não tenhamos conhecimento disso, utilizamo-la todos os dias, não só através de várias interfaces (placa de rede, módulo WiFi), através de vários barramentos (ligações elétricas, de fibra ótica), mas também através de vários protocolos (TCP/IP, HTTPS, SMB e muitos outros).
Antes de analisar exemplos de interfaces, é necessário clarificar uma distinção nas comunicações eletrónicas: a divisão em interfaces (barramentos) paralelas e em série.
O método de comunicação paralelo envolve a transmissão de vários bits de dados ao mesmo tempo, enquanto as interfaces de série são normalmente utilizadas para a transferência sequencial. Os barramentos paralelos eram muito populares no final do século XX porque permitiam a transmissão de quantidades relativamente grandes de dados a baixas frequências de sinal. Por exemplo: a porta da impressora (LPT) incluía oito linhas de dados, o que lhe permitia transmitir um byte completo de dados numa secção, ou seja, um único carácter (na realidade, um código em formato ASCII). Para transmitir o mesmo número de bits, a transmissão em série requer oito impulsos, pelo que esta interface funciona a uma frequência oito vezes superior.
Atualmente, os sistemas de comunicação atingem frequências de centenas de gigahertz, permitindo a utilização generalizada de interfaces série, mesmo quando é necessária uma velocidade de transmissão significativa. Um exemplo desta mudança ocorreu na indústria informática, onde há duas décadas começaram a ser utilizadas pequenas interfaces SATA de série, substituindo a tecnologia ATA paralela. SATA é literalmente “ATA serie”, que significa Serial AT Attachment.
O método série tem vantagens práticas e estruturais, pois requer menos linhas e, por conseguinte, por exemplo, a utilização de cabos de baixo número de fios, que podem ser fabricados com fios mais grossos (ou seja, mais duráveis). Os barramentos em série ocupam uma área de placa de circuito impresso mais pequena do que os barramentos paralelos, porque requerem apenas 2-4 vias (em vez de cerca de uma dúzia), o que contribui para a miniaturização dos dispositivos eletrónicos.
Um dos ecrãs mais populares pode servir de exemplo desta última evolução: os modelos LCD alfanuméricos equipados com (ou compatíveis com) o controlador HD44780. Estão disponíveis em duas versões: com interface paralela, em que são necessárias 10 linhas de interface para o controlo; e variantes mais modernas, controladas através de uma interface série I2C (abordada mais adiante no texto). A sua utilização permite-lhe incluir um display no seu projeto utilizando apenas 4 fios (incluindo os fios de alimentação!).
Agora que sabemos o essencial, podemos ir ao pormenor e analisar os métodos populares de comunicação em sistemas digitais. No entanto, convém notar que não entraremos aqui em pormenores sobre protocolos, sintaxe e especificações, por duas razões. Em primeiro lugar, estamos limitados pelo volume, mas o importante é que, muitas vezes, não são necessárias informações precisas sobre o funcionamento da interface para a utilizar ou mesmo aplicar no projeto. É claro que devemos conhecer as capacidades e limitações de uma determinada tecnologia, mas em muitos casos os microcontroladores e os ambientes de programação são concebidos de forma a que a utilização da interface seja o mais simples possível. E isto não é um louvor à ignorância; facilidade de utilização e funcionalidade são as ideias principais que norteiam a criação de todas as interfaces eletrónicas.
A norma I2C (do inglês: Inter-Integrated Ciruit) foi desenvolvida pela Philips como um método universal de comunicação bidirecional entre circuitos integrados em circuitos eletrónicos. El bus em série I2C é constituído por duas linhas: relógio SCL (cada impulso assinala a transmissão de um bit) y dados SDA (bit único).
Um sistema ligado ao bus atua como controlador (master), gera um sinal de clock e gere a comunicação (transmitindo comandos para iniciar/terminar a transmissão, enviando comandos a sistemas individuais), enquanto os restantes componentes funcionam em modo slave e, portanto, em modo executivo (o seu comportamento é determinado por instruções provenientes do sistema master). Nalguns casos, o slave é apenas um recetor (por exemplo, um ecrã), noutros (por exemplo, conversores analógicos/digitais), estas unidades transmitem dados através do bus, mas apenas em resposta a um comando específico do sistema anfitrião e de acordo com o seu próprio protocolo (que determina com precisão o número de bits disponíveis), que os fabricantes descrevem em pormenor na documentação.
Cada elemento slave ligado ao bus tem um endereço único de 7 bits que lhe permite reconhecer se os comandos enviados pelo controlador lhe são endereçados. Por conseguinte: este método de comunicação permite a ligação de mais de 100 sistemas. Muitas vezes, é dada ao utilizador alguma escolha relativamente ao endereço, que é selecionado desligando pinos específicos à terra ou à linha de alimentação do circuito. Graças a isto, vários ou mesmo uma dúzia de elementos do mesmo tipo (ou mesmo modelo) podem ser ligados a um único bus.
A simplicidade do I2C permite a sua emulação de software, pelo que este método de comunicação pode ser utilizado mesmo por microcontroladores que não disponham de uma interface de hardware. Além do mais, um microcontrolador pode suportar vários ou mesmo uma dúzia de barramentos I2C e, por conseguinte, circuitos muito complexos.
O I2C é frequentemente utilizado para comunicação com módulos Arduino (controladores de LED ou de motores, sensores, ecrãs), Rasperry Pi e muitos outros produtos destinados a entusiastas e amadores, mas também desfruta de uma popularidade inabalável em aplicações profissionais. Como permite velocidades de transmissão até 5 Mbit/s, pode facilmente ser utilizado para transmitir imagens de vídeo ou monitorizar o estado de sensores em tempo real.
Um bus relacionado mas incompatível com o I2C é a norma I2S, que foi desenvolvida para transmitir som estéreo (sound) em formato PCM sem perdas. Este é um método utilizado em muitos dispositivos multimédia, desde smartphones a amplificadores HiFi. Baseia-se em três linhas (uma das quais determina para que canal os dados são encaminhados) e (opcionalmente) num sinal de sincronização adicional para manter a frequência correta de reprodução das amostras.
Nos seus pressupostos, a SPI (do inglês:Serial Peripheral Interface) mantém-se muito próxima da I2C. Trata-se de uma tentativa mais antiga de criar uma interface de comunicação universal em circuitos digitais. Foi desenvolvida no final dos anos 70 pela Motorola (na altura, um dos principais fornecedores de microprocessadores para computadores pessoais). A SPI continua a ser uma norma muito popular, utilizada, por exemplo, para comunicação com cartões de memória SD ou para programação de microcontroladores.
O bus SPI é composto por quatro ligações: sinal de relógio (SCLK), duas linhas de dados e Chip Select (CS) . Cada sistema que funciona em modo slave tem a sua própria linha CS, que é utilizada para assinalar qual o elemento ligado ao bus que está a comunicar (em circuitos mais complexos, é utilizado um endereçamento análogo ao I2C). O SPI tem em conta duas linhas de dados porque a transmissão pode ocorrer simultaneamente em ambas as direções (este modo é conhecido como full duplex, por contraste com o half duplex, em que um par de sistemas troca os papéis de emissor e recetor). O bus contém um sinal MOSI (Master Out, Slave In) e MISO (Master In, Slave Out), em que o primeiro é utilizado para transmitir dados e instruções do controlador para os sistemas escravos, enquanto o segundo funciona na direção oposta.
A interface SPI é simples de implementar e permite uma transmissão de dados muito rápida, o que a torna amplamente utilizada para suportar vários módulos de comunicação, memória, registos e outros periféricos. Atualmente, praticamente todos os microcontroladores oferecem suporte de hardware para esta interface, o que significa que a sua utilização não sobrecarrega o núcleo e permite a construção de dispositivos em miniatura com funcionalidades complexas.
A UART é uma interface full duplex, mas utiliza apenas duas linhas: transmissão (Tx, de transmit) e receção (Rx, de receive). Como pode verificar, ao contrário dos métodos de comunicação descritos anteriormente, o bus não fornece um sinal de relógio. Isto resulta dos pressupostos fundamentais do UART, ou seja, Universal Asynchronous Receiver-Transmitter. Isto levanta o problema da transmissão assíncrona, com o qual ainda não nos deparámos.
Tanto o I2C como o SPI são interfaces síncronas, ou seja, antecipam a presença de um sinal de sincronização da comunicação (por exemplo, SCL), determinando a sua velocidade e o comportamento dos dispositivos incluídos no circuito. No caso da transmissão assíncrona, a transmissão é efetuada através de mensagens de arranque e de interrupção, sendo a sua velocidade normalmente determinada no momento do arranque: no código do programa executado pelo microcontrolador ou na configuração da porta (como parte do sistema operativo ou de definições específicas da aplicação).
A UART é a solução mais antiga apresentada e os seus pressupostos ainda hoje são utilizados na eletrónica digital; são também a base de normas como a USB, Ethernet, etc. A maioria dos sistemas operativos ou carregadores de arranque suportam portas de comunicação série assíncronas, que são utilizadas para fins de diagnóstico e para atualizar software, etc. Os pinos UART podem ser encontrados como campos de teste na placa de circuito impresso de quase todos os dispositivos baseados em Linux, UNIX e sistemas relacionados. Além do mais, existe uma grande variedade de adaptadores disponíveis no mercado para ligar dispositivos que utilizam diferentes versões desta interface (as diferenças devem-se frequentemente aos valores de tensão que ocorrem nas linhas de transmissão), por exemplo, a transição de UART 5V para 3,3V, ou para a porta RS de um computador- 232.
A presença de uma interface UART não implica a utilização de um protocolo específico - na prática, a porta UART pode ser utilizada para comunicar com um terminal de texto, para controlar dispositivos de comunicação (GSM, modem LTE, recetores GPS), para os quais são utilizados comandos AT ou exigidos pelas instruções de um determinado módulo.
GPIO é um termo impreciso. É o nome de todos os pinos de um sistema/circuito cuja função é a comunicação ou o controlo. O termo GPIO significa "entrada/saída de uso geral" (do inglês: General-Purpose Input/Output). Na prática, trata-se simplesmente de pinos de um sistema eletrónico cuja função é receber ou enviar sinais binários (que podem ser utilizados para emular interfaces). Muitas vezes, os pinos GPIO podem desempenhar várias funções configuráveis por software, como é o caso, por exemplo, dos microcontroladores. O seu circuito interno permite-lhe ligar um único pino à entrada de um conversor A/D, à saída de um gerador PWM ou a outro componente. Não é raro que as linhas GPIO contenham pinos para interfaces de hardware SPI, I2C, UART, etc.
JTAG (deJoint Test Action Group) é uma interface e protocolo para programação, teste e diagnóstico de sistemas de microprocessadores (embora a sua utilização seja possível e possa ser vantajosa mesmo em circuitos muito simples). A funcionalidade JTAG inclui, entre outras, a ISP (In-System Programming), ou seja, a programação de microcontroladores depois de os colocar na placa de circuito impresso e a depuração de circuitos, ou seja, a verificação de ligações. Esta norma implica a ligação em série dos sistemas testados; graças a ela, os componentes instalados no sistema podem ser ligados através de um bus, que, em fases posteriores de prototipagem/produção, será utilizado para carregar software e verificar a qualidade do dispositivo ou testá-lo em caso de falha.
As interfaces dos telemóveis, tablets e muitos outros dispositivos baseiam-se em ecrãs a cores. Para garantir uma interação confortável e um tempo de resposta ótimo, o conteúdo do ecrã deve ser atualizado várias dezenas de vezes por segundo. Isto significa transmitir dados de cor de centenas de milhares ou até milhões de pixéis em cerca de uma dúzia de milissegundos. Em teoria, esta tarefa poderia ser realizada utilizando uma das interfaces acima descritas, mas consumiria uma parte significativa da capacidade de computação do processador. Foi por isso que um grupo de fabricantes de eletrónica influentes desenvolveu o projeto MIPI (Mobile Industry Processor Interface), que desenvolveu, entre outros, o MIPI DSI (MIPI Display Serial Interface). Esta interface encontra-se hoje largamente implementada nos circuitos integrados de microcontroladores e microprocessadores, uma vez que facilita e normaliza os métodos de comunicação com os ecrãs, nomeadamente os de alta resolução, montados em smartphones, consolas, óculos de realidade virtual, etc.
A tecnologia baseia-se num bus serial de dois pontos que inclui um sinal de relógio de alta frequência e um ou mais buses de transmissão. Utilizam o método de transmissão diferencial (sinal transmitido através de duas linhas com polarização oposta), graças ao qual conseguem uma elevada resistência às interferências. O MIPI DSI descreve igualmente o seu próprio protocolo de correção de erros.
As normas descritas acima são as soluções mais comuns em circuitos eletrónicos; no entanto, a lista de interfaces encontradas no contexto de dispositivos RTV, computadores e automação (incluindo automação industrial) é, naturalmente, muito mais longa. Não vamos aqui detalhar todos os métodos de comunicação populares, mas vamos descrever as características básicas e as aplicações dos mais importantes. Este conhecimento ajudar-nos-á a identificar componentes eletrónicos, a encontrar adaptadores adequados e até a realizar diagnósticos básicos de dispositivos e máquinas.
O bus CAN (Controller Area Network) foi desenvolvido para comunicação entre dispositivos em veículos rodoviários. Graças à sua elevada resistência às interferências, é atualmente utilizado em muitas outras aplicações, por exemplo, na automatização de edifícios, em dispositivos médicos e na robótica. Graças à sua utilização, a transmissão de dados na indústria automóvel foi normalizada, permitindo simplificar ainda mais os procedimentos de diagnóstico, bem como a regulação eletrónica dos parâmetros de funcionamento dos componentes automóveis (da iluminação às unidades de controlo do motor).
O nome Peripheral Component Interconnect Express, ou PCIe, existe na indústria informática. Trata-se de um bus utilizado para conectar placas de expansão ao processador. Atualmente, esta norma é utilizada por quase todos os periféricos ligados diretamente à placa-mãe: placas de rede, placas de som, placas gráficas, discos rígidos (SSDs com conetor M.2). O PCIe apresenta-se em várias versões, identificadas pelos sufixos x1, x16, etc. Este número indica o número de linhas de comunicação em série que um determinado bus contém. Dado que a norma se caracteriza por uma velocidade de transmissão muito elevada (teoricamente até centenas de GB/s), substituiu progressivamente os seus antecessores e concorrentes (SATA, PCI, AGP).
O bus USB (Universal Serial Bus) mereceria um artigo separado, uma vez que este conceito abrange uma série de questões, desde possibilidades sempre em expansão a vários formatos de conectores. As gerações posteriores da norma introduziram linhas de bus adicionais e até alargaram os parâmetros de tensão e corrente das linhas de alimentação. O USB é, obviamente, uma norma de comunicação amplamente reconhecida para dispositivos de consumo, mas também vale a pena notar que cada vez mais suporta nativamente microcontroladores, pelo que a sua ligação a um computador já não requer a utilização de um adaptador (um adaptador para a interface UART).
A HDMI é uma interface com enormes possibilidades, embora na sua essência seja principalmente utilizada para transmitir sinais multimédia (ou seja, som e imagem) em formato digital. No entanto, as gerações mais recentes da norma têm uma funcionalidade muito mais ampla, podendo enviar mensagens de controlo a muitos recetores (CEC, Consumer Electronic Control), efetuar a transmissão bidirecional (canal inverso) e até facilitar a comunicação com a Internet.
No domínio da automatização, existem muitas normas de comunicação específicas. Neste domínio, pode ainda encontrar normas novas e competitivas desenvolvidas pelos principais fabricantes de equipamento industrial. Cada bus (modbus, Profibus, S-Bus etc.) tem as suas características e metodologia próprias, permitindo um controlo global das máquinas em fábricas, armazéns, pontos de logística e outras indústrias onde as capacidades de escalonamento e centralização são cruciais. Este domínio é extremamente vasto também devido à durabilidade excecional de algumas soluções, como a interface RS-485. Existem também muitas soluções extremamente especializadas, como o bus M-Bus, que é utilizado quase exclusivamente para a comunicação com aparelhos de medição.
Anteriormente, referimos que um exemplo evidente da distinção entre uma interface e um protocolo é o domínio da informática, especialmente as redes de computadores. Por último, vejamos os protocolos de comunicação mais populares que utilizamos – de forma mais ou menos consciente – quando usamos um computador:
A Transfer Multisort Elektronik (TME) é um dos maiores distribuidores globais de componentes eletrônicos, peças eletrotécnicas, equipamentos de oficina e automação industrial. O catálogo inclui mais de 1.500.000 de produtos de 1.300 fabricantes líderes. Os modernos centros logísticos da TME em Łódź e Rzgów (Polónia), com uma área total superior a 40.000 m², enviam quase 6.000 pacotes diariamente para clientes em mais de 150 países.
A TME também investe no desenvolvimento do conhecimento e das competências de jovens engenheiros e entusiastas da eletrónica através do projeto TME Education e apoia a comunidade tecnológica organizando a série de eventos TechMasterEvent, promovendo a inovação e a troca de experiências.