16550 UART τσιπάκι (NS16550) κατασκευασμένο από την National Semiconductor.
Το **UART** είναι η συντομογραφία του *universal asynchronous receiver/transmitter*, (προφέρεται ως **/ˈ|juː|ɑr|t/**) και είναι ένα κύκλωμα των υπολογιστών το οποίο διαμεσολαβεί στην σειριακή επικοινωνία υπολογιστών ή υπολογιστών με συσκευές (ή και Ενσωματωμένων υπολογιστικών συστημάτων - Embedded Computer Systems όπως μικροελεγκτές). Η επικοινωνία των UART γίνεται δια μέσου των στάνταρντ θυρών RS-232, RS-422 ή RS-485. Η ταχύτητα επικοινωνίας (ρυθμός μετάδοσης) μπορεί να παραμετροποιηθεί και μετριέται σε baud rate (bits/sec). Σήμερα το κύκλωμα UART είναι ενσωματωμένο ως κύκλωμα τσιπ μέσα στον υπολογιστή ή στην περιφερειακή συσκευή. Το διπλό UART λέγεται *DUART* (συντομογραφία Dual UART) συνδυάζει δύο κυκλώματα UART μέσα σε ένα τσιπάκι. Αντίστοιχα υπάρχουν τσιπάκια με οκτώ UART τα οποία λέγονται OCTART . Σήμερα UART χρησιμοποιούνται συχνά στην επικοινωνία μικροελεγκών (για παράδειγμα ο μικροελεγκτής TM4C123GH6PM της Texas Instruments έχει 8 UART ).

Μεταφορά σειριακών δεδομένων
----------------------------

Ένα UART παίρνει bytes δεδομένων και τα στέλνει σε σειριακή μορφή ως bits. Στον προορισμό ένα δεύτερο UART συλλέγει τα bits και δημιουργεί τα bytes δεδομένων που αποστάλθηκαν. Κάθε UART περιέχει ένα καταχωρητή ολίσθησης (*shift register*) ο οποίος χρησιμοποιείται για την μετατροπή της σειριακής σε παράλληλη μορφή (εγγραφή/διάβασμα των δεδομένων μέσα ένα καταχωρητή από λήψη ή για αποστολή - τα δεδομένα που λαμβάνονται/στέλνονται σε ένα UART θα πρέπει να αποθηκευτούν μέσα σε ένα καταχωρητή του συστήματος με παράλληλο τρόπο). Στην επικοινωνία με UART υπάρχουν εξωτερικά κυκλώματα που μετατρέπουν τα επίπεδα των volt (λογικά επίπεδα) του σήματος του καλωδίου σε αυτό που χρησιμοποιεί το UART. Για παράδειγμα ένα τέτοιο κύκλωμα είναι το MAX 3232 ή Maxim τσίπ το οποίο προσαρμόζει το σήμα σε επίπεδα -5.5V (λογικό 0) και +5.5V (λογικό 1) από τα αρχικά σήματα του μικροελεγκτή (ο μικροελεγκτής TM4C123GH6PM της Texas Instruments δίνει σήμα σε επίπεδο 0V (λογικό 0) και +3.3V (λογικό 1)). Τα σήματα των καλωδίων μπορούν να έχουν διαφορετικές μορφές. Η προτυποποίηση των επιπέδων σήματος (Volt) στα καλώδια RS-232, RS-422 και RS-485  ορίζεται από τον οργανισμό EIA (Electronic Industries Alliance). Η επικοινωνία μέσω του UART μπορεί να είναι απλή (simplex: προς μια κατεύθυνση μόνο - χωρίς να υπάρχει πρόβλεψη ο δέκτης να στείλει πίσω κάποιο σήμα), αμφίδρομη (πλήρης) ταυτόχρονη επικοινωνία (full duplex: και οι δύο συσκευές στέλνουν και δέχονται σήματα την ίδια στιγμή), αμφίδρομη εναλλασσόμενη επικοινωνία (half duplex: κάθε συσκευή παίρνει σειρά στο να αποστείλει ή να λάβει δεδομένα - δεν γίνεται αποστολή-λήψη την ίδια στιγμή).

### Πλαίσια χαρακτήρων

Κατά την επικοινωνία με UART στέλνονται πλαίσια δεδομένων (data frames) όπου το καθένα περιέχει ένα χαρακτήρα. Το μέγεθος του πλαισίου χαρακτήρων μπορεί να είναι 10bits (χωρίς bit έλεγχο parity) όπου υπάρχει ένα start bit και ένα stop bit στην αρχή και το τέλος και είναι διαθέσιμα 8 bits για την κωδικοποίηση του χαρακτήρα που στέλνουμε-παίρνουμε.

|  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Αριθμός bit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|  | Start bit | 5–8 data bits | Stop bit(s) |
|  | Start | Data 0 | Data 1 | Data 2 | Data 3 | Data 4 | Data 5 | Data 6 | Data 7 | Stop |

Κατά την κατάσταση ετοιμότητας (idle) υπάρχει κατάσταση δεδομένων 1 (high-voltage). Αυτό η τεχνική υπήρχε από την εποχή της τηλεγραφίας όπου η γραμμή κρατιόταν με τάση (high voltage) ώστε ο αποστολέας να μην πάθει βλάβη. Κάθε χαρακτήρας αποστέλνεται αφού πρώτα σταλεί ένα low voltage 0 (start bit). Το start bit λαμβάνεται πρώτο από το δέκτη και καταλαβαίνει ότι ξεκινά/ακολουθεί μετάδοση bits. Στην συνέχεια στέλνονται με σταθερό χρονικό ρυθμό τα 8 bits (μπορεί να είναι και 5 ή 6 ή 7 bits ανάλογα με την παραμετροποίηση που ακολουθείται  ) που κωδικοποιούν τον χαρακτήρα που στέλνουμε. Στο τέλος αποστέλλεται το stop bit και η αποστολή του μεμονωμένου χαρακτήρα ολοκληρώνεται. Στο παραπάνω διάγραμμα έχουμε ένα πλαίσιο δεδομένων (data frame) μεγέθους 10 bits. Το αριστερό data bit (Least Significant Bit ή LSB) πάντα αποστέλλεται πρώτο. Εάν υπάρχει bit ελέγχου parity, τότε αυτό μπαίνει μετά τα bits των δεδομένων και πριν το τελικό stop bit(s).

Εξωτερικοί σύνδεσμοι
--------------------

* Frank, Durda. «Serial and UART Tutorial». www.freebsd.org.

Παραπομπές
----------

1. 1 2  «Understanding Serial Communications Configuring baud rates and data format for RS232 RS422 and multi-drop RS485 protocols». Documents, tutorials, how-to guides, product manuals, specifications -- programming single board computers, instrument controllers and microcontrollers for measurement, control, SCADA, instrumentation and industrial automationMosaic Documentation Web. Ανακτήθηκε στις 9 Μαΐου 2014.
2. ↑  «SC26C92 Dual universal asynchronous receiver/transmitter (DUART)» (PDF). Philips. Αρχειοθετήθηκε από το πρωτότυπο (PDF) στις 22 Φεβρουαρίου 2016. Ανακτήθηκε στις 9 Μαΐου 2014.
3. ↑  «SC28L198 Octal UART for 3.3 V and 5 V supply voltage» (PDF). Philips. Αρχειοθετήθηκε από το πρωτότυπο (PDF) στις 22 Ιουλίου 2014. Ανακτήθηκε στις 9 Μαΐου 2014.
4. ↑  *Tiva TM4C123GH6PM Microcontroller: Data Sheet* (PDF). Texas Instruments. 2013. σελ. 891.
5. ↑  Adam Osborne, *An Introduction to Microcomputers Volume 1: Basic Concepts*, Osborne-McGraw Hill Berkeley California USA, 1980 ISBN 0-931988-34-9 pp. 116-126
6. ↑  Jonathan, Valvano (2013). *Introduction to ARM Cortex-M Microcontrollers - Embedded Systems*. σελ. 319. ISBN 978-1477508992.
7. ↑  «Quick Reference for RS485, RS422, RS232 AND RS423». RESmith Inc. Ανακτήθηκε στις 9 Μαΐου 2014.
8. ↑  Lipovski, G. Jack (1999). *Single and Multi-Chip Microcontroller Interfacing: For the Motorola 6812*. Academic Press. σελίδες 408–414. ISBN 0-12-451830-3.
9. ↑  «Serial I/Ο (UART)» (PDF). Samsung Electronics. [*νεκρός σύνδεσμος*]
10. ↑  Jonathan, Valvano (2013). *Introduction to ARM Cortex-M Microcontrollers - Embedded Systems*. σελ. 318. ISBN 978-1477508992.
11. ↑  Frank, Durda. «Serial and UART Tutorial». www.freebsd.org.