Articles

Comunicazione seriale

Posted on
Collaboratori: jimblom

Favorite Favorite 88

Condividi

Usa questo URL per condividere:

UARTs

Il pezzo finale di questo puzzle seriale è trovare qualcosa che crei i pacchetti seriali e controlli quelle linee hardware fisiche. Inserisci l’UART.

Un ricevitore/trasmettitore asincrono universale (UART) è un blocco di circuiti responsabile dell’implementazione della comunicazione seriale. Essenzialmente, l’UART agisce come un intermediario tra le interfacce parallela e seriale. A un’estremità dell’UART c’è un bus di otto o più linee di dati (più alcuni pin di controllo), dall’altra ci sono i due fili seriali – RX e TX.

UART semplificato
Interfaccia UART super-semplificata. Parallela da un lato, seriale dall’altro.

Le UART esistono come circuiti integrati indipendenti, ma si trovano più comunemente all’interno dei microcontrollori. Dovrete controllare il datasheet del vostro microcontrollore per vedere se ha delle UART. Alcuni non ne hanno, alcuni ne hanno uno, altri ne hanno molti. Per esempio, l’Arduino Uno – basato sul “vecchio fedele” ATmega328 – ha solo una singola UART, mentre l’Arduino Mega – costruito su un ATmega2560 – ha ben quattro UART. Sul lato della trasmissione, un UART deve creare il pacchetto di dati – aggiungendo bit di sincronia e parità – e inviare quel pacchetto sulla linea TX con una tempistica precisa (secondo il baud rate impostato). All’estremità della ricezione, l’UART deve campionare la linea RX in base al baud rate previsto, prelevare i bit di sincronizzazione e sputare fuori i dati.

UART interno
Schema a blocchi dell’UART interno (per gentile concessione del datasheet dell’Exar ST16C550)

Gli UART più avanzati possono gettare i dati ricevuti in un buffer, dove possono rimanere fino a quando il microcontrollore viene a prenderli. Gli UART di solito rilasciano i loro dati bufferizzati su una base FIFO (first-in-first-out). I buffer possono essere piccoli come pochi bit, o grandi come migliaia di byte.

UART software

Se un microcontrollore non ha un UART (o non ne ha abbastanza), l’interfaccia seriale può essere bit-banged – controllata direttamente dal processore. Questo è l’approccio che le librerie Arduino come SoftwareSerial adottano. Il bit-banging richiede molto processore e di solito non è preciso come un UART, ma funziona in un pizzico!

Condividi

Usa questo URL per condividere:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *