Seriale è una parola d'ordine per tutto ciò che è "Divisione del tempo multiplexato", per usare un termine costoso. Significa che i dati vengono inviati diffusi nel tempo, molto spesso un singolo bit dopo l'altro. Tutti i protocolli che stai nominando sono protocolli seriali.
UART, per Universal Asynchronous Receiver Transmitter, è uno dei protocolli seriali più utilizzati. È vecchio quasi quanto me e molto semplice. La maggior parte dei controller ha un UART hardware integrato. Utilizza una singola linea di dati per la trasmissione e una per la ricezione di dati. Molto spesso i dati a 8 bit vengono trasferiti, come segue: 1 bit di avvio (basso livello), 8 bit di dati e 1 bit di arresto (alto livello). Il bit di avvio di basso livello e il bit di arresto di alto livello indicano che c'è sempre una transizione da alta a bassa per iniziare la comunicazione. Questo è ciò che descrive UART. Nessun livello di tensione, quindi puoi averlo a 3,3 V o 5 V, qualunque sia il tuo microcontrollore. Si noti che i microcontrollori che desiderano comunicare tramite UART devono concordare la velocità di trasmissione, la velocità in bit, poiché hanno solo i bit di inizio per la sincronizzazione. Si chiama comunicazione asincrona.
Per comunicazioni a lunga distanza (che non devono essere centinaia di metri) l'UART 5 V non è molto affidabile, ecco perché viene convertito in una tensione più alta, in genere +12 V per uno "0" e -12 V per uno " 1" . Il formato dei dati rimane lo stesso. Quindi hai RS-232 (che in realtà dovresti chiamare EIA-232, ma nessuno lo fa).
La dipendenza dal timing è uno dei maggiori svantaggi di UART e la soluzione è USART , per il trasmettitore ricevitore sincrono / asincrono universale. Questo può fare UART, ma anche un protocollo sincrono. In sincrono non ci sono solo dati, ma anche un clock trasmesso. Ad ogni bit, un impulso di clock indica al ricevitore che dovrebbe bloccare quel bit. I protocolli sincroni richiedono una larghezza di banda maggiore, come nel caso della codifica Manchester, o un filo aggiuntivo per l'orologio, come SPI e I2C.
SPI (Serial Peripheral Interface) è un altro protocollo seriale molto semplice. Un master invia un segnale di clock e ad ogni impulso di clock si sposta di un bit verso lo slave e un bit in ingresso, proveniente dallo slave. I nomi dei segnali sono quindi SCK per clock, MOSI per Master Out Slave In e MISO per Master In Slave Out. Utilizzando i segnali SS (Slave Select) il master può controllare più di uno slave sul bus. Esistono due modi per collegare più dispositivi slave a un master, uno è menzionato sopra, ad esempio utilizzando la selezione slave e l'altro è il collegamento in cascata, utilizza meno pin hardware (selezionare le linee), ma il software diventa complicato.
I2C(Inter-Integrated Circuit, pronunciato "I squadrato C") è anche un protocollo sincrono, ed è il primo che vediamo che contiene un po 'di "intelligenza"; gli altri, stupidamente, spostavano i bit dentro e fuori, e questo era quello. I2C utilizza solo 2 fili, uno per l'orologio (SCL) e uno per i dati (SDA). Ciò significa che master e slave inviano dati sullo stesso filo, sempre controllati dal master che crea il segnale di clock. I2C non utilizza selezioni slave separate per selezionare un determinato dispositivo, ma ha indirizzamento. Il primo byte inviato dal master contiene un indirizzo a 7 bit (in modo da poter utilizzare 127 dispositivi sul bus) e un bit di lettura / scrittura, indicando se anche i byte successivi verranno dal master o dovrebbero provenire dal schiavo. Dopo ogni byte, il destinatario deve inviare uno "0" per confermare la ricezione del byte, che il master si blocca con un impulso del nono clock. Se il master vuole scrivere un byte, lo stesso processo si ripete: il master inserisce bit dopo bit sul bus e ogni volta dà un impulso di clock per segnalare che i dati sono pronti per la lettura. Se il master desidera ricevere dati, genera solo gli impulsi di clock. Lo slave deve fare attenzione che il prossimo bit sia pronto quando viene dato l'impulso di clock. Questo protocollo è brevettato da NXP (precedentemente Phillips), per risparmiare sui costi di licenza, Atmel usando la parola TWI (interfaccia a 2 fili) che corrisponde esattamente a I2C, quindi qualsiasi dispositivo AVR non avrà I2C ma avrà TWI. Se il master desidera ricevere dati, genera solo gli impulsi di clock. Lo slave deve fare attenzione che il prossimo bit sia pronto quando viene dato l'impulso di clock. Questo protocollo è brevettato da NXP (precedentemente Phillips), per risparmiare sui costi di licenza, Atmel usando la parola TWI (interfaccia a 2 fili) che corrisponde esattamente a I2C, quindi qualsiasi dispositivo AVR non avrà I2C ma avrà TWI. Se il master desidera ricevere dati, genera solo gli impulsi di clock. Lo slave deve fare attenzione che il prossimo bit sia pronto quando viene dato l'impulso di clock. Questo protocollo è brevettato da NXP (precedentemente Phillips), per risparmiare sui costi di licenza, Atmel usando la parola TWI (interfaccia a 2 fili) che corrisponde esattamente a I2C, quindi qualsiasi dispositivo AVR non avrà I2C ma avrà TWI.
Due o più segnali sullo stesso filo possono causare conflitti e si potrebbe avere un problema se un dispositivo invia uno "1" mentre l'altro invia uno "0". Pertanto il bus è cablato-OR: due resistori portano il bus a un livello elevato e i dispositivi inviano solo livelli bassi. Se vogliono inviare un livello elevato rilasciano semplicemente il bus.
TTL (Transistor Transistor Logic) non è un protocollo. È una tecnologia più vecchia per la logica digitale, ma il nome viene spesso utilizzato per fare riferimento alla tensione di alimentazione a 5 V, spesso erroneamente riferita a quello che dovrebbe essere chiamato UART.
A proposito di ognuno di questi puoi scrivere un libro e sembra che stia bene sulla mia strada. Questa è solo una breve panoramica, facci sapere se alcune cose necessitano di chiarimenti.