Trasmissione seriale sincrona e asincrona

0
694

internetofthingsUART e USART sono spesso intercambiabili, ma non sempre: i concetti di fondo e una breve discussione della differenze.

 In un momento in cui gli argomenti di maggior richiamo sono Cloud, Internet of Things, digitalizzazione dei processi produttivi (leggi Industry 4.0), robot collaborativi, può sembrare poco significativo se non addirittura noioso dedicarsi all’analisi delle funzioni UART e USART. Ma se ci si sofferma per esempio sulle caratteristiche degli attuali microcontrollori, inevitabile materia prima di alcune tipologie di applicazioni IoT, si vede che entrambe le periferiche sono integrate, o anche solo una di esse, e a questo punto le differenze contano nella scelta del device più opportuno all’applicazione. Questo, senza dimenticare che a fronte della massa incombente della complessità del momento, le cose più semplici sono date per scontate, per cui un breve refresh non guasta.

Il funzionamento di un UART

Il termine UART sta per Universal Asynchronous Receiver/Transmitter, e indica una periferica di un microcontrollore che converte  i dati in ingresso e in uscita in una sequenza seriale. Lo stream dati inizia con un bit di start, individuato da una transizione dallo stato di “riposo” della linea (marking state corrispondente allo stato logico “1”) allo stato di trasmissione (corrispondente allo stato logico “0”), per una durata pari al bit time. La fine dello stream è invece definita dallo stop bit, corrispondente a uno stato logico “1”, considerando che a seconda delle codifiche adottate, sono usati uno oppure due stop bit. Il riconoscimento di uno stato logico “1” come stop bit è possibile in quanto il ricevitore conosce il numero di bit costituenti un carattere: esaurita l’acquisizione del previsto numero di bit, compreso l’eventuale bit di parità, un successivo stato logico “1” indica la fine del carattere. La parità può essere “even” o “odd”, con ciò indicando il numero pari o dispari di stati logici “1” trasmessi, parità compresa. Questo tipo di trasmissione è usualmente definita come trasmissione start-stop o seriale asincrona.

USART, le basi

Il termine UART sta per Synchronous/Asynchronous Receiver/Transmitter, e indica una periferica di un un microcontrollore che converte  i dati in ingresso e in uscita in una sequenza seriale. Come si vede, la definizione è la stessa del precedente UART, a parte la presenza della qualifica “synchronous”, che si evidenzia funzionalmente nel modo in cui viene fornito il clock ai dati seriali. Infatti, un UART genera il suo data clock internamente al microcontrollore, sincronizzandolo con il data stream a partire dallo start bit: detto diversamente non c’è un segnale di clock proveniente dall’esterno da associarsi ai dati, e conseguentemente il ricevitore deve conoscere in anticipo quale sarà il baud rate del trasmettitore. Un USART, invece, può essere settato a operare in modo sincrono, con la periferica trasmittente che genera un clock che la periferica ricevente può estrarre dal data stream senza conoscere in anticipo il baud rate, e questo clock in alternativa può essere fornito anche con una linea separata. Come effetto, l’uso di un clock esterno permette un data rate molto più alto di quello ottenibile da un UART.

Altre differenze

Un’altra differenza tra UART e USART riguarda i protocolli supportati. Nel primo caso le opzioni sono limitate a tipo di parità e a numero dei bit di stop, mentre con un USART sono implementabili differenti standard, per esempio anche Modbus. Da considerare inoltre che un USART ha le stesse capacità asincrone di un UART, per cui sono generabili data stream in modalità start-stop. Considerando come esempio reale un microcontrollore della famiglia STM32 di STMicroelectronics basata sul processore ARM Cortex-M, un progettista può trovare entrambe le periferiche on-chip: l’USART può essere usato per comunicazioni seriali “pesanti”, in periodi di alti consumi di energia, mentre quando il microcontrollore è in low power mode, tramite UART si possono gestire comunicazioni a bassa velocità riducendo i consumi.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here