Sunteți pe pagina 1din 7

8251 INTERFATA PROGRAMABILA DE COMUNICARE SERIALA

Caracteristici principale: comunicare sincrona (up to 64k baud) sau asincrona (up to 19,2 k baud), programabila full duplex detectarea erorilor: paritate, overrun, framming in mod asincron poate sa transmita intre 5 si biti! generea"a caracter de break! detectarea bitilor falsi de start! 1, 1 # , 2 biti de stop! semnal de ceas de 1, 16 sau 64 din timpul de baud$ %oate intrarile si iesirile sunt compatibile %%&

'ircuitul (ntel 251 este un comunicator serial universal ) Universal Synchronous/Asynchronous Receiver/Transmiter : USART$ *e utili"ea"a ca un dispo"itiv periferic si este programat de '+,$ 251 accepta date de la '+, in fomat paralel, le converteste in format serial si le transmite pe linia de comunicatie$ (n acelasi timp, poate primi date in format serial, pe care apoi le converteste in format paralel pentru a putea fi trimise catre '+,$ ,*-.% va semnali"a procesorul cand poate sa primeasca un nou caracter pentru transmisie sau cand a receptionat un caracter de pe linia seriala$ /e asemenea, '+, poate citi statusul dispo"itivului, cum ar fi: erorile de transmisie, semnale de control ca *01/2%, %x23+%0$ Descriere functionala 251 este un ,*-.% proiectat pentru a oferi o compatibilitate mare cu familiile de procesoare de la (ntel, si nu numai, cum ar fi 3'*4 , 3'*51, 3'* 45 5$ 2ste programabil soft de catre '+, si supoarta marea ma6oritate a te7nicilor de transmisie seriala, inclusiv bi-sync de la (83$ +e timpul operarii, 251 poate insera sau extrage biti de control, utili"ati in te7nologia de transmisie, astfel incat, la final, dispo"itivul este transparent pentru procesor$ Data Bus Buffer 2ste un buffer bidirectional, 9:state, organi"at pe biti si este utili"at pentru interfatarea cu bus:ul de date$ /atele din buffer sunt transmise sau citite de pe bus in urma executarii unei instructiuni specifice de (1 sau ;,% primite de la '+,$pe acelasi bus sunt transmise si cuvintele de control, de comanda sau informatiile de stare$ (n interiorul ,*-.% registrele de comanda, /ata:(1, /ata:;,% sunt separate, ele comunicand cu sistemul prin intermediul /ata 8us 8uffer$ -cest buffer accepta intrari de pe bus:ul de control si generea"a semnalele de control necesare operarii circuitului$ 'ontine registrele cuvintelor de control si registrele cuvintelor de comanda care stoc7ea"a diverse formate de control pentru functionarea device:ului$ RESET (ntrare activa pe high, folosita pentru a reinitiali"a 251$ &a .2*2%, ,*-.% trece in modul (/&2 si ramane astfel pana cand un nou set de cuvinte de control sunt scrise in 251, programand astfel modul de functionare$ /urata minima a unui puls .2*2% trebuie sa fie de 6 perioade de clock$ .esetarea device:ului poate fi facuta si prin cuvinte de comanda ) soft$ CLOCK (ntrarea de clock este utili"ata pentru a genera timing:ul intern al device:ului$ 1u exista o referinta generala la frecventa semnaului de clock, insa aceasta trebuie sa fie minim de 94 de ori mai mare decat rata de transmisie sau receptie$ RITE (ntrare activa la low, si permite '+, scrierea de date sau cuvinte de control in ,*-.%$

READ (ntrare activa pe low, informea"a device:ul ca procesorul citeste date sau informatii de stare din ,*-.%$
C5D

CONTROL ! DATA

-ceasta intrare, in con6unctie cu intrarile WR sau RD , informea"a 251 tipul cuvintelor care sunt trimise pe /ata 8us: date, cuvinte de control, informatii de stare 1 < ';1%.;&5*%-%,*
C5D

4</-%-

RD

WR

CS

4 4 1 1 = =

4 1 4 1 1 =

1 4 1 4 1 =

4 4 4 4 4 1

251 /-%- /-%- 8,* /-%- 8,* 251 /-%*%-%,* /-%- 8,* /-%- 8,* ';1%.;& /-%- 8,* 9:*%-%2 /-%- 8,* 9:*%-%2

B"#$u" MODEM CONTROL 251 are un set de intrari si iesiri de control crae permit interfatarea cu aproape orice tip de modem$ /eoarece semnalele de control ale modemului sunt de tip general, acestea pot fi folosite si la controlarea altor dispo"itive, daca este necesar$
DSR

/-%- *2% .2-/0! DTR /-%- %2.3(1-& .2-/0!

RTS

.2>,2*% %; *21/

*unt semnale folosite pentru controlul si interfatarea modemului$


CTS

CLEAR TO SEND

(ntrare activa pe low, care permite ,*-.% sa transmita date daca bitul %x2nable din cuvantul de comanda este ?1@$ /aca in timpul operatiei de transmisie intrarea CTS este trecuta pe high, sau bitul %x2nable este trecut pe ?4@, transmisia va continua pana cand toate datele din ,*-.% vor fi transmise$ B"#$u" TRANSMIT BUFFER 8ufferul %x accepta date in format paralel de pe bus:ul de date si le transforma in informatie seriala! totodata introduce si bitii de control (functie de te7nologia de transmisie) apoi trimite acest sir dde biti pe iesirea %x/ pe frontul descrescator al semnalului de clock TxC $ %ransmisia va incepe cand CTS <4$ iesirea %x/ va fi mentinuta in stare activa (marcata) pana se transmite un 3aster .eset sau pana cand bitul %x2nable sau CTS sunt ;ff (isi sc7imba starea) sau cand bufferul %x este gol$ B"#$u" TRANSMITTER CONTROL -cest bloc gestionea"a toate activitatile asociate transmisiei seriale a datelor$ -ccepta si interpretea"a semnale atat din interior cat si din exterior pentru a satisface aceste functii$ T%RD& TRANSMITTER READ&

-ceasta iesire semnali"ea"a procesorului ca transmitter:ul este gata sa accepte caractere de date$ *emnalul %x./0 poate fi utili"at ca o intrerupere de sistem, daca este mascat de %x2nable, sau prin operatie de extragere daca '+, verifica starea %x./0 prin citirea statusului$ %x./0 este resetat automat pe palierul lui WR , cand se incarca un cuvant de la '+,$ /e semnalat faptul ca, daca se utili"ea"a operatia de extragere, bitul de stare %x./0 nu este mascat de %x2nable, dar va india starea registrului de intrare de 2mptA sau Bull$ TxE TRANSMITTER EMPT& 'and 251 nu mai are nici un caracter de transmis, iesirea %x2 este trecuta pe 7ig7$ -ceasta se va reseta automat cand se primeste un nou caracter de la '+, si transmitter:ul este activ$ /aca %x este disable, %x2 ramane pe 7ig7$ -cest semnal este folosit pentru indicarea terminarii modului de transmisie, astfel incat '+, sa ?stie@ cand sa inverse"e linia in modul de operare 7alf:duplex$ (n modul de operare sincron, daca %x2<1, inseamna ca un caracter nu a fost incarcat, astfel incat se transmite automat caracterul de *01' pentru a umple ?golul@$ %x2 nu este resetat cand caracterele *01' sunt s7iftate si transmise$ -ceasta se intampla deoarece caracterul *01' este generat de 251 si nu repre"inta date ci un caracter de control$
TxC

TRANSMITTER CLOCK

(ntrarea TxC controlea"a rata de transmisie a caracterelor$ (n mod sincron, rata de transmisie in 8aud este egala cu frecventa TxC $ (n mod asincron, rata de transmisie este fie TxC , fie o fractiune de 1516 sau 1564 din frecventa de clock$ /e exemplu, daca rata de transmisie este de 114 8aud (pentru mod de transmisie asincron), TxC <114C", in mod 151 TxC <114x16<1,D2kC" in mod 1516 TxC <114x64 < D,44kC" in mod 1564 Brontul descrescator al lui
TxC

s7ift:ea"a datele seriale pe linia de trasmisie$

B"#$u" RECEI'ER BUFFER 8ufferul .x accepta date in format serial si le converteste in cuvinte de in format paralel (in general de biti)$ %otodata extrage bitii suplimentari folositi pentru trasmisie (functie de te7nologie)$ (ntrarea se face pe pinul .x/ pe frontul crescator al semnalului RxC $ B"#$u" RECEI'ER CONTROL +ermite managementul operatiei de receptie a datelor seriale$ (nitiali"area intrarii .x/ previne ,*-.% sa primeasca date eronate de pe o linie de intrare nefolosita$ (nainte de a incepe receptia de .x/ trebuie sa fie detectat un ?1@ imediat dupa un 3aster .eset$ ;data acest bit primit, se asteapta un bit de start, care este activ pe loE$ -ces mod de lucru se aplica doar in modul de operare asincron si se executa la fiecare 3aster .eset$ /etectarea bitilor falsi previne inceperea receptiei pe linii "gomotoase! la inceput se detectea"a frontul descrescator, apoi prin strobare pe mi6locul bitului de start (.x/ < loE)$ /etectarea bitului de paritate setea"a bitul de stare corespun"ator$ /e asemenea se setea"a bitul Braming 2rror, daca nu se detectea"a, in ca"ul unei transmisii asincrone, bitul de stop la sfarsitul secventei de date$ R%RD& RECEI'ER READ& -ceasta iesire indica faptul ca 251 contine un caracter ce poate fi transmis catre procesor$ .x./0 poate fi conectata la structura de intreruperi a procesorului sau, pentru functionarea pooled a procesorului,

acesta poate verifica conditia iesirii .x./0 utili"and operatia de citire a statusului$ (esirea .x2nable, cand este inactiva, mentine .x./0 in conditia de reset$ +entru modul de transmisie esincron, pentru setarea iesirii .x./0, receptorul trebuie sa fie capabil sa sesi"e"e bitul de start si caracterul primit sa fie transmis pe iesirea de date$ +entru modul sincron, receptorul trebuie sa fie activ pentru ca acel caracter primit sa fie transmis pe iesirea de date$ /aca procesorul nu poate citi caracterul inaintea ?asamblarii@ noului caracter primit, primul caracter va fi sters si se va genera o eroare overrun$
RxC

( Re$e)*er C"#$+

-ceasta intrare de clock controlea"a rata de receptie a caracterelor$ (n mod sincron, baud rate este egala cu frecventa de clock$ (n comunicarea asincrona, baud rate este o fractiune din acest clock si este setata prin soft la 1, 1516 sau 1564 din receiver clock$ 1ota: /aca 251 lucrea"a in mod 7alf duplex, adica transmisia si receptia se face pe acelasi fir, semnalele de clock RxC si TxC vor fi aceleasi si mai mult, vor fi conectate la aceeasi sursa$ S&NDET -cest pin este folosit numai in modul de comunicare sincron, atat pentru transmisie cat si pentru receptie si este programabil prin cuvintele de control$ (n ca"ul sincroni"arii interne, *01/2% va trece pe 7ig7 cand ,*-.% primeste caracterul de sincroni"are$ /aca sincroni"area se face pe doua caractere (bi:sAnc) *01/2% va trece pe 7ig7 la mi6locul ultimului bit al celui de al doilea caracter de sincroni"are$ *01/2% este resetat prin operatia de citire a statusului$ +entru sincroni"area externa, un semnal po"itiv (7ig7) va indica 251 sa inceapa asamblarea caracterului primit pe urmatorul front crescator al semnalului de ceas RxC $ BREAK -ceasta iesire va trece pe 7ig7 ori de cate ori sunt intalniti doi biti de stop consecutivi$ 8reak /etect poate fi citit ca un bit de stare$ +oate fi resetat de un master reset sau cand .x/ata trece in starea ?1@$ DESCRIEREA !DU"UI DE !#ERARE

3odul de functionare al 251 este programabil prin softul sistem$ +entru initiali"are, '+, transmite un set de cuvinte de control care setea"a: rata de transmisie, lungimea caracterului, numarul bitilor de stop, modul de operare sincron sau asincron, modul de tratare al erorilor ) paritate simpla, dubla, fara paritate$ (n modul de operare sincron, mai este setat si modul de sincroni"are, respectiv intern sau extern$ ;data programat, ,*-.% poate sa inceapa comunicatia$ (esirea %x./0 este trecuta pe 7ig7 pentru a semnali"a procesorului ca 251 poate primi caractere de la acesta$ 'and '+, incarca un caracter, %x./0 este resetat si revine pe 7ig7 dupa ce caracterul a fost trimis$ &a receptie, dupa primirea unui caracter, iesirea .x./0 este trecuta pe 7ig7, aceasta comunicand procesorului ca s:a primit un caracter si este gata sa:i fie transmis$ 251 nu poate incepe transmisia de date pana cand bitul %x2nable nu este setat in cuvantul de comanda si primeste 'lear to *end pe pinul corespun"ator$ (esirea %x/ va fi mentinuta marcata pana la primul reset$ Pr#,ra-area 8251 (nainte de a incepe transmisia, circuitul trebuie incarcat cu un set de cuvinte de control generate de procesor, definind astfel modul de functionare al ,*-.%$ +rogramarea circuitului trebuie facuta imediat

dupa o operatie de .2*2%, interna sau externa$ 'uvintele de control sunt impartite in doua tipuri: : instructiuni ale modului de operare : instructiuni de comanda 1. Instructiuni ale modului de operare -ceste instructiuni definesc modul general de functionare$ -stfel, se programea"a modul de transmisie sincron sau asincron, lungimea caracterului, modul de tratare al erorilor ) paritate para sau impara, numarul bitilor de stop$ +entru a intelege mai usor modul de programare, se poate imagina 251 ca fiind compus din doua module, unul sincron si unul asincron, care impart aceleasi resurse$ ;data modul de operare programat, acesta nu mai poate fi sc7imbat decat printr:o operatie de reset general$ ;bs: 'and este setata paritatea pentru detectarea erorilor, acesta nu este considerat bit de date, prin urmare nu este luat in considerare la calcularea lungimii cuvantului$ /aca se programea"a lungimea caracterului mai mica de biti, cei mai putin semnificativi biti de pe busul de date vor contine caractere de transmis$ 8itii nefolositi sunt ignorati la transmisie sau sunt ?4@ la receptie$ 1.1 odul de comunicare asincron

Transmisia ;ri de cate ori un caracter este trimis de procesor, la transmisie se adauga automat un bit de start (care este intotdeauna pe loE) dupa care urmea"a datele de transmis, primul fiind bitul cel mai putin semnificativ, urmati de bitul de paritate (daca este programat) si bitii de stop$ 'aracterul este transmis ca o secventa seriala de date pe iesirea %x/ pe frontul descrescator al semnalului de clock TxC cu o rata egala cu 1, 1516 sau 1564 din clock, functie de programarea facuta$ /aca este programat, caracterul 8.-F2 este transmis continuu pe iesirea %x/$ /aca nu sunt date de transmis, iesirea %x/ este mentinuta pe 7ig7 (marcata) doar daca nu este programat caracterul 8.-F2, care este un loE continuu Receptia /eoarece in mod normal iesirea %x/ este 7ig7, si intrarea .x/ este tot 7ig7$ ,n front descrescator pe aceasta linie este considerat ca fiind un caracter de *%-.%$ Galidarea acestui caracter se face prin strobare pe mi6locul caracterului (doar in modul de transmisie 16x sau 64x, unde perioadele de clock pot fi contori"ate)$ /aca este detectat tot un loE bitul de *%-.% este valid si incepe contori"area bitilor$ /aca se obtine o eroare de paritate este setat flagul corespun"ator$ 8itii de date si de paritate sunt cititi la intrarea .x/ pe frontul crescator la semnalului de clock RxC $ /aca se detectea"a un nivel loE ca si bit de *%;+, se setea"a flagul Braming 2rror$ 8itul de *%;+ semnali"ea"a sfarsitul caracteruluui de transmis$ &a receptie este necesar doar un bit de *%;+, indiferent de numarul programat al acestora$ /upa receptia caracterului, acesta este incarcat in bufferul (5; (de tip paralel) al circuitului si se semnali"ea"a procesorul, prin intermediul iesirii .x.2-/0, ca datele primite pot fi citite$ /aca acest caracter nu a fost citit de '+,, la primirea unui nou caracter se suprascrie bufferul si se setea"a flagul de eroare ;G2..,1$ Bunctionarea circuitului 251 nu este afectata de niciunul din flagurile de eroare$ %oate aceste flaguri pot fi resetate printr:o instructiune de 2rror .eset$

1.!

odul de comunicare sincron

Transmisia

(n modul de comunicare sincron, iesirea %x/ este mentinuta continuu le 7ig7$ +rimul caracter trimis de '+, la 251 este caracterul *01'$ 'and intrarea CTS ('lear to *end) este trecuta pe loE, carcterul este transmis pe iesirea %x/ pe frontul descrescator al semnalului de clock TxC cu aceeasi rata cu a semnalului de clock$ ;data transmisia inceputa, streamul de date este transmis pe iesirea %x/ in mod continuu$ /aca procesorul nu furni"ea"a caractere de date pentru transmisie, pe iesirea %x/ este transmis caracterul *01', acest lucru semnali"andu:se printr:un semnal 7ig7 pe pinul %x23+%0$ -cest pin este resetat automat in momentul in care un caracter este incarcat de '+, in bufferul (5;$ 'aracterul *01' nu modifica starea pinului %x23+%0$ Receptia (n ca"ul receptiei, caracterele de sincroni"re pot fi obtinute fie intern, fie extern$ (n ca"ul sincroni"arii interne, prima comanda executata de 251 este comanda 21%2. C,1%, prin care acesta ?asculta@ intrarea .x/$ /atele de pe intrarea .x/ sunt citite pe frontul crescator al semnalului de clock RxC $ 'ontinutul bufferului .x este comparat la fiecare limita de bit cu caracterul *01', pana se obtine o potrivire$ /aca 251 este programat pentru doua caractere de sincroni"are (bA:sAnc), este comparat si al doilea caracter$ 'and caracterul (sau caracterele) de sincroni"are au fost detectate, ,*-.% iese din modul C,1% si poate primi date$ *incroni"area este semnali"ata printr:un semnal 7ig7 pe iesirea *01/2%, pin ce este resetat automat de *%-%,* .2-/$ /aca sincroni"atea se face extern, pe pinul *01/2% se va aplica un semnal 7ig7 pentru a forta iesirea ,*-.% din modul C,1%$ -cest nivel 7ig7 poate fi inlaturat dupa un ciclu RxC $ +rocesorul poate comanda receptorul sa intre in mod C,1% daca sincroni"area este pierduta$ 3ai mult, pentru a preveni un fals *01/2% determinat de datele care pot exista in buffer, acesta este suprascris cu caractere ?1@$ 2rorile de paritate sau de overrun sunt tratate in mod similar ca la receptia in mod asincron$ +aritatea este verificata numai daca 251 nu se afla in mod C,1%$ $% Instructiuni &e coman&a /upa programarea modului de functionare a 251 si dupa sincroni"are (daca acesta lucrea"a in mod sincron), ,*-.% poate fi utili"at pentru comunicatia de date$ (nstructiunile de comanda controlea"a modul de operare al formatului de comunicatie programat$ Bunctii ca: 2nable %ransmit5.eceive, 2rror .eset sau 3odem 'ontrol sunt furni"ate de instructiunile de comanda$ (nstructiunile de comanda pot fi transmise de '+, oricand in cadrul comunicatiei, semnali"area faptului ca se transmit caractere de date sau de comanda facandu:se prin bitul C 5 D =1 din caractrul de comanda$ Bormatul instructiunii de comanda este urmatorul: H 2C H (. /D H .%* H 2. H*8.F H .x2 H /%. H %x21 H /4

,nde: %x21 ) %ransmit 2nable! 1 ) enable, 4 ) disable /%. ) /ata %erminal .eadA! ?1@ va forta iesirea DTR pe "ero .x2 ) .eceive 2nable! 1 ) enble, 4 ) disable *8.F ) *end 8rake 'aracter! 1: fortea"a %x/ pe loE, 4 ) operare normala 2. ) 2rror .eset! ?1@ va reseta flagurile +2, ;2 B2 .%* ) .eIuest to *end! ?1@ va forta iesirea RTS pe "ero (. ) (nternal .eset! ?1@ va determina 251 sa intre in mod de programare 2C ) 2nter Cunt 3ode! ?1@ activea"a cautarea caracterelor *01' (nu are efect in mod asincron) '% Status Rea& (n sistemele de comunicatii de date, este utila verificarea statusului dispo"itivelor de comunicatie, pentru a detecta starea lor de functionare, si daca sunt sau nu active$

Bormatul cuvantului de stare este urmatorul: H /*. H /D *01/2% H B2 H ;2 H +2 H %x23+%0 H .x./0 H %x./0 /4 H

,nde: /*. ) /ata *et .eadA! *01/2% ) aceeasi semnificatie ca si pinul (5; B2 ) Braming 2rror (doar in mod asincron)! acest flag este setat atunci cand nu este detectat bitul de *%;+ ;2 ) ;verrun 2rror! flagul ;2 este setat atunci cand caracterul primit nu este citi de procesor in timp util si este suprascris c u noul caracter primit +2 ) +aritA 2rror! flag ce este setat cand se detectea"a o eroare de paritate %x23+%0 : aceeasi semnificatie ca si pinul (5; .x23+%0 : aceeasi semnificatie ca si pinul (5; %x./0 ) semnali"ea"a ca bufferul de date este gol

S-ar putea să vă placă și