36
5.6. Comunicația UART
UART este o abreviere de la Universal Asynchronous Receiver Transmitter. Așa cum îi spune numele,
este o comunicație asincronă (nu are un pin special de clock pe magistrala de transmisie a datelor) de
recepție și transmisie.
În comunicația UART există, de regulă, 8 biți de date precedați de un bit de start, iar după biții de date
urmează un bit opțional, bitul de paritate, iar apoi sunt 1, 1.5 sau 2 biți de stop, în funcție de standardul ales
de utilizator [http://csit-sun.pub.ro/~duca/cn/uart/2015/Comunicatia-seriala- asincrona.pdf]. O diagramă cu
stările de transmisie a unui cuvânt pe UART poate fi văzută în Fig. 45: Biții ce formează un cuvânt UART.
Fig. 45: Biții ce formează un cuvânt UART
Durata de transmisie a unui bit este în funcție de așa numitul Baud Rate. Acesta reprezintă numărul de
biți ce sunt transmiși pe secundă, astfel se poate calcula rapid la cât timp trebuie schimbat bitul ce trebuie
transmis pentru a respecta Baud Rate-ul ales. Unul dintre cele mai cunoscute și utilizate Baud Rate-uri este
9600, astfel timpul ce trece de la apariția unui bit la altul este de 1 / 9600 sec ≈ 104 us.
Sună ciudat faptul că, la final, pot exista 1.5 biți de stop, însă, așa cum am explicat mai sus, acești 1.5
reprezintă, de fapt, un interval de timp dintre bitul de paritate sau, dacă acesta nu există, dintre ultimul bit
de date, Bit 7, și efectiv finalul cuvântului transmis pe UART. După acest moment, poate fi transmis oricând
un nou cuvânt, iar dacă acest lucru nu se întâmplă, atunci se intră într-o stare de IDLE care menține data de
transmisie la ‘1’ logic. Practic, această stare IDLE este ca o prelungire a bitului de STOP.
Pentru exemplul cu Baud Rate 9600, acest 1.5 biți de stop reprezintă o durată de 1.5 * 104 = 156 de
microsecunde de la transmisia ultimului bit de date, timp în care semnalul transmis va fi ‘1’.
Un aspect important în comunicația UART dintre placă și un PC este cunoașterea caracterelor ce vor fi
transmise. Pentru aceasta, trebuie consultat un tabel ASCII. Mai jos este un tabel ASCII cu caracterele de
bază, ce poate fi utilizat cu succes.
Hx Car Hx Car Hx Car Hx Car Hx Car
30 0 40 @ 50 P 60 ` 70 p
31 1 41 A 51 Q 61 a 71 q
32 2 42 B 52 R 62 b 72 r
33 3 43 C 53 S 63 c 73 s
34 4 44 D 54 T 64 d 74 t
35 5 45 E 55 U 65 e 75 u
36 6 46 F 56 V 66 f 76 v
37 7 47 G 57 W 67 g 77 w
38 8 48 H 58 X 68 h 78 x