miercuri, 23 mai 2012

Interfata Asincrona USART


UART (Universal Asynchronous Receiver/Transmitter)  este cea mai simplă interfaţă serială asincronă care de asemenea este numită  ACIA (Asynchronous Communication Interface Adapter).
UART este asinconă pentru că nu se transmite semnal de ceas prin linia de date serială. Receptorul recunoaşte valorile binare individuale fără o linie comună de ceas.
Interfaţa UART constă din două părţi:
– un receptor (receiver - Rx) care converteşte un flux serial de biţi în date paralele (cuvinte) pentru microprocesor;
– un transmiţător (transmitter - Tx) care converteşte date paralele de la microprocesor într-un flux serial de biţi, pentru transmisie.
Diagrama functionala UART
UART furnizezază şi informaţie de stare, cum ar fi “receptorul este plin (datele au ajuns) sau transmiţătorul este gol (o transmisie în curs s-a terminat)
Interfaţa Serială Asincronă nu are un mecanism de sincronizare între module (interlocutori). Sincronizarea pe fluxuri de date este realizată de fiecare interlocutor în parte. Pentru a realiza sincronizarea pe fluxuri de date, în fluxul de date este introdusă informaţia tehnică despre transfer, cum ar fi:
a)      Start Transfer;
b)      Paritatatea;
c)      Stop – sfîrşitul transferului;
        Interlocutorii se sincronizează folosind informaţia tehnică. Pentru a transfera un număr de unităţi (o cantitate anumită) de date, va trebui anexată şi transferată şi informaţia tehnică. Un transfer de date impreună cu informaţia tehnică ce il însoţeşte, compune un Frame de date. 
          Formatul datelor transmise utilizează la începutul transmisiei pentru fiecare caracter un bit de start şi la sfârşit unul sau doi biţi de stop.  Receptorul îşi sincronizează ceasul după recepţionarea bitului de start şi apoi eşantionează biţii de date (7 sau 8 în funcţie de configuraţia sistemului). Dacă receptorul nu primeşte secvenţa de stop, se presupune că ceasul său este defazat faţă de al emiţătorului şi se declară o eroare de cadru.

Protocolul hardware de comunicare prin framuri
În starea pasivă se distinge:
1.        Linia de transfereste setată („1” logic);
2.       Începutul transferului este semnalizat de cîte o resetare a liniei, acest bit de informaţie este numit Start Bit;

3.        Se vor transfera un set de biţi consecutivi conform configuraţiei liniei de transfer cu o configuraţie de 5-10 biţi.
4.        Urmează bitul de paritate, ce oferă posibilitatea verificării integrităţii datelor transferate.
Detecţia erorilor de paritate
Pentru a detecta erorilor, multe sisteme folosesc bitul de paritate, pentru verificarea datelor recepţionate. Bitul de paritate e calculat de transmiţător şi e inclus în cadrul de date. Receptorul calculează paritatea pentru fiecare octet recepţionat. Dacă bitul de paritate calculat este identic cu cel recepţionat, receptorul presupune că nu sunt erori.
Calculul parităţii se evaluiază după logica XOR între biţii de date P=^DATA.  Pentru o transmisie corectă, emiţătorul şi receptorul trebuie să utilizeze acelaşi tip de paritate (P=0  even parity (par), sau P=1 odd parity(impar)).
Notă:  În dependenţă de de configuraţia de transfer, bitul de paritate poate fi exclus din frame.

5.       Urmează un set de indicatori care se numesc Stop Bit, care setează bus-ul. Lungimea indicatorului Stop poate fi [1; 1,5;  2] biţi. Valoarea bitului de stop depinde de eroarea vitezei de transfer dintre transmiţător şi receptor.

            Configuraţia unui frame de obicei este prezentat printr-o secvenţă de forma: „9600  8  N1” unde:
  • 9600 – viteza de transfer în baud/sec;
  • 8 – mărimea datelor;
  • N – excluderea bitului de paritate (P – includerea bitului de paritate);
  • 1 – numărul de biţide stop.

Viteza de transfer se măsoară în baud/sec, care reprezintă numărul de biţi de informaţie, atît tehnică cît şi de date transferate prin interfaţa serială (8 biţi/sec ≈ 11 baud/secundă). Viteza exprimată în biţi pe secundă va reprezenta viteza de transfer a datelor excluzînd informaţia tehnică.

Sincronizarea
Pentru ca datele să fie transferate cu siguranţă, înainte de a începe un transfer, interlocutorii trebuie să adopte aceeaşi viteză de transfer. Din motive că interlocutorii pot avea diferite metode de calcul/setare a vitezei de transfer, foarte frecvent apare situaţia de apariţie a unei erori în cadrul liniei de transfer. Eroarea maximă admisibilă a vitezei de transfer este < 0,5 bit/frame. Dacă viteza de transfer depăşeşte această valoare, va apărea eroarea de transfer.
Linkuri utile:
            http://whatis.techtarget.com/definition/UART-Universal-Asynchronous-Receiver-Transmitter