Documente Academic
Documente Profesional
Documente Cultură
1. Scopul lucrarii
Desigur ca spectrul semnalelor este mult mai larg, (dupa cum se poate afla dintr-o scurta cautare
cu Google dupa “spectrul electromagnetic”), dar noi ne vom referi la o gama restransa. Cu cat se
extinde gama semnalelor aparatura devine mult mai scumpa.
3. Generatorul de semnal
In cadrul sedintelor de laborator din cadrul materiei Comunicatii de Date se va folosi generatorul
de semnal TG120 Function Generator, care arata ca in fig.2.
1
Lucrare de Laborator CD – Nr. 1
Generatorul de functii TG120 este un dispozitiv capabil sa generate o varietate de forme de unda
la frecvente incepand de la ordinul mHz pana la MHz. Acesta poate oferi o gama larga de
amplitudini controlate si poate mentine amplitudinea constanta la variatii de frecventa.
Caracteristici tehnice:
Domeniul de frecventa: 0.2Hz - 20MHz
Forme de unda: sinusoidal, dreptunghiular and triunghiular plus dc
Domeniul de amplitudine: 10mV to 20V pk-pk (50 Ohms)
DC offset (offset-ul = decalajul datorat componentei continue, drift-ul = modificarea cu
temperatura)
Control simetriei (Variable symmetry control)
Osciloscopul este un dispozitiv a carui principala functie este afisarea unor semnale electrice
variabile in timp. Acesta afiseaza un grafic bidirectional al semnalului – pe axa x se face
reprezentarea in functie de timp iar pe axa y in functie de tensiune.
2
Lucrare de Laborator CD – Nr. 1
Uzual se pot vizualiza semnale periodice. Semnalele neperiodice pot fi vizualizate cu osciloscopul
doar dupa ce sunt achizitionate si memorate; se capteaza secvente de o anumita lungime in timp!
Caracteristici ce se pot masura cu osciloscopul:
- Referitoare la timp: frecventa, perioada, factorul de umplere, timpul de cadere/ridicare
- Referitoare la tensiune: amplitudinea, tensiunea maxima si minima, tensiunea medie
Pentru a afla mai multe despre utilizarea osciloscopului accesati link-ul urmator:
https://learn.sparkfun.com/tutorials/how-to-use-an-oscilloscope
Oscilosciopul Tektronix TDS 1001b (fig. 3) prezent in laborator este un dispozitiv dotat cu 2 canale
analogice, avand banda de frecventa de 40MHz si o rata de esantionare de pana la 1Gs/s in timp
real. (Restul caracteristiciilor tehnice si manualul de utilizare apar la link-urile urmatoare:
http://www.tek.com/sites/tek.com/files/media/media/resources/3GW_25644_2.pdf
http://www.sophphx.caltech.edu/Lab_Equipment/Tektronix_TDS1000_2000_User_Manual.pdf )
Dupa cum am prezentat de la inceputul capitolului osciloscopul este utilizat pentru vizualizarea
semnalelor, dar pentru aceasta e nevoie sa ne conectam la semnal cu o sonda (fig 4). Aceasta are
rolul de a transporta semnalul de la circuit la osciloscop.
Sonda are un varf metalic care trebuie conectat la punctul de unde dorim vizualizarea semnalului
si o un cleste (“crocodil”) in lateralul ei, avand rolul de masa (GND).
Desi pare un dispozitiv extrem de simplu ce are ca rol doar transportul semnalului catre osciloscop,
design-ul sondei este unul complex. In cadrul acestui laborator nu se doreste o prezentare
amanuntita a sondei dar ar merita specificat faptul ca aceasta permita o atenuare o semnalului de
3
Lucrare de Laborator CD – Nr. 1
10 ori (datorata unei rezistente foarte mari, de 9MΩ care combinata cu rezistenta interna a
osciloscopului, 1MΩ creaza un divizor de tensiune 1/10) ceea ce permite o crestere a acuratetii
semnalului la frecvente foarte ridicate. In momentul in care alegem o atenuare a semnalului este
importanta si compensarea acestuia (in acest fel se modifica valoarea capacitatii sondei printr-un
condensator variabil incorporat in ea).
La fel ca si osciloscopul prezentat in subcapitolul anterior, analizorul Saleae (fig. 5) este utilizat
pentru achizitionarea semnalelor in vederea analizei. Spre deosebire de osciloscop, Saleae-ul nu
este capabil sa afiseze semnalele in timp real, acesta functioneaza doar pe baza de trigger si analiză
ulterioară a ceea ce s-a achizitionat.
Saleae-urile disponibile in laborator – cu 4 si 8 canale – permit vizualizarea atat a semnalelor
analogice cat si a celor digitale. La dispozitivul cu 8 canale toate canalele sunt configurabile
(analogic/digital), iar la cel cu 4 canale doar unul este configurabil, celelalte 3 fiind digitale. In
cazul digital amplitudinile semnalelor masurate au valori intre 1.8V si 5.5V iar in cazul analogic
nu sunt impuse valori ale amplitudinii semnalelor.
Analizorul de spectru este folosit pentru monitorizarea spectrului radioelectic si masurarea puterii
componentelor spectrale. Acest dispozitiv afiseaza amplitudinea semnalelor in functie de frecventa
(fig. 6) fiind complementare osciloscoapelor care afiseaza amplitudinea semnalelor in functie de
timp.
4
Lucrare de Laborator CD – Nr. 1
In cadrul acestui laborator se va folosi analizorul de spectru HM5014 (fig 7) cu ajutorul caruia se
va capta un semnal RF, fie de la un generator se semnal RF fie de la un alt dispozitiv pus la
dispozitie de cadrul didactic. Se vor analiza principalii parametrii ai semnalului: frecventa
centrala, latimea de banda, puterea/amplitudinea etc.
5
Lucrare de Laborator CD – Nr. 1
5. Partea practica
A= f= T= Factor de umplere =
Proiect
Schematic Capture permite proiectarea si simularea de circuite, avand deja biblioteci si modele
pentru majoritatea componentelor electrice utilizate in industrie.
PCB Design permite proiectarea din punct de vedere al PCB-ului pentru realizarea fizica a
circuitului.
6
Lucrare de Laborator CD – Nr. 1
Zona de unelte (1) aceasta permite accesul la cursor, plasare de componente, conexiuni electrice
si aparate de masura virtuale.
Zona de componente si biblioteci (2) in aceasta zona se vor plasa componentele selectate de
utilizator pentru a facilita accesul reapid.
Zona de proiectare (3) reprezinta locul in care utilizatorul va adauga efectiv componentele pentru
circuitul realizat si va stabili conexiunea intre acestea.
Zona pentru controlul simularii (4) contine optiunile pentru pronirea si oprirea simularii
circuitului si a aplicatiei.
https://www.youtube.com/watch?v=WYkTHvtrnLk
Bibliografie
7
Lucrare de Laborator CD – Nr. 2
Justificarea deformării formei semnalului datorită caracteristicilor mediului, atunci când se propagă
prin acesta. Utilizarea diferitelor aparate de măsură și deprinderea studenților cu interpretarea
graficelor și a parametrilor formelor de undă.
2. Breviar teoretic
Un semnal care parcurge un mediu fizic își modifică amplitudinea și forma chiar dacă nu există
perturbații care să se suprapună peste semnalul ce trece prin mediu. Acest lucru se datorează
parametrilor electrici (rezistența R, conductanța G, capacitatea C și inductanța L) care au valori ce
depind de calitatea materialelor mediului și care cresc odată cu lungimea traseului (aspecte ce sunt
tratate la electrotehnică în teoria liniilor lungi). Valorile acestor parametri sunt date în cataloagele
producătorilor raportat la unitatea de lungime (de ex. 0.2x10-5 Ohm/m, 5x10-8pF/m). Mediul se
comportă, datorită acelor parametri, ca un filtru care nu permite trecera anumitor frecvențe componente
ale semnalului. Fenomenul este foarte evident la transmiterea semnalelor digitale și de aceea în această
lucrare analizăm un astfel de semnal.
Explicarea fenomenelor se bazează pe cunoștințe de teoria sistemelor, prezentate sintetic în
continuare: un conductor electric este un sistem (Fig.1) care are o funcție de transfer H(s) determinată
cu un stimul aplicat la intrare u(t) si răspunsul la ieșire y(t) (de exemplu, utilizând metoda legilor lui
Kirchhoff sau altă metodă de rezolvare a problemelor de circuite) și ne propunem să calculăm
răspunsul y(t) al circuitului la acțiunea la intrare a lui u(t) atunci când cunoaștem funcția de transfer
H(s).
Fig.1
Fig. 2
În ambele cazuri de funcționare, amintite mai sus, ne interesează cum arată semnalul la ieșire, adică
determinarea răspunsului sistemului la un anumit semnal de intrare. Mai întâi avem nevoie de funcția
de transfer și dat fiind că avem un sistem la care putem scrie legile după care funcționează putem
determina modelul analitic (în caz contrar eram nevoiți să determinăm prin încercări experimentale
răspunsul sistemului și apoi să identificăm modelul matematic împreună cu parametrii aferenți).
Așadar funcția de transfer H(jω) se calculează plecând de la circuitul echivalent în complex (fig. 3):
Y=Zc/(Zc+ZR).U ═> H(jω)=1/(1+jω.R.C) sau notând ω0=1/R.C (pulsația de tăiere), se obține
H(jω)=1/(1+jω/ ω0) cu modulul ׀H(jω)=׀1/[(1+(ω/ ω0)2]1/2 și faza φH=φnumărător-φnumitor= arctg(0/1)-
arctg[(ω/ ω0)/1]= -arctg(ω/ ω0).
(Relațiile de mai sus, precum și altele care apar în lucrare- vezi fig. 6-au fost deduse în detaliu nu
numai la TS, ci si la diferite discipline de matematică).
Fig. 3
Pentru a reprezenta grafic modulul și faza, le calculăm pentru valorile lui ω egal cu: ω =0, ω =∞ și ω
=ω0. Graficul modulului ne arată atenuarea semnalelor sinusiodale cu diferite frecvențe, iar cel al fazei
ne arată întârzierile (defazajul) undei la respectivele frecvențe.
Lucrare de Laborator CD – Nr. 2
Fig. 4
Observăm că prin aplicarea unor semnale sinusoidale, atunci când frecvența este mare (perioada mică),
amplitudinea la ieșire este mai mică, iar semnalul este mai defazat față de cel de la intrare. Dacă
frecvența crește peste ω0 =1/R.C (pulsația de tăiere), atunci aceste componente nu mai trec (nu se mai
propagă) prin mediu.
Un semnal periodic de tip impulsuri rectangulare se compune dintr-o infinitate de sinusoide (sau
cosinusoide), lucru ușor de dovedit prin utilizarea teoriei seriei Fourier. Prin mediu, doar o parte din
aceste frecvențe se pot propaga, acest fapt conducând la distorsionarea semnalului care ajunge la
receptor.
b) Regimul tranzitoriu
În situația în care semnalele ui=u(t) și ue=y(t) sunt cauzale, circuitul funcționează în regim tranzitoriu și
pentru studiul comportării în regim tranzitoriu se utilizează transformata Laplace.Vom nota cu Y(s)
transformata Laplace a semnalului y(t) de la ieșire și cu U(s) transformata Laplace a semnalului de
intrare u(t) . Metodologia de calcul a răspunsului y(t) la excitația u(t) aplicată la intrare, pentru un
circuit/system, este următoarea:
- determinarea lui U(s) din u(t) , folosind transformata Laplace directă.
- determinarea lui Y(s) , folosind relația Y(s) = H(s) U(s) .
- determinarea lui y(t) din Y(s) , folosind transformata Laplace inversă.
Să vedem răspunsul circuitului din fig. 3, a cărui funcție de transfer o avem, la un semnal u(t) de tip
impuls rectangular. Acest impuls arată ca în fig. 5 și este decris matematic de relația: u1(t)=A[u(t)-
u(t+τ)].
Fig. 5 Fig. 6
Folosind Laplace rezultă ecuațiile din fig. 6, aloarea lui α fiind egală cu ω/ ω0.
Reprezentând grafic (sunt de fapt răspunsurile la două semnale treaptă și aplicarea principiului
superpoziției) vom obține (fig. 6):
Lucrare de Laborator CD – Nr. 2
Fig. 6
Un astfel de răspuns se poate obține direct în domeniul timp scriind legea a 2-a a lui Kirchhoff
R.i(t)+1/Cʃi(t)dt=u(t) și căutând soluția.
3. Partea practică
Fig. 7
- calcularea pulsației și frecvenței de tăiere (ft) pentru R și C date în montaj
- efectuarea experimentelor descries mai jos.
La intrarea circuitului se aplică de la generator un semnal sinusoidal cu amplitudine de 1V, și
componenta continuă 0V. Frecvența semnalului sinusoidal trebuie să fie egală cu valorile specificate în
tabelul 1.
Osciloscopul trebuie pus in modul de lucru dual pentru a putea vedea simultan semnalul de intrare si
cel de iesire. In tabelul 1 se vor trece valorile amplitudinii semnalului de iesire, si ale defazajului care
apare intre semnalul de iesire si cel de intrare.
Sondele atât cea de la generator, cât și cea de la osciloscop se conectează respectând borna care
reprezintă borna de semnal (firul cald), respectiv borna care reprezintă borna de masă.
Tabelul 1.
Din măsurătorile efectuate se poate observa că circuitul se comportă ca și un filtru trece jos: semnalele
de intrare care au frecvența în banda de trecere (f<ft) trec fără a fi atenuate sau defazate, în timp ce cele
aflate în afara benzii de trecere (f>ft) sunt defazate cu -π/2.
Dacă se dispune de un analizor de spectru se vor vizualiza spectrele semnalului înainte (la ieșirea
generatorului) și după trecerea prin circuitul RC (la ieșirea montajului). Se consemnează frecvențele
care sunt atenuate.
4. Proiect
Bibliografie
1. Curs de Teoria sistemelor (prof. T. Dragomir)
2. Cursuri de matematici
3. Note de curs de Comunicații de date (I. Silea)
TRANSMISIA SERIALA. Dispozitive UART/USART
1. INTRODUCERE
2. BREVIER TEORETIC
La ora actuală nu s-a impus niciuna dintre abordări în detrimentul celeilalte astfel că, în practică, pot
apărea probleme la conectarea diferitelor circuite - în cazul în care nu se ține cont de oridinea cerută de
către producator.
2.3 Aspecte generale despre comunicații prin RS232
Un sistem de comunicaţii de date are urmatoarele parţi componente:
Sursa - echipamentul care generează datele; Destinaţia - echipamentul care primeşte datele;
Canalul de comunicaţie (mediul prin care se trimit datele/semnalele).
Echipamentul sursă poate fi uneori şi receptor, sau invers. Din acest punct de vedere avem
urmatoarele tipuri de transmisii:
1. Transmisia simplex. Pe canal, datele se transmit într un singur sens. Exemplu: transmisia Radio
TV clasica.
2. Transmisia duplex (sau full duplex). Pe canal, datele se transmit concomitent în ambele sensuri.
Echipamentele sînt concomitent sursa şi receptor. Exemplu: telefonie, reţele de calculatoare.
3. Transmisia semiduplex (sau half duplex). Pe canal, datele se transmit în ambele sensuri, dar nu
concomitent, ci în intervale de timp distincte. Exemplu: interfoane, staţii radio mobile.
Un model general a unui sistem de comunicaţii de date este aşa numitul sistem de comunicaţii cu 7
parţi (Fig.3).
1 2 3 5 6 7
4
DTE DCE DCE DTE
Fig.3
Unde:
1,7 - DTE (Data Terminal Equipment) este un terminal de comunicaţii de date (calculator)
3,5 - DCE (Data Communication Equipment) este un modem – un echipament de conectare la linie
2,6 - sînt interfeţele dintre DTE şi DCE.
Prin interfaţă înţelegem o specificaţie, un standard, prin care sînt definite caracteristicile mecanice,
electrice şi logice prin care două echipamente se interconectează. În sens mai larg, adesea, prin
interfaţă se înţelege dispozitivul hardware care implementează funcţionalitaţile definite anterior.
4 - este canalul/linia de comunicaţie.
Ne propunem, în continuare, sa prezentăm pe scurt interfaţa serială standardizată sub acronimul
RS232. Standardul a fost elaborat iniţial în SUA de catre organismul EIA (Electronic Industry
Association). Ulterior, el a fost adoptat şi în Europa, sub denumirea V24, de către CCITT.
Un exemplu de comunicație RS232 este ilustrat (Fig. 4), iar semnificațiile funcționale pentru DCE și
DTE se găsesc în Tabelul de mai jos (NU trebuie memorate pentru examen aceste informații; ele sunt
prezentate pentru a înțelege complexitatea realizării fizice a schimbului de date):
Fig. 6 a)
Fig. 6 b)
Interfața permite transferul sincron sau asincron. Formatul datelor în transferul asincron este (fig.7):
Fig. 7
Caracteristici: Sincronizare la nivel de caracter prin bitul START, 5 – 8 biţi de date, bit de paritate
(opţional) și 1, 1.5 sau2 biţi de STOP.
Informația între procesor (microcontroler) și 8251 se schimbă pe baza unor registre tampoan pentru
recepție și emisie. Structura lor este conform fig. 8.
Fig.8
Recepţia: Pentru creşterea vitezei, a fost implementat conceptul de suprapunere (fig. 9).
Fig. 9 Suprapunerea la receptie.
Fig. 10
Tamponul pentru transmisie este alcătuit din 2 registre, TA şi TB (vezi fig.5).
Unitatea centrală încarcă un caracter în registrul TA, circuitul îl transferă în registrul
TB, de unde caracterul este serializat şi transmis pe linie.
După transferul conţinutului registrului TA în TB, circuitul activează semnalul TXRDY
comunicând microprocesorului că poate prelua un nou caracter.
Simultan este activat şi rangul cu acelaşi nume din registrul de stare.
Dezactivarea terminalului TXRDY se face de primul front al semnalului /WR care
corespunde operaţiei de scriere a unui nou caracter de către microprocesor.
Terminalul TXRDY este activat la îndeplinirea condiţiilor descrise mai sus doar dacă
transmisia poate avea loc, adică rangul TXE din cuvântul de comandă este 1 şi
terminalul /CTS = 0;
De remarcat că rangul TXRDY din registrul de stare este activat indiferent de starea
rangului TXE şi a terminalului /CTS.
Terminalul TXE este activat atunci când caracterul din TB a fost serializat şi transmis,
indicând microprocesorului că tamponul de transmisie este gol.
Dacă microprocesorul nu scrie o nouă dată în registrul TA, până când circuitul a
terminat de serializat caracterul din TB, acesta va detecta eroare de ritm la transmisie şi
va poziţiona rangul corespunzător din registrul de stare.
De remarcat că eroarea de ritm la recepţie este distructivă, în sensul că se pierd
caractere, pe când la transmisie nu este distructivă, provocând doar scăderea vitezei
transmisiei.
Semnalele TxRDY şi RxRDY pot fi surse de cereri de întrerupere.
Exemple de conexiuni/legături fizice pentru a realiza schimbul de date (nu este trecut și numărul
pinului):
Fig.13
Structura cuvântului de mod pentru transmisie asincronă este: cea din fig. 14, cuvântul de comandă
este în fig.15, iar cuvântul de stare în fig. 16.
Fig.14
Fig. 15
Fig.16
Utilizarea în cadrul proiectelor de electronică industrială şi comunicații a numeroase componente
comune precum: Microcontroller (uC), LCD, EEPROM, RAM, Real Time Clock, Convertoare analog-
numerice sau numeric-analogice, diferiți senzori (de temperatură, de presiune etc.) a determinat
necesitatea dezvoltării acestei interfețe, sub forma unor noi circuite.
EXEMPLU DE IMPLEMENTARE
Pentru schema din fig. 5 b) să se realizeze o interfaţa serială cu circuitul 8251, conectată la o unitate
centrală ....., transferul facându–se prin program. Datele iniţiale ale transferului sunt: 8 biţi de date, fară
paritate, 2 biţi de STOP, factor de multiplicare 16, Rata de transfer: 9600 bps.
Sunt relevante:
Rutina de programare a circuitului specializat,
Rutinele de emisie şi recepţie.
Rezolvare:
Adresele de port: 00H pentru date şi 02H pentru comenzi/ stari;
Rutina de programare:
MOV AL,0CEH ; cuvânt de mod
OUT 02H,AL
MOV AL,15H ; cuvânt de comanda
OUT 02H,AL
Rutina de emitere caracter:
Emite: IN AL,02H ; citire şi testare rang TxRDY din cuvântul de stare
RCR AL,1
JNC Emite
MOV AL,CL ; se preia data din registrul CL
OUT 00H,AL
RET
Rutina de recepţie caracter:
Recept: IN AL,02H ; citire şi testare rang RxRDY din cuvântul de stare
RCR AL,2
JNC Recept
IN AL,00H ; se preia data de la 8251
MOV CL,AL ; se depune data în registrul CL
RET
2.4 Structura USART a microcontroller-ului Atmega328p.
USART-ul prezent pe microcontroller-ul ATMEGA328P prezintă următoarele caracteristici:
- Operare Full Duplex (Independent Serial Receive and Transmit Registers)
- Operare în mod sincron și/sau asincron
- Suportă cadre cu 5, 6, 7, 8, sau 9 biți de date și 1 sau 2 biți de stop
- Generarea și verificarea din hardware a bitului de paritate
- Detectia de “OverRun” la nivel de date
- Detecția erorilor de format
- Filtrarea automată a zgomotelor (include detecția de biți falși de start și un filtru trece jos)
O schemă bloc este redată în fig. 17 și o implementare (utilizare) descrisă în continuare.
Fig. 17
Se observă trei zone principale: a) Generatorul de tact; b) Emițătorul; c) Receptorul.
Schema bloc a generatorului de tact este ilustrat în fig. 18.
Unde semnalele au semnificația următoare:
Generatorul de tact are scopul de a genera tactul pentru transmisie și receptie și poate fi configurat
în modurile: asincron normal, asincron double speed, sincron master și sincron slave.
In modurile asincrone și sincron master generatorul fi cel care determină baud rate-ul, setarea
registrului aferent se face confrom cu următoarea formulă (vezi în tabelul ce urmează):
Fig.19
Pentru transferul sincron se poate alege, funcție de aplicație, ca citirea și scrierea să se facă pe front
urcător sau pe front coborâtor al semnalului de clock. Modul de operare sincron este ilustrat in fig. 20.
Fig.20
Dacă este nevoie de utilizarea unui bit de paritate acesta se poate să fie par sau impar și se definește
prin operația de ”sau” pe biți de date:
Pentru a avea loc citirea și scrierea de date perifericul de USART trebuie inițializat. Un exemplu de
inițializare este următorul:
Pentru a asigura transmisia sau recepția tuturor datelor se poate proceda în două moduri polling sau
întrerupere. Pentru citirea prin polling pașii ce trebuie urmați sunt descriși în diagrama din fig. 21 a) de
mai jos.
Fig. 21
Diagrama se ”traduce” în cod în felul următor:
Pentru scrierea datelor și verificarea scrierii prin polling, pașii ce trebuie urmați sunt descriși în
diagrama din fig. 21 b). Diagrama se ”traduce” în cod în felul urmator:
Detecția de erori se face prin intermediul registrului UCSRnA, astfel se pot determina erori de paritate,
suprapuneri de date și erori de format.
Documentația completă a microcontroller-ului Atmega 328p se găsește la următorul link:
http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-
328P_datasheet.pdf
3.PARTE PRACTICĂ
1. Considerând transmisia serială asincronă să se deseneze diagrama de timp pentru transmisia
codului ASCII pentru caracterele A, Q având următoarele caracteristici:
a) 8 biți de date, 1 stop bit, fără bit de paritate
b) 8 biți de date, 1 stop bit, paritate even
2. Folosind placa de dezvoltare Arduino sau simularea în mediul Proteus să se realizeze
transmisia/recepția de mesaje pe interfața USART prin polling și prin întrerupere.
4.TEMĂ PROIECT
BIBLIOGRAFIE
1. Documentație Interfața USART 8251 (…).
2. Documentație circuite 8253, Max 232, 74LS138.
3. Documentatie Atmega328p
4. Proiectarea microsistemelor digitale - Note de curs (M. Popa)
OBSERVAȚII
(i) - La examinarea de final de curs NU este nevoie ca studenţii să memoreze poziţia fiecărui bit de
programare. Întrebarea de la test va fi asociată cu un text care va conţine toate datele necesare rezolvării.
(ii)- Nu se poate proiecta o aplicaţie cu datele furnizate de acest material, pentru că materialul este
didactic şi nu conţine detalii privind variaţia în timp a semnalelor, valorile lor logice în care semnalele
sunt active, alocarea la pini etc. Pentru proiectare este nevoie de consultarea foilor de catalog.
Lucrare de laborator CD – Nr. 4
CONCEPTUL DE MAGISTRALĂ I 2 C
1. INTRODUCERE
1.1. SCOPUL LUCRĂRII
Scopul lucrării de laborator este acela de a f amiliariza studenții cu aspectele practice de
bază pentru utilizarea în aplicații a comunicației de date folosind i nterfața I2C.
În cazul în care în locul condiției de STOP este trimisă o condiție de START repetată, transferul de date
continuă după aceleași reguli. Condiția de STOP va fi trimisă după ultimul bit de date din cadrul transferului.
Fiecare octet care este transmis în cadrul transferului de date trebuie să înceapă cu cel mai semnificativ bit –
după ce acesta este transferat de către nodul master, este necesar un semnal de confirmare al recepţiei de către
nodul slave printr-un bit de confirmare (ACK). În cazul în care nodul slave va răspunde cu un octet, nodul master
va trebui să trimită un bit de confirmare (ACK). Dacă doi octeți sunt transmiși în cadrul aceluiași transfer linia de
ceas este ținută pe “0” logic pentru o perioadă scurtă de timp necesară nodului slave pentru a trimite toți cei 8 biți
de date.
Figura 2-2-2. Transferul de date – condiții de funcționare la nivel de octet. Bitul de confirmare.
1) În cadrul magistralei nu există nodul slave adresat care ar fi trebuit să trimită bitul de confirmare.
2) Nodul slave nu poate primi sau transmite date deoarece execută alte funcții în timp real.
3) În timpul transferului de date, nodul primește date sau comenzi pe care acesta nu le cunoaște.
4) În timpul transferului de date, nodul nu mai poate primi alți biți de date.
5) Nodul master receptor trebuie să semnaleze sfârșitul transferului de date nodului slave transmițător.
2
2.4 S INCRONIZAREA LINIEI DE CEAS .
În cazul în care mai multe noduri de tip master sunt prezente pe aceeași magistrală I2C, sincronizarea liniei
de ceas are loc în următorul mod :
- Un nod de tip master trage linia de ceas pe valoarea “0” logic;
- Linia de ceas rămâne pe valoarea “0” logic atât timp cât există cel puțin un nod master care o menține în
acea stare;
- După ce toate nodurile de tip master au contorizat trecerea prin această stare, linia de ceas revine la
valoarea “1” logic;
- Primul nod master care va contoriza starea de “1” logic va trage linia de ceas înapoi pe “0” logic;
- În acest mod, sincronizarea liniei de ceas este realizată prin trecerea liniei de ceas pe valoarea “0” logic
pe o durată determinată de nodul master care contorizează cel mai lent această stare și trecerea liniei de
ceas pe valoarea “1” logic pe o durată determinată de nodul master care contorizează cel mai rapid această
stare.
3
Totuși, există cazuri în care se poate ajunge la condiții nedefinite :
- Dacă master1 trimite o condiție de START repetat și master2 trimite un bit de date
- Dacă master1 trimite o condiție de STOP şi master2 trimite un bit de date
- Dacă master1 trimite o condiție de START repetat și master2 trimite o condiție de STOP.
- Între un nod master și un nod slave în care nodul master citește direct după ce acesta trimite adresa
nodului slave și bitul de citire;
3. EXEMPLU DE IMPLEMENTARE
4
Figura 3-1-2. Legătura între Arduino MASTER și Arduino SLAVE folosind I2C (schematic).
int x = 0;
void setup() {
Wire.begin(); // Pornire nod master în cadrul magistralei
}
void loop() {
Wire.beginTransmission(9); // Adresarea nodului slave cu adresa 9
Wire.write(x); // Trimiterea octetului de date
Wire.endTransmission(); // Trimiterea condiției de STOP
x++; // Incrementarea valorii ce urmează a fi
// trimisă
5
if (x > 5) // Resetarea valorii la 0 după ce a fost
// trimisă valoarea 5
delay(500);
}
void setup() {
pinMode (LED, OUTPUT); // Setarea pinului de led ca output
Wire.begin(9); // Pornire nod slave cu adresa 9
Wire.onReceive(receiveEvent); // Definirea unui trigger în cazul recepției
// de informație de pe linia de date
}
void receiveEvent(int bytes) {
x = Wire.read(); // Citirea unui octet de pe linia de date a
// magistralei
}
void loop() {
if (x == '0') { // Dacă valoarea este 0, ledul va pâlpâi de 2
// ori până la recepția următoarei valori
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
if (x == '3') { // Dacă valoarea este 3, ledul va pâlpâi o
// singură data până la recepția următoarei
// valori
digitalWrite(LED, HIGH);
delay(400);
digitalWrite(LED, LOW);
delay(400);
}
4. PARTEA PRACTICĂ
6
Folosind modulele de achiziție de tip Saleae existente i n laborator se va efectua o captu r ă a
schi mbului de date înt re cele două module Arduino și se vor analiza și interpreta secvenț ă cu
secvență semnalele , pe fiecare canal achiziți onat.
Imaginile captate și comentate se vor pune într -un document conținând datele de identificare
ale studentului (data/nr.lucrare de laborator/numele&prenumele/subgrupa/anul de
studii&specializarea) și se vor preda cadrului didactic coordonator al laboratorului.
Proiect – Tema 3
În mediul de si mulare Proteus s ă se realizeze un montaj între un Arduino UNO și doi senzori de
temperatura DS1621*, comunicația avand loc pe magistrala I2C. Modulul Ardunino va citi valorile de
temperatură (virtuale) măsurate de cei doi senzori și le va afișa pe un display serial 2x16 (conectat pe porturile
sale seriale).
* http://datasheets.maximintegrated.com/en/ds/DS1621.pdf
BIBLIOGRAFIE
1. Documentație Interf ața I2C ( UM10204, I2C-bus specification and user manual, Rev. 6 — 4 April 2014
(format pdf, NXP Semiconductors).
2. Documentație module Arduino UNO.
3. Note de curs Comunicații de date ( I. Silea) .
7
Lucrare de Laborator CD – Nr. 5
1. Introducere
Perifericul slave utilizează semnalul de ceas (SCK) pentru achiziţia de date (fluxul de biţi
transmişi serial de către master). După cum am precizat încă din partea introductivă comunicaţia
SPI este o comunicaţie full duplex:
- master-ul trimite un bit pe linia MOSI care este citit de către slave de pe aceeaşi linie;
- slave-ul trimite un bit pe linia MISO care este citit de către master de pe aceeaşi linie;
Transferul propriu-zis de date folosind protocolul SPI implică doi regiştrii de deplasare serială a
datelor (serial shift registers), unul pentru master şi unul pentru slave interconectaţi ca în figura
4. Masterul începe transmisia unui octet prin scrierea acestuia în registrul său de deplasare.
Deplasarea se începe cu bitul cel mai semnificativ (MSB) pe liniile MOSI moment în care un
nou bit este adaugat pe pozitia cea mai puţin semnificativă (LSB) din registru. Pe masură ce se
face transmisia către slave (prin MOSI), slave-ul începe la randul său să transmită date din
registrul său de deplasare (prin MISO) către master. În acest fel se face schimbul de informaţii
între cele 2 registre seriale de deplasare. După ce întreg cuvântul a fost transmis, master-ul şi
slave-ul au interschimbat valorile din cei doi regiştrii; dacă mai există date de transmis procesul
se repetă.
Când nu mai există date de transmis masterul va întrerupe generarea semnalului de ceas şi va
pune linia SS destinată slave-ului respectiv pe 1.
În cazul unei comunicaţii Master – Multi Slave, selectarea slave-ului de către master se face prin
intermediul liniei SS. Slave-urile neselectate de către master nu vor lua parte la comunicaţie –
vor ignora semnalele de pe SCK şi MOSI şi nu vor transmite nimic pe MISO.
Master-ul poate selecta doar un slave la un moment dat.
3. SPI vs I2C
Protocoalele SPI şi I2C sunt folosite pentru comunicaţia între circuite integrate şi periferice la
viteze de transfer scăzute. În următorul tabel este prezentată o comparaţie între cele 2 standarde
de comunicaţie:
4. Parte Practică
4.1 Componente necesare
- Arduino Uno
- SPI Bus Serial EEPROM (25LC040A)
- Breadboard + fire pentru realizarea legăturilor
Circuitul 25LC040A
Interfata SPI
Max. clock 10 MHz
Organizare 512 x 8-bit
Mod de scriere pe pagină (până la 16 bytes)
Protecţie pentru suprascrierea datelor
Număr de ciclii de ştergere/scriere: 1,000,000 Erase/Write cycles
Perioada de reţinere a datelor : > 200 ani
Pentru varianta DIP avem următorul pin layout
4.2 Cerinţe
Să se realizeze o scriere urmată de o citire a unei secvenţe de date (pe baza unor comenzi
recepţionate de pe interfaţa serială) de la un Arduino Uno la o memoria flash EEPROM
(25LC040A) pe baza exemplului următor:
#define MOSI 11 //MASTER OUT SLAVE IN
#define MISO 12 //MASTER IN SLAVE OUT
#define SPICLOCK 13 //MASTER CLOCK OUTPUT
#define SLAVESELECTEEPROM1 10 // SLAVE SELECT CHIP EEPROM 1
#define SSTRANSITIONDELAY 10
#define WRITEDELAY 1000
byte eeprom_output_data=0;
byte eeprom_input_data=0;
//Adresa de scriere/citire
int address=7;
}
}
//Inializarea sistemului
void setup()
{
Serial.begin(9600); //Initializarea interfata seriala
inputString.reserve(10); //Alocare date comanda
pinMode(MOSI, OUTPUT); //Configurare pin iesire
pinMode(MISO, INPUT); //Configurare pin intrare
pinMode(SPICLOCK,OUTPUT); //Configurare pin iesire
pinMode(SLAVESELECTEEPROM1,OUTPUT); //Configurare pin iesire
// SPCR = 01010000
//interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
//sample on leading edge of clk,system clock/4 rate (fastest)
SPCR = (1<<SPE)|(1<<MSTR);
byte clr; //Variabila temporara pentru
curatarea registrelor SPE si MSTR
clr=SPSR; // "Curatarea" registrului SPSR
clr=SPDR; // "Curatarea" registrului SPDR
void loop()
{
if (stringComplete) {
Serial.print("Received command: ");
Serial.println(inputString);
//Alegere operatie
handleMemoryOperation(inputString);
// Resetare variabile globale
inputString = "";
stringComplete = false;
}
Realizaţi o structura Master – Multi Slave (Arduino – 2 memorii EEPROM) şi pe baza unor
comenzi date să se facă scrirea/citirea din cele 2 memorii:
Utilizând analizoarele Saleae să se monitorizeze liniile SPI: SCK, MOSI, MISO, SS.
Proiect
Să se implementeze un sistem Single Master – Multi Slave pentru citirea şi scrierea datelor din
două memorii EEPROM (25LC040A) pe baza protocolului definit mai jos: