Lucrarea 6.
Transferul serial
Scopul lucrarii: studierea principiului de transmisie a datelor pe un canal serial si a modului de implementare a unei interfete seriale.
2. Consideratii teoretice:
2.1 Magistrale seriale de comunicatie
Magistralele seriale se utilizeaza ca suport pentru transferul de informatii intre calculatoare sau intre componentele autonome ale unui sistem de calcul. Caracteristica principala a a oricarei magistrale seriale este transmisia secventiala, bit cu bit, a informatiilor, folosindu-se un numar redus de semnale (linii de comunicatie). In contrast, o magistrala paralela permite transferul simultan al mai multor biti (8, 16, 32), folosind in acest scop mai multe linii de date. In principiu transmisia seriala asigura o viteza de transfer mai redusa, in comparatie cu transmisia paralela, insa este mai economica (numar mai redus de linii de transmisie), iar distanta maxima de transfer este semnificativ mai mare.
Magistralele seriale pot fi clasificate dupa mai multe criterii :
a. dupa modul de sincronizare :
transfer sincron - se utilizeaza un semnal explicit de ceas (de sincronizare) pentru specificarea momentului in care un bit de data este valid
transfer asincron - nu se utilizeaza semnal de ceas, sincronizarea intre unitatea emitenta si cea receptoare se face in mod implicit pe baza structurii specifice a datei transmise ( a se vedea standardul RS 232)
b. dupa lungimea blocului de date transmis :
transfer pe octet
transfer pe bloc (numar mai mare de octeti)
c. dupa numarul de unitati comunicante
transfer serial de tip punct-la-punct : legatura se realizeaza intre doua echipamente
transfer serial multipunct : legatura se realizeaza simultan intre mai multe echipamente, din care la un moment dat unul transmite si restul asculta
d. dupa directia de transfer
transfer unidirectional (intr-un singur sens)
transfer bidirectional sau « full duplex »(simultan in doua sensuri)
transfer bidirectional pe o singura linie sau « half duplex »(se transmite pe rind in cele doua directii)
e. dupa domeniul de utilizare
magistrale de sistem - folosite pentru interconectarea componentelor unui microsistem (ex : microcontrolor, memorii, convertoare A/D si D/A etc.)
canale de comunicatie seriala - folosite pentru interconectarea unor echipamente inteligente (ex : calculatoare, imprimanta , consola ) prin legatura punc-la-punct
retea de comunicatie - folosita pentru asigurarea comunicatiei multipunct intre un set de echipamente de calcul (observatie : intr-o acceptiune mai restrinsa retelele de comunicatie nu fac parte din clasa magistralelor seriale)
Transferul serial se realizeaza pe baza unui set de reguli care alcatuiesc protocolul de comunicatie. Doua echipamente care comunica pe o magistrala seriala (canal serial) trebuie sa respecte acelasi protocol si aceeasi parametri de transmisie (ex : viteza de transfer, mod de sincronizare, lungimea blucului de date, etc.).
Pentru a asigura interoperabilitatea intre diferite echipamente realizate de diversi producatori, s-au definit o serie de standarde internationale, care specifica :
modul de transmisie a datelor (sincron/asincron),
modul de structurare a datelor transmise (octet, bloc),
viteza de transmisie,
mecanismele de detectie si corectie a eventualelor erori
tipul semnalelor folosite pentru transmisie ( tensiune, curent, tensiune diferentiala, etc.)
mecanismele de sincronizare a echipamentelor comunicante (ex : protocol XON/XOFF, sincronizare prin semnale explicite, etc.)
tipul de conectori folositi
natura si parametri fizici ai mediului de transmisie (ex : cablu bifilar torsadat, cablu coaxial, fibra optica, etc.)
Cele mai cunoscute standarde folosite pentru comunicatia seriala sunt : RS 232 (V24), RS 485, I2C si HDLC/SDLC. In continuare se prezinta citeva caracteristici mai importante ale acestor standarde.
2.2 Standardul RS232
Este cel mai cunoscut si utilizat standard de comunicatie seriala asincrona. El a fost definit de mai multe organisme internationale de standardizare sub diferite nume : IEC232, CCITT-V24, RS232C. Initial standardul a fost conceput cu scopul de a permite conectarea unui terminal inteligent la un calculator central printr-o legatura telefonica. Standardul precizeaza interfata dintre un echipament de calcul (DTE- Data Terminal Equipment) si adaptorul sau la linia telefonica (DCE- Data Circuit-terminating Equipment), cunoscut si sub numele de modem (Modulator/Demodulator). Interfata permite comunicatia seriala bidirectionala intre cele doua echipamente, si este simetrica la cele doua capete ale liniei. Ulterior specificatiile acestei interfete s-au folosit pentru a realiza legaturi seriale intre diverse echipamente fara a se mai folosi un modem.
Principalele precizari ale standardului RS232 se refera la :
- modul de transmisie : serial asincron, bidirectional (pe doua linii de date separate)
codificarea informatiilor binare : prin nivele de tensiune sau curent (bucla de curent) :
1 logic - (-3V . -15V)
0 logic - (+3V.-15V)
structura informatiei elementare transmise :
un bit de start (0 logic)
5-8 biti de date
0-1 bit de paritate (paritate para sau impara)
1-2 biti de stop (1 logic)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
linie libera |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
linie libera |
||||
|
|
|
|
|
|
|
biti de date |
|
|
|
|
1-2 biti de stop |
|
|
|||||
|
|
|
bit de start |
|
|
|
|
|
|
bit de paritate |
|
|
|
|
|
||||
|
|
Figura 1 Structura unui caracter transmis conform standardului RS232 |
|
|
semnale utilizate pentru transmisia de date si pentru controlul fluxului de date (vezi tabelul 1):
tipul de conectori folositi (RK 25, mufa si soclu) si pozitia semnalelor pe pinii conectorilor
modul de interconectare a semnalelor la cele doua capete ale unui cablu de transmisie
viteza de transmisie (110, 300, 600, 1200, 2400, 4800, 9600, 19200 bauds)
reguli de control al fluxului de date (control hardware - protocolul DTR/DSR sau software - protocolul XON/XOFF)
In tabelul de mai jos s-a indicat numele si semnificatia celor mai importante semnale definite de standardul RS232. De asemenea s-a indicat pozitia acestor semnale pe un conector de 25 pini si pe unul de 9 pini. Directia este indicata intre calculator (DTE) si modem (DCE).
Tabelul 1
Nume semnal |
Semnificatia/Functia |
Directie DTE-DCE |
Pozitia pe con.RK25 |
Pozitia pe con. RK9 |
RXD |
Receive Data - receptie date |
|
|
|
TXD |
Transmit Data - transmisie date |
|
|
|
GND |
Masa digitala |
|
|
|
DTR |
Data Terminal Ready - terminal pregatit pentru transmisie |
|
|
|
DSR |
Data Set Ready - Pregateste dispozitiv pentru transmisie |
|
|
|
RTS |
Request To Send - Cerere de transmisie |
|
|
|
CTS |
Clear To Send - Pregatit pentru transmisie |
|
|
|
RI |
Ring - sonerie |
|
|
|
CD |
Carrrier Detect - detectie purtatoare |
|
|
|
In cazul transmisiei seriale asincrone, sincronizarea intre unitatea emitenta si cea receptoare se realizeaza la inceputul fiecarui caracter prin bitul de start (0 logic). De precizat ca in repaus linia este in 1 logic. Citirea datelor se face secvential, la jumatatea intervalelor de bit care urmeaza bitului de start. Protocolul asigura citirea corecta a datelor chiar si in cazul in care exista mici diferente (sub 2%) intre frecventa de emisie si cea de citire a datelor. Aceasta sincronizare nu s-ar pastra in cazul in care lungimea datelor utile ar fi mai lunga. Pentru controlul fluxului de date transmise se poate utiliza un protocol hardware sau unul software. In primul caz se utilizeaza semnale explicite (grupul de semnale DTR/DSR sau RTS/CTS). prin care unitatea receptoare poate sa opreasca temporar fluxul de date transmis. In acest fel se poate sincroniza frecventa de emisie a datelor la viteza de prelucrare a unitatii receptoare. A doua metoda nu utilizeaza semnale de control ; in schimb foloseste un set de coduri speciale prin care poate sa opreasca (codul XOFF) sau sa reporneasca (codul XON) fluxul de date. Aceasta metoda se poate utiliza numai la transmiterea unor date in codificare ASCII. La transmisia binara codurile de control ar putea sa fie prezente in datele de transmis.
In cazul in care se conecteaza doua echipamente aflate la distanta mica (ex : in interiorul unei incaperi) se pot utiliza numai o parte din semnalele precizate in interfata RS232. In acest fel cablul de legatura devine mai ieftin si mai usor de manipulat. In continuare se prezinta citeva configuratii tipice de interconectare.
a. Transmisie unidirectionala, fara controlul fluxului de date
|
|
Emitent |
|
|
Receptor |
|
|
|
|
|
|
TXD |
|
|
TXD |
|
Doua fire de legatura |
||
|
|
RXD |
|
|
RXD |
|
|
|
|
|
|
GND |
|
|
GND |
|
|
|
|
|
|
DSR |
|
|
DSR |
|
|
|
|
|
|
DTR |
|
|
DTR |
|
|
|
|
|
|
CD |
|
|
CD |
|
|
|
|
|
|
RTS |
|
|
RTS |
|
|
|
|
|
|
CTS |
|
|
CTS |
|
|
|
|
|
|
Figura 2 Transfer unidirectional |
|
|
b. Transmisie bidirectionala folosind protocolul XON/XOFF
|
|
Emitent |
|
|
Receptor |
|
|
|
|
|
|
TXD |
|
|
TXD |
|
Trei fire de legatura |
||
|
|
RXD |
|
|
RXD |
|
|
|
|
|
|
GND |
|
|
GND |
|
|
|
|
|
|
DSR |
|
|
DSR |
|
|
|
|
|
|
DTR |
|
|
DTR |
|
|
|
|
|
|
CD |
|
|
CD |
|
|
|
|
|
|
RTS |
|
|
RTS |
|
|
|
|
|
|
CTS |
|
|
CTS |
|
|
|
|
|
Figura 3 Transfer bidirectional, protocol XON/XOFF |
|
|
c. Transmisie bidirectionala folosind protocolul DTR/DSR
|
Echipament 1 |
|
|
Echipament 2 |
|
|
|
||
|
|
TXD |
|
|
TXD |
|
Cinci fire de legatura |
||
|
|
RXD |
|
|
RXD |
|
|
|
|
|
|
GND |
|
|
GND |
|
|
|
|
|
|
DSR |
|
|
DSR |
|
|
|
|
|
|
DTR |
|
|
DTR |
|
|
|
|
|
|
CD |
|
|
CD |
|
|
|
|
|
|
RTS |
|
|
RTS |
|
|
|
|
|
|
CTS |
|
|
CTS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 4 Transfer bidirectional, protocol DTR /DSR |
|
d. Transmisie bidirectionala folosind interfata complecta RS232
|
Echipament 1 |
|
|
Echipament 2 |
|
|
|
||
|
|
TXD |
|
|
TXD |
|
Sapte fire de legatura |
||
|
|
RXD |
|
|
RXD |
|
|
|
|
|
|
GND |
|
|
GND |
|
|
|
|
|
|
DSR |
|
|
DSR |
|
|
|
|
|
|
DTR |
|
|
DTR |
|
|
|
|
|
|
CD |
|
|
CD |
|
|
|
|
|
|
RTS |
|
|
RTS |
|
|
|
|
|
|
CTS |
|
|
CTS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 5 Transfer bidirectional protocol DTR/DSR si RTS/CTS |
|
Majoritatea calculatoarelor actuale dispun de cel putin o interfata seriala. La calculatoarele de tip PC una din interfetele seriale este utilizata de obicei pentru a asigura legatura cu dispozitivul de indicare de tip mouse.
2.3 Standardul RS485
Acest standard a fost conceput cu scopul de a extinde si imbunatati posibilitatile de comunicatie pe o linie seriala. Dintre imbunatatirile avute in vedere se pot aminti :
cresterea distantei maxime de comunicatie ( aprox. 1 Km)
cresterea imunitatii la zgomot
posibilitatea realizarii unei comunicatii multipunct ( comunicatie in retea)
utilizarea unui mediu ieftin de comunicatie
Acest protocol specifica urmatoarele :
se utilizeaza un tronson de cablu bifilar torsadat, care are la cele doua capete terminatoare (rezistente) ; ambele linii se utilizeaza pentru transmisie, neexistind fir de masa.
codificarea datelor binare se face prin tensiuni diferentiale pozitive si negative masurate pe cele doua linii ale tronsonului ; tensiunea diferentiala minima considerata o data valida este de +/-200 mV.
circuitele de emisie conectate pe acelasi tronson au iesiri de tip tri-state, pentru a permite accesul multiplu, al mai multor echipamente, la acelasi tronson de comunicatie ; accesul se face multiplexat in timp
Protocolul nu precizeaza structura datelor transmise, mecanisme de control al fluxului de date sau mecanisme de detectie a erorilor. Acestea pot fi preluate din alte standarde seriale de comunicatie (ex :RS232 sau SDLC/HDLC) sau pot fi definite de utilizator. Acest protocol se utilizeaza ca suport pentru o serie de protocoale pentru retele industriale ( ex : CAN, Profibus).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R |
|
|
|
R |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E |
|
|
|
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 6 Transmisie seriala diferentiala - RS 485 |
|
|
|
|
2.4 Protocoalele SDLC/HDLC (Serial Data Link Control/ High-speed Data Link Control)
Cele doua standarde utilizeaza o metoda de transfer bazata pe cadre (frames). Un cadru contine date utile si cimpuri de control. Cimpurile continute intr-un cadru au urmatoarele semnificatii :
- antet - folosit pentru sincronizare
- adresa - specifica destinatia cadrului
- control - specifica tipul de cadru (cadru de date, cadru pentru controlul accesului, cadru de interogare, cadru de raspuns)
- date - contine datele utile transmise prin cadru
- FCS (Frame Control Sequence) - secventa pentru detectia erorilor
- delimitator - pentru verificarea sincronizarii si terminarea cadrului
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Antet |
Adresa |
Contriol |
|
Date |
|
|
FCS |
Delim. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 biti |
8 biti |
|
8 biti |
orice nr. de biti |
16 biti |
8 biti |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 7. Structura unui cadru HDLC |
|
|
|
|
Protocoalele SDLC/HDLC permit transferul de date intre calculatoare conectate punct-la-punc sau in retea. Serviciile definite in cadrul celor doua protocoale corespund nivelului doi (Nivelul legaturii de date) in acceptiunea modelului de referinta OSI (Open System Interconection). Acest model a fost definit de ISO (International Standard Organisation) si specifica modul de organizare ierarhica a serviciilor de comunicatie in cadrul unui protocol de retea.
Transmisia seriala pe cadre ofera o serie de avantaje in comparatie cu transmisia seriala pe octet :
transferul este mai eficient - raportul dintre bitii de date si cei de control este mai bun la transmisia pe cadre
sincronizarea unitatilor comunicante este mai ferma si permite mici variatii ale frecventei de emisie ; unitatea receptoare utilizeaza un circuit cu calare pe faza (PLL Phase Lock Loop) care permite urmarirea frecventei unitatii emitente.
mecanismul de detectie a erorilor prin cod ciclic redondant (CRC) asigura o probabilitate foarte ridicata de detectie a erorilor de transmisie ; la transmisia pe caracter bitul de paritate detecteaza numai erorile in care sunt implicati un numar impar de biti.
exista posibilitatea adresarii mesajelor, facilitate necesara in sistemele de comunicatie multipunct.
Comunicatia pe cadre necesita o interfata mai complexa atit la nivelul componentelor hardware cit si la nivelul rutinelor de comunicatie. Transmisia pe cadre este utilizata mai ales in cazul in care trebuie sa se asigure o calitate mai ridicata a serviciilor de comunicatie. In schimb transmisia seriala pe caracter se utilizeaza in aplicatii cu cerinte mai modeste de calitate, dar la care costul trebuie sa fie minim ; se utilizeaza mai ales in cazul realizarii unor legaturi temporare intre diverse echipamente de calcul.
2.4 Standardul I2C (Inter-Integrated Circuit Bus)
O magistrala seriala de tip I2C permite interconectarea componentelor unui microsistem : microcontrolor (ex : 80C552), memorie de program (EPROM), memorie de date (SRAM), convertoare A/D si D/A si alte dispozitive periferice. Aceasta magistrala inlocuieste o magistrala clasica de sistem, care are un numar relativ mare de linii de adresa, date si control. Utilizarea unei magistrale seriale reduce semnificativ costurile de cablaj, si timpul de realizare a unor prototipuri. Este solutia ideala pentru realizarea unor sisteme incapsulate bazate pe microcontroloare. Dezavantajul utilizarii unei astfel de magistrale este reducerea semnificativa a vitezei de comunicatie intre componentele sistemului. Acest dezavantaj este diminuat in cazul microcontroloarelor la care majoritatea componentelor sunt in acelasi circuit integrat ( unitate centrala, memorie ROM, memorie RAM, porturi de intrare/iesire, etc.) si numai anumite componente specifice aplicatiei (ex : convertoare) trebuie sa comunice pe magistrala seriala.
Pe magistrala I2C transmisia este seriala sincrona ; se utilizeaza un semnal separat de ceas alaturi de semnalul de date. Circuitele de emisie sunt cu colector in gol, ceea ce permite conectarea pe acelasi semnal a mai multor ieriri de circuit. Astfel se realizeaza un « SI-cablat » intre iesirile de circuite. In figura 8 s-a reprezentat modul de conectare a componentelor pe o magistrala I2C.
|
|
|
|
|
Vcc |
rez. |
rez. |
|
|
|
|
|
|
|
|||
|
|
SDA (Serial Data Line) |
|
|
|
Vcc |
|
|
|
|
|
||||||
|
|
SCL (Serial Clock Line) |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
CLK1 |
|
Data1 |
|
|
CLK1 |
|
Data2 |
|
|
|
|
|
|||
|
|
out |
|
out |
|
|
out |
|
out |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
CLK1 |
|
Data1 |
|
|
CLK1 |
|
Data2 |
|
|
|
|
|
|||
|
|
in |
|
in |
|
|
in |
|
in |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
Figura 8 Conectarea pe magistrala I2C |
|
|
||||||||||||
Pe magistrala se pot conecta module master ( care au drept de initiativa in transferul de date) si module slave (care pot fi interogate de modulele master). Un modul master poate sa initieze un transfer daca magistrala este libera. In cazul in care doua unitati master initiaza simultan un transfer de mesaj, atunci va avea cistig de cauza mesajul care contine valoarea zero pe primul bit diferit intre cele doua mesaje. Aceasta se datoreaza faptului ca la un « SI cablat » valoarea zero este dominanta. In figura 9 s-a reprezentat structura mesajelor de transmisie si receptie.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
Adresa slave |
R |
A |
Data |
A |
Data |
A |
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unitatea master receptioneaza date de la unitatea slave |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
Adresa slave |
W |
A |
Data |
A |
Data |
A |
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unitatea master transmite date unitatii slave |
|
|
|
|
|||||||
|
unde: |
S - conditia de start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A - acceptare data (acknowlidge) |
|
|
|
|
|
|
||||||
|
|
P - conditie de stop |
|
|
|
|
|
|
|
|
||||
|
|
R/W - citire/scriere |
|
|
|
|
|
|
|
|
||||
|
|
|
- transmis de master |
|
|
|
|
|
|
|
|
|
||
|
|
|
- transmis de slave |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 9 Structura mesajelor I2C |
|
|
Interfata seriala a unui calculator compatibil IBM PC-AT
In mod uzual, pentru implementarea unei interfete seriale se foloseste un circuit (controlor) specializat care indeplineste functiile de baza ale interfetei : serializarea datelor de iesire, generarea informatiilor de control ( biti de start, stop, paritate la transmisia pe caracter sau cimuri de control la transmisia pe cadre), deserializarea datelor receptionate, generarea semnalelor de control conform standardului utilizat, pastrarea temporara a datelor receptionate si acelor ce urmeaza a fi transmise, si altele. Procesorul are acces la canalul serial de comunicatie prin intermediul registrelor de date, control si stare ale controlorului. In tabelul de mai jos se prezinta registrele interfetei seriale a unui calculator compatibil IBM PC-AT.
Tabelul 2
Adresa |
Tip registru |
Tip operatie |
Descriere registru |
XF8 |
Registru de date |
citire |
contine data receptionata (registru de receptie) |
scriere |
contine data ce trebuie transmisa (registru de transmisie) daca XFB.bit7=1 atunci contine partea mai putin semnificativa a divizorului de frecventa |
||
XF9 |
Registru de validare intrerupere |
scriere |
D3=1- validare intrerupere generata de modificarea starii modemului (CTS, DSR, RI) D2=1 - validare intrerupere generata la modificarea starii liniei (eroare sau break) D1=1 - validare intrerupere generata la golirea registrului de transmisie D0=0 - validare intrerupere generata la receptia unui caracter daca XFB.bit7=1 atunci contine partea mai semnificativa a divizorului de frecventa |
XFA |
Registru de identificare a intreruperii |
citire |
D2,1=00- modificare stare linie (eroare sau break) =01- caracter receptionat =10- registru de transmisie gol =11- modificare stare modem D0=0 - lipsa intrerupere =1 - prezenta intrerupere |
XFB |
Registru de control linie |
citire/ scriere |
D7- determina modul de utilizare a registrelor XF8 si XF9 (D7=0 registru de date ; D7=1 registre pt. divizarea frecventei de transmisie) D6- generare semnal de break (se genereaza zero in mod continuu) D4,3 - paritate (x0- fara paritate, 10-para, 11-inpara) D2- biti de stop (0-un bit, 1- doi biti) D1,0 - lungime caracter (00-5biti, 01-6 biti, 10-7 biti, 11-8 biti) |
XFC |
Registru de control modem |
scriere |
D4 - activare bucla inversa pentru testare D3- activare OUT2 D2 - activare OUT1 D1- activare RTS D0 - activare DTR |
XFD |
Registru de stare linie |
citire |
D6- registru de serializare gol (transmisie) D5- registru de transmisie gol D4- indicator break D3- eroare de cadrare D2- eroare de paritate D1- eroare de supraincarcare D0- registru de receptie plin |
XFE |
Registru de stare modem |
citire |
D7- detectie purtatoare D6- indicator sonerie D5- DSR D4- CTS |
Obs : X poate lua valoarea 2 sau 3.
In mod uzual un calculator compatibil IBM PC contine doua canale seriale plasate incepind de la adresele 2F8 si 3F8. In faza de initializare a sistemului se testeaza prezenta interfetelor seriale, si in caz afirmativ adresele canalelor detectate se inscriu in memoria RAM, incepind de la adresa 40:00. Sistemul de operare va asigna nume logice COM1 si COM2 adreselor de canale seriale in ordinea in care ele sunt prezente la adresa 40:00.
Un transfer serial se poate realiza prin controlul direct al programului sau prin intreruperi. In continuare sunt descrise in pseudocod algoritmii de transmisie si respectiv de receptie seriala pentru primul mod de transfer (transfer prin program).
Proc Transmisie-seriala(Buf, Nr_car)
if(contor>=val_max)
else
Scriere_reg_transmisie(Buf[i]) ;
}
Proc Receptie_seriala(Buf, Nr_oct)
if(contor>=val_max)
else
Buf[i]= Citire_reg_date() ;
}
In algoritmii prezentati s-au folosit urmatoarele apeluri de rutine :
Initializare_canal() - efecueaza programarea controlorului serial la parametri ceruti de transmisie ; se programeaza : frecventa de transmisie, numar de biti de date pe un caracter, numarul de biti de stop (1 sau 2), tip paritate (fara paritate, paritate indiferenta, paritate para sau inpara),etc.
Citire_reg_stare() - realizeaza citirea registrului de stare linie si stare modem si pozitioneaza corespunzator variabilele de stare ( stare_reg_receptie, stare_reg_transmisie, stare_linie)
Citire_reg_date() - citeste registrul de receptie al controlorului
Scriere_reg_date() - scrie caracter nou in registrul de transmisie
eroare() - semnalizarea unei erori de transfer
Variabila contor se utilizeaza cu scopul de a limita timpul de asteptare la transmisia sau receptia unui caracter, datorita neindepliniri conditiilor de transmisie.
Algoritmii prezentati nu contin o schema de control al fluxului de date. Se presupune ca unitatea receptoare poate sa prelucreze datele receptionate in ritmul in care ele sunt receptionate pe canalul serial (timpul necesar pentru transmiterea seriala a urmatorului caracter este suficienta pentru prelucrarea celui precedent).
3.1. Se va identifica in structura unui calculator de tip PC pozitia interfetei seriale si conectorii canalelor seriale
3.2 Se va monta un terminator pe unul din conectorii seriali la care urmatoarele semnale sunt scurtcircuitate : RXD cu TXD, DTR cu DSR si CD si RTS cu CTS. Se va specifica rolul acestor legaturi.
3.3 Se va scrie un program in limbaj de asamblare care transmite in mod continuu un caracter pe canalul serial (se recomanda transmiterea unui cod simetric ; ex : 0FH, 55H , AAH). Cu ajutorul osciloscopului se va vizualiza semnalul transmis pe linia TXD. Se vor identifica bitii care alcatuiesc un caracter ( bit de start, biti de date, biti de stop). Pentru identificarea mai usoara se recomanda introducerea unei intirzieri intre doua transmisii consecutive.
3.4. Se conecteaza doua calculatoare print-un cablu serial. Se va scrie un program de transmisie a unui bloc de date si un program de receptie a acestuia. Cele doua programe vor respecta algoritmii descrisi in paragraful anterior. Se va testa corectitudinea transmisiei pentru diferiti parametri de transmisie ( in special pentru viteze diferite).
3.5 Se va scrie programul care sa inglobeze un mecanism de control al fluxului de date ; se poate utiliza protocolul XON/XOFF sau DTR/DSR. Se va testa programul scris pentru diversi parametri de comunicatie.
3.6 Se va scrie un program de comunicatie intre doua calculatoare folosind rutina de intrerupere BIOS, INT 14h. Parametrii de intrare si iesire sunt :
Intrari :AH - functia solicitata
DX- numarul canalului (0-COM1, 1-COM2
AH=0 - initializare canal serial
AL - parametri de initializare :
-D7,6,5 - viteza de transmisie ( 000 - 110 bauds ; 001-150 bauds, 010-300 bauds, 011-600 bauds, ..111-9600 bauds)
-D4,3 - paritatea (x0- fara paritate, 01 paritate para, 11- inpara)
-D2 - biti de stop (0-un bit, 1-doi biti)
-D1,0- lungimea caracterului (10- 7 biti, 11- 8 biti)
AH=1 - transmitere caracter
AL - caracterul de transmis
Iesire : AH(bit7) !=0 - eroare ; AH(bit6-0)=cod eroare
AH=2 - receptie caracter
Iesire : AL - caracterul receptionat
AH !=0 - eroare
AH=3 - citire stare canal serial
Iesire : AL - stare modem
D6- sonerie (ring)
D5- DSR
D4- CTS
AH - stare linie
D7- time-out
D6- registru de serializare gol (transmisie)
D5- registru de transmisie gol
D4- detectie « break »
D3- eroare de cadrare
D2- eroare de paritate
D1- eroare de supraincarcare
D0- stare registru de receptie (1= registru plin)
5. Intrebari si probleme
5.1 In ce tipuri de aplicatii se recomanda folosirea standardelor seriale prezentate in paragraful introductiv ?
5.2 Care sunt cauzele care limiteaza distanta maxima de comunicatie pe un canal serial ? Particularizati pentru standardele prezentate.
5.3 Calculati care este eficienta transmisiei ( raportul date utile/total date transmise) pentru transmisia pe caracter si transmisia pe cadre.
5.4. Sa se construiasca un adaptor care permite convertirea semnalelor de tip RS232 in semnale de tip RS485 si invers. Recomandare : se vor utiliza circuite de tip driver/receiver special dezvoltate pentru cele doua standarde (ex : 1488/1489 pentru RS232 si 75176 pentru RS485).
5.5 Sa se conceapa un protocol de comunicatie care sa reglementeze accesul multiplexat in timp al mai multor calculatoare pe o magistrala RS485. Recomandare : se va cauta un procedeu de divizare a timpului sa o metoda de transmitere a dreptului de acces.
5.6 Sa se identifice asemanarile si deosebirile dintre un canal serial de comunicatie si un protocol de retea.
5.7 Sa se scrie un program de transmisie si un program de receptie care utilizeaza modul de transfer prin intraruperi.