- Tipi di protocolli di comunicazione
- Modalità di trasmissione nella comunicazione seriale
- Sincronizzazione dell'orologio
- Altri termini relativi alla comunicazione seriale
- Protocolli seriali sincroni
- Protocolli seriali asincroni
- Conclusione
Prima di iniziare con i protocolli di comunicazione seriale, suddividiamo la terminologia in tre parti. La comunicazione è una terminologia molto nota che prevede lo scambio di informazioni tra due o più mezzi. Nei sistemi embedded, la comunicazione significa lo scambio di dati tra due microcontrollori sotto forma di bit. Questo scambio di bit di dati nel microcontrollore viene effettuato da una serie di regole definite note come protocolli di comunicazione. Ora se i dati vengono inviati in serie, cioè uno dopo l'altro, il protocollo di comunicazione è noto come protocollo di comunicazione seriale. Più specificamente, i bit di dati vengono trasmessi uno alla volta in modo sequenziale sul bus dati o canale di comunicazione in comunicazione seriale.
Tipi di protocolli di comunicazione
Sono disponibili diversi tipi di trasferimento dati nell'elettronica digitale, come la comunicazione seriale e la comunicazione parallela. Allo stesso modo i protocolli sono divisi in due tipi, come Serial Communication Protocol e Parallel Communication Protocol. Esempi di protocolli di comunicazione parallela sono ISA, ATA, SCSI, PCI e IEEE-488. Allo stesso modo ci sono diversi esempi di protocolli di comunicazione seriale come CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire e SATA ecc.
In questo articolo verranno discussi i diversi tipi di protocolli di comunicazione seriale. La comunicazione seriale è l'approccio più utilizzato per trasferire informazioni tra periferiche di elaborazione dati. Ogni dispositivo elettronico che si tratti di Personal Computer (PC) o Mobile funziona su comunicazione seriale. Il protocollo è la forma di comunicazione sicura e affidabile con un insieme di regole indirizzate dall'host di origine (mittente) e dall'host di destinazione (destinatario) simili alla comunicazione parallela.
Modalità di trasmissione nella comunicazione seriale
Come già detto sopra che nella comunicazione seriale i dati vengono inviati sotto forma di bit cioè impulsi binari ed è noto che uno binario rappresenta la logica ALTA e lo zero rappresenta la logica BASSA. Esistono diversi tipi di comunicazione seriale a seconda del tipo di modalità di trasmissione e trasferimento dati. Le modalità di trasmissione sono classificate come Simplex, Half Duplex e Full Duplex.
Metodo simplex:
Nel metodo simplex è possibile attivare contemporaneamente il mezzo, ovvero il mittente o il destinatario. Quindi, se il mittente sta trasmettendo i dati, il destinatario può solo accettare e viceversa. Quindi il metodo simplex è una tecnica di comunicazione unidirezionale. Gli esempi ben noti del metodo simplex sono la televisione e la radio.
Metodo Half Duplex:
Nel metodo half duplex sia mittente che destinatario possono essere attivi ma non contemporaneamente. Quindi, se il mittente sta trasmettendo, il destinatario può accettare ma non può inviare e allo stesso modo viceversa. L'esempio ben noto di half duplex è Internet in cui l'utente invia una richiesta di dati e la ottiene dal server.
Metodo full duplex:
Nel metodo full duplex, sia il ricevitore che il trasmettitore possono scambiarsi dati contemporaneamente. L'esempio noto è il telefono cellulare.
Oltre a questo, per una trasmissione dati appropriata, l'orologio gioca un ruolo importante ed è una delle fonti primarie. Il malfunzionamento dell'orologio provoca una trasmissione dati inaspettata anche a volte una perdita di dati. Quindi, la sincronizzazione dell'orologio diventa molto importante quando si utilizza la comunicazione seriale.
Sincronizzazione dell'orologio
L'orologio è diverso per i dispositivi seriali ed è classificato in due tipi. Interfaccia seriale sincrona e interfaccia seriale asincrona.
Interfaccia seriale sincrona:
È una connessione punto a punto da un master a uno slave. In questo tipo di interfaccia, tutti i dispositivi utilizzano un unico bus CPU per condividere dati e clock. La trasmissione dei dati diventa più veloce con lo stesso bus per condividere clock e dati. Inoltre non vi è alcuna discrepanza nella velocità di trasmissione in questa interfaccia. Sul lato trasmettitore, c'è uno spostamento dei dati sulla linea seriale che fornisce l'orologio come segnale separato poiché non ci sono bit di avvio, arresto e parità vengono aggiunti ai dati. Sul lato ricevitore, i dati vengono estratti utilizzando l'orologio fornito dal trasmettitore e converte i dati seriali nella forma parallela. Gli esempi ben noti sono I2C e SPI.
Interfaccia seriale asincrona:
Nell'interfaccia seriale asincrona, il segnale di clock esterno è assente. Le interfacce seriali asincrone possono essere viste principalmente in applicazioni a lunga distanza e sono perfette per la comunicazione stabile. Nell'interfaccia seriale asincrona l'assenza di Clock Source esterno fa affidamento su diversi parametri come il controllo del flusso di dati, il controllo degli errori, il controllo della velocità di trasmissione, il controllo della trasmissione e il controllo della ricezione. Sul lato trasmettitore, c'è uno spostamento di dati paralleli sulla linea seriale utilizzando il proprio orologio. Inoltre aggiunge i bit di inizio, fine e controllo di parità. Sul lato ricevitore, il ricevitore estrae i dati utilizzando il proprio clock e riconverte i dati seriali nella forma parallela dopo aver rimosso i bit di avvio, arresto e parità. Gli esempi ben noti sono RS-232, RS-422 e RS-485.
Altri termini relativi alla comunicazione seriale
Oltre alla sincronizzazione dell'orologio, ci sono alcune cose da ricordare quando si trasferiscono i dati in modo seriale, come la velocità di trasmissione, la selezione dei bit di dati (Framing), la sincronizzazione e il controllo degli errori. Parliamo brevemente di questi termini.
Baud rate: la velocità in baud è la velocità alla quale i dati vengono trasferiti tra il trasmettitore e il ricevitore sotto forma di bit al secondo (bps). La velocità di trasmissione più comunemente usata è 9600. Ma ci sono altre selezioni di velocità di trasmissione come 1200, 2400, 4800, 57600, 115200. Più la velocità di trasmissione sarà grassa, i dati saranno trasferiti alla volta. Anche per la comunicazione dati il baud rate deve essere lo stesso sia per il trasmettitore che per il ricevitore.
Framing: il framing si riferisce al numero di bit di dati da inviare dal trasmettitore al ricevitore. Il numero di bit di dati varia in caso di applicazione. La maggior parte dell'applicazione utilizza 8 bit come bit di dati standard, ma può essere selezionata anche come 5, 6 o 7 bit.
Sincronizzazione: i bit di sincronizzazione sono importanti per selezionare un blocco di dati. Indica l'inizio e la fine dei bit di dati. Il trasmettitore imposterà i bit di inizio e fine al frame di dati e il ricevitore lo identificherà di conseguenza ed eseguirà l'ulteriore elaborazione.
Controllo degli errori: Il controllo degli errori gioca un ruolo importante durante la comunicazione seriale poiché ci sono molti fattori che influenzano e aggiungono il rumore nella comunicazione seriale. Per eliminare questo errore vengono utilizzati i bit di parità in cui la parità verificherà la parità pari e dispari. Quindi, se il frame di dati contiene il numero pari di 1, è noto come parità pari e il bit di parità nel registro è impostato su 1. Allo stesso modo se il frame di dati contiene un numero dispari di 1, allora è noto come parità dispari e cancella il bit di parità dispari nel registro.
Il protocollo è proprio come un linguaggio comune utilizzato dal sistema per comprendere i dati. Come descritto sopra, il protocollo di comunicazione seriale è suddiviso in tipologie ovvero Sincrono e Asincrono. Ora entrambi verranno discussi in dettaglio.
Protocolli seriali sincroni
Il tipo sincrono di protocolli seriali come SPI, I2C, CAN e LIN sono utilizzati in diversi progetti perché è una delle migliori risorse per le periferiche di bordo. Anche questi sono i protocolli ampiamente utilizzati nelle principali applicazioni.
Protocollo SPI
La Serial Peripheral Interface (SPI) è un'interfaccia sincrona che consente l'interconnessione di diversi microcontrollori SPI. In SPI, sono necessari cavi separati per i dati e la linea di clock. Anche l'orologio non è incluso nel flusso di dati e deve essere fornito come segnale separato. L'SPI può essere configurato come master o come slave. I quattro segnali SPI di base (MISO, MOSI, SCK e SS), Vcc e Ground fanno parte della comunicazione dei dati. Quindi ha bisogno di 6 fili per inviare e ricevere dati da slave o master. Teoricamente, l'SPI può avere un numero illimitato di slave. La comunicazione dei dati è configurata nei registri SPI. L'SPI può fornire fino a 10 Mbps di velocità ed è ideale per la comunicazione dati ad alta velocità.
La maggior parte dei microcontrollori ha il supporto integrato per SPI e può essere collegato direttamente al dispositivo supportato da SPI:
- Comunicazione SPI con microcontrollore PIC PIC16F877A
- Come utilizzare la comunicazione SPI nel microcontrollore STM32
- Come utilizzare SPI in Arduino: comunicazione tra due schede Arduino
Comunicazione seriale I2C
Comunicazione a due linee tra circuiti integrati (I2C) tra diversi circuiti integrati o moduli in cui due linee sono SDA (Serial Data Line) e SCL (Serial Clock Line). Entrambe le linee devono essere collegate a un'alimentazione positiva utilizzando una resistenza di pull up. I2C può fornire velocità fino a 400 Kbps e utilizza un sistema di indirizzamento a 10 bit o 7 bit per indirizzare un dispositivo specifico sul bus i2c in modo da poter collegare fino a 1024 dispositivi. Ha una comunicazione di lunghezza limitata ed è ideale per la comunicazione a bordo. Le reti I2C sono facili da configurare poiché utilizzano solo due fili e nuovi dispositivi possono essere semplicemente collegati alle due linee bus I2C comuni. Come l'SPI, il microcontrollore generalmente ha pin I2C per collegare qualsiasi dispositivo I2C:
- Come utilizzare la comunicazione I2C nel microcontrollore STM32
- Comunicazione I2C con microcontrollore PIC PIC16F877
- Come utilizzare I2C in Arduino: comunicazione tra due schede Arduino
USB
USB (Universal Serial Bus) è ampiamente protocollo con diverse versioni e velocità. È possibile collegare un massimo di 127 periferiche a un singolo controller host USB. USB funge da dispositivo "plug and play". Le USB sono utilizzate in quasi dispositivi come tastiere, stampanti, dispositivi multimediali, fotocamere, scanner e mouse. È progettato per una facile installazione, una classificazione dei dati più rapida, meno cavi e hot swap. Ha sostituito le porte seriali e parallele più voluminose e lente. L'USB utilizza la segnalazione differenziale per ridurre le interferenze e consentire la trasmissione ad alta velocità su lunghe distanze.
Un bus differenziale è costruito con due fili, uno rappresenta i dati trasmessi e l'altro il suo complemento. L'idea è che la tensione "media" sui fili non trasporta alcuna informazione, con conseguente minore interferenza. In USB, i dispositivi possono assorbire una certa quantità di energia senza chiedere all'host. USB utilizza solo due fili per il trasferimento dei dati e sono più veloci dell'interfaccia seriale e parallela. Le versioni USB supportano velocità diverse come 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5 Gbps (USB v3.0). La lunghezza del singolo cavo USB può raggiungere fino a 5 metri senza hub e 40 metri con hub.
PUÒ
Il Controller Area Network (CAN) viene utilizzato ad esempio nel settore automobilistico per consentire la comunicazione tra ECU (unità di controllo del motore) e sensori. Il protocollo CAN è robusto, a basso costo e basato su messaggi e copre molte applicazioni, ad esempio automobili, camion, trattori, robot industriali. Il sistema CAN bus consente la diagnosi e la configurazione centralizzata degli errori su tutte le ECU. I messaggi CAN hanno la priorità tramite ID in modo che gli ID con la priorità più alta non vengano interrotti. Ogni ECU contiene un chip per ricevere tutti i messaggi trasmessi, decidere la rilevanza e agire di conseguenza - questo consente una facile modifica e l'inclusione di nodi aggiuntivi (ad esempio, data logger CAN bus). Le applicazioni includono avvio / arresto di veicoli, sistemi di prevenzione delle collisioni. I sistemi bus CAN possono fornire velocità fino a 1 Mbps.
Microwire
MICROWIRE è un'interfaccia seriale a 3 fili a 3 Mbps essenzialmente un sottoinsieme dell'interfaccia SPI. Microwire è una porta I / O seriale su microcontrollori, quindi il bus Microwire si troverà anche su EEPROM e altri chip periferici. Le 3 linee sono SI (Serial Input), SO (SerialOutput) e SK (Serial Clock). La linea di ingresso seriale (SI) al microcontrollore, SO è la linea di uscita seriale e SK è la linea di clock seriale. I dati vengono spostati sul fronte discendente di SK e sono valutati sul fronte ascendente. SI è spostato sul fronte di salita di SK. Un ulteriore miglioramento del bus a MICROWIRE è chiamato MICROWIRE / Plus. La principale differenza tra i due bus sembra essere che l'architettura MICROWIRE / Plus all'interno del microcontrollore è più complessa. Supporta velocità fino a 3Mbps.
Protocolli seriali asincroni
Il tipo asincrono di protocolli seriali è molto essenziale quando si tratta di un trasferimento dati affidabile su lunghe distanze. La comunicazione asincrona non richiede un temporizzatore comune a entrambi i dispositivi. Ciascun dispositivo ascolta e invia indipendentemente impulsi digitali che rappresentano bit di dati a una velocità concordata. La comunicazione seriale asincrona viene talvolta definita seriale Transistor-Transistor Logic (TTL), dove il livello di alta tensione è logico 1 e la bassa tensione equivale a 0 logico. Quasi ogni microcontrollore sul mercato oggi ha almeno un ricevitore asincrono universale- Trasmettitore (UART) per comunicazione seriale. Gli esempi sono RS232, RS422, RS485 ecc.
RS232
L'RS232 (standard consigliato 232) è un protocollo molto comune utilizzato per collegare diverse periferiche come monitor, CNC, ecc. L'RS232 è disponibile in connettori maschio e femmina. L'RS232 è una topologia punto-punto con massimo un dispositivo collegato e copre distanze fino a 15 metri a 9600 bps. Le informazioni sull'interfaccia RS-232 vengono trasmesse digitalmente da 0 logici e 1. Il logico "1" (MARK) corrisponde a una tensione nell'intervallo da -3 a -15 V. Lo "0" logico (SPACE) corrisponde a un tensione nell'intervallo da +3 a +15 V. Viene fornito nel connettore DB9 che ha 9 piedinature come TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
L'RS422 è simile all'RS232 che consente di inviare e ricevere contemporaneamente messaggi su linee separate ma utilizza per questo un segnale differenziale. Nella rete RS-422, può esserci un solo dispositivo di trasmissione e fino a 10 dispositivi di ricezione. La velocità di trasferimento dati in RS-422 dipende dalla distanza e può variare da 10 kbps (1200 metri) a 10 Mbps (10 metri). La linea RS-422 è a 4 fili per la trasmissione dei dati (2 fili intrecciati per la trasmissione e 2 fili intrecciati per la ricezione) e un filo di terra GND comune. La tensione sulle linee dati può essere compresa tra -6 V e +6 V. La differenza logica tra A e B è maggiore di +0,2 V. Logico 1 corrisponde alla differenza tra A e B inferiore a -0,2 V. Lo standard RS-422 non definisce un tipo specifico di connettore, solitamente può essere una morsettiera o un connettore DB9.
RS485
Poiché RS485 utilizza la topologia multipunto, è più utilizzato nei settori e rappresenta il protocollo preferito dal settore. RS422 può collegare 32 driver di linea e 32 ricevitori in configurazioni differenziali ma con l'aiuto di ripetitori aggiuntivi e amplificatori di segnale fino a 256 dispositivi. L'RS-485 non definisce un tipo specifico di connettore, ma spesso è una morsettiera o un connettore DB9. La velocità di funzionamento dipende anche dalla lunghezza della linea e può raggiungere i 10 Mbit / sa 10 metri. La tensione sulle linee è compresa tra -7 V e +12 V. Esistono due tipi di RS-485 come la modalità half duplex RS-485 con 2 contatti e la modalità full duplex RS-485 con 4 contatti. Per ulteriori informazioni sull'utilizzo di RS485 con altri microcontrollori, controllare i collegamenti:
- Comunicazione seriale RS-485 MODBUS utilizzando Arduino UNO come Slave
- Comunicazione seriale RS-485 tra Raspberry Pi e Arduino Uno
- Comunicazione seriale RS485 tra Arduino Uno e Arduino Nano
- Comunicazione seriale tra STM32F103C8 e Arduino UNO tramite RS-485
Conclusione
La comunicazione seriale è uno dei sistemi di interfaccia di comunicazione ampiamente utilizzati nell'elettronica e nei sistemi embedded. Le velocità dei dati possono essere diverse per diverse applicazioni. I protocolli di comunicazione seriale possono giocare un ruolo decisivo quando si tratta di questo tipo di applicazioni. Quindi la scelta del protocollo seriale corretto diventa molto importante.