UART

Το 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 για την κωδικοποίηση του χαρακτήρα που στέλνουμε-παίρνουμε. Κατά την κατάσταση ετοιμότητας (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.