Serial é uma palavra guarda-chuva para tudo o que é "Time Division Multiplexed", para usar um termo caro. Isso significa que os dados são enviados espalhados ao longo do tempo, geralmente um bit após o outro. Todos os protocolos que você está nomeando são protocolos seriais.
UART, para o Transmissor universal de receptor assíncrono, é um dos protocolos seriais mais usados. É quase tão antigo quanto eu, e muito simples. A maioria dos controladores possui um UART de hardware a bordo. Ele usa uma única linha de dados para transmitir e outra para receber dados. Na maioria das vezes, os dados de 8 bits são transferidos da seguinte forma: 1 bit de início (nível baixo), 8 bits de dados e 1 bit de parada (nível alto). O bit de início de baixo nível e o bit de parada de alto nível significam que sempre há uma transição de alto a baixo para iniciar a comunicação. É isso que descreve o UART. Não há nível de tensão, portanto você pode obtê-lo em 3,3 V ou 5 V, conforme o seu microcontrolador. Observe que os microcontroladores que desejam se comunicar via UART precisam concordar com a velocidade de transmissão, a taxa de bits, pois possuem apenas os bits iniciais de ponta para sincronizar. Isso é chamado de comunicação assíncrona.
Para comunicação de longa distância (que não precisa ser centenas de metros), o UART de 5 V não é muito confiável, é por isso que é convertido em uma voltagem mais alta, geralmente +12 V para um "0" e -12 V para um " 1 " O formato dos dados permanece o mesmo. Então você tem o RS-232 (que você realmente deveria chamar EIA-232, mas ninguém o faz).
A dependência de tempo é uma das grandes desvantagens do UART, e a solução é USART , para o Transmissor universal de receptor síncrono / assíncrono. Isso pode fazer o UART, mas também um protocolo síncrono. Em síncrono, não há apenas dados, mas também um relógio transmitido. A cada bit, um pulso de relógio informa ao receptor que ele deve trancá-lo. Protocolos síncronos precisam de uma largura de banda maior, como no caso da codificação Manchester, ou de um fio extra para o relógio, como SPI e I2C.
O SPI (Serial Peripheral Interface) é outro protocolo serial muito simples. Um mestre envia um sinal de relógio e, a cada pulso de relógio, ele muda um pouco para o escravo, e um pouco para dentro, vindo do escravo. Os nomes dos sinais são, portanto, SCK para clock, MOSI para Master Out Slave In e MISO para Master In Slave Out. Ao usar os sinais SS (Seleção de Escravo), o mestre pode controlar mais de um escravo no barramento. Existem duas maneiras de conectar vários dispositivos escravos a um mestre, um mencionado acima, ou seja, usando o slave select e o outro é encadeamento em série, ele usa menos pinos de hardware (linhas selecionadas), mas o software fica complicado.
I2C(Circuito Inter-Integrado, pronunciado "I ao quadrado C") também é um protocolo síncrono, e é o primeiro que vemos com alguma "inteligência"; os outros mudaram tristemente os bits para dentro e para fora, e foi isso. O I2C usa apenas 2 fios, um para o relógio (SCL) e outro para os dados (SDA). Isso significa que o mestre e o escravo enviam dados pelo mesmo fio, novamente controlados pelo mestre que cria o sinal do relógio. O I2C não usa o Slave Selects separado para selecionar um dispositivo específico, mas possui endereçamento. O primeiro byte enviado pelo mestre possui um endereço de 7 bits (para que você possa usar 127 dispositivos no barramento) e um bit de leitura / gravação, indicando se o próximo byte (s) também virá do mestre ou deve vir do escravo. Após cada byte, o destinatário deve enviar um "0" para confirmar a recepção do byte, que o mestre trava com um nono pulso de relógio. Se o mestre quiser escrever um byte, o mesmo processo se repete: o mestre coloca bit após bit no barramento e cada vez dá um pulso de clock para sinalizar que os dados estão prontos para serem lidos. Se o mestre deseja receber dados, ele gera apenas os pulsos do relógio. O escravo deve cuidar para que o próximo bit esteja pronto quando o pulso do relógio for dado. Esse protocolo é patenteado pela NXP (anteriormente Phillips), para economizar custos de licenciamento, a Atmel usa a palavra TWI (interface de 2 fios), exatamente igual à I2C, portanto, qualquer dispositivo AVR não terá I2C, mas terá TWI. Se o mestre deseja receber dados, ele gera apenas os pulsos do relógio. O escravo deve cuidar para que o próximo bit esteja pronto quando o pulso do relógio for dado. Esse protocolo é patenteado pela NXP (anteriormente Phillips), para economizar custos de licenciamento, a Atmel usa a palavra TWI (interface de 2 fios), exatamente igual à I2C, portanto, qualquer dispositivo AVR não terá I2C, mas terá TWI. Se o mestre deseja receber dados, ele gera apenas os pulsos do relógio. O escravo deve cuidar para que o próximo bit esteja pronto quando o pulso do relógio for dado. Esse protocolo é patenteado pela NXP (anteriormente Phillips), para economizar custos de licenciamento, a Atmel usa a palavra TWI (interface de 2 fios), exatamente igual à I2C, portanto, qualquer dispositivo AVR não terá I2C, mas terá TWI.
Dois ou mais sinais no mesmo fio podem causar conflitos, e você teria um problema se um dispositivo enviar um "1" enquanto o outro enviar um "0". Portanto, o barramento é conectado com OU: dois resistores puxam o barramento para um nível alto e os dispositivos enviam apenas níveis baixos. Se eles querem enviar um nível alto, simplesmente soltam o ônibus.
TTL (Transistor Transistor Logic) não é um protocolo. É uma tecnologia mais antiga para lógica digital, mas o nome é frequentemente usado para se referir à tensão de alimentação de 5 V, geralmente se referindo incorretamente ao que deveria ser chamado de UART.
Sobre cada um deles, você pode escrever um livro, e parece que estou no meu caminho. Esta é apenas uma breve visão geral, deixe-nos saber se algumas coisas precisam de esclarecimentos.