Lo UART o Universal Asynchronous Receiver-Transmitter (ricevitore-trasmettitore asincrono universale) è un dispositivo hardware, di uso generale o dedicato, che converte flussi di bit di dati da un formato parallelo a un formato seriale asincrono o viceversa.
Gli USART (Universal Synchronous-Asynchronous Receiver/Transmitter), hanno il compito di gestire le comunicazioni delle interfacce seriali RS-232. Costituiscono un'evoluzione degli UART, come si evince dal nome stesso, in grado di gestire anche trasmissioni seriali sincrone. In un secondo tempo furono dotati di un buffer interno di tipo FIFO.
Storia
Il primo USART montato sul PC IBM fu l'Intel 8251A denominato Programmable Communication Interface, un'USART ad un solo canale. Mentre il 8250 UART della National Semiconductor fu installato nella prima gamma di IBM PC per gestire la porta seriale RS-232 e successivamente installato su una vasta gamma di dispositivi dell'epoca.[1] Il 8250 aveva una velocità massima (programmable) di 9600 bps. Nella linea IBM Personal Computer/AT fu sostituito dal migliorato 16450.
A seguire fu rilasciato il 16550 UART della National Semiconductor introdotto inizialmente nella gamma IBM PS/2 e poteva andare ad una velocità massima di 115200 bps. Per ovviare alla gestione degli interrupt carattere per carattere, rallentando la CPU, il 16550 offriva un bufferFIFO a 16-byte. Sia l'interfaccia hardware che software del 16550 sono retro-compatibili con il 16450 UART. La sua ultima revisione è la 16550D rilasciata nel 1995.[2]
A partire dagli anni 2000, la maggior parte dei produttori di computer IBM compatibili ha iniziato a rimuovere le porte RS-232 esterne in favore di connessioni più veloci e versatili come l'USB. Per gli utenti che necessitano ancora di porte seriali RS-232, vengono comunemente utilizzati adattatori USB-UART esterni.
Descrizione
Ogni famiglia di microprocessori ha la sua UART/USART dedicata. Nei microcontrollori, quando disponibile, questa funzione è interna agli stessi.
La famiglia Z80 chiamava questi componenti "Serial Input Output": SIO0, SIO1, SIO2 che erano degli USART a 2 canali, e il SIO9 che aveva un solo canale. Della famiglia faceva parte anche un componente asincrono chiamato DART (Dual Asynchronous Receiver Trasmitter).