Sunteți pe pagina 1din 72

Cuprins

Introducere.....11
Capitolul 1. Conceptul de magistral IC................13
1.1 Beneficii ale designerului.......15
1.2 Beneficii producator...16
1.3 Introducere n conceptul de interfa I2C ....16
1.4. De ce am ales comunicarea I2C pentru aceast lucrare?..................................................................17
Capitolul 2. Conceptul de magistral I2C...........................................................................................19
2.1 Caracteristici generale....20
2.2 Transferul unui bit..21
2.3 Valabilitatea datelor ..21
2.4 Condiii de START i STOP..22
2.5. Transferul datelor..22
2.5.1 Formatul byte-ului ...22
2.5.2 Acknowledge...23
2.6 Arbitrarea i generarea clock-ului. ...24
2.6.1 Sincronizarea semnalelor de clock....24
2.6.2 Arbitrarea .24
2.7. Formatul cu adrese pe 7 bii.
..26
2.8 Adresarea pe 7 bii.28
2.9 Definirea biilor din primul octet...28
2.10 Adresa de apel general. ...30
2.11 Byte de START ...32
2.12.Extensii ale modului standard pe magistrala I2C.. .32
2.12.1 FAST-MODE ..33
2.12.2 Hs-MODE (mod de high-speed)...34
2.13 Transfer de mare vitez ..34
2.14 Formatul transferului de date serial n modul HS (high-speed). 36
2.15 Trecerea de la modul Fast/Standard la modul HS i invers.38
2.16 Dispozitive de mod High-speed la modurile de vitez mai mici....38
2.17 Moduri de vitez mixt pe un sistem de magistrala serial .39
2.18 Modul de transfer fast sau standard ntr-un sistem cu viteze mixte...............................................41
2.19 Transferul de mare vitez ntr-un sistem cu viteze mixte................................................................41
2.20 Cerine de timp pentru legtur dintr-un system cu viteze mixte....................................................42
2.21.Conexiuni electrice ale dispozitivelor I2C legate la magistral.......................................................42
2.22 .PCA9555 ........................................................................................................................................44
2.22.1. Descriere generala...............................................................................................................44

2.22.3 Schema bloc....44.


2.22.2 Specificaii.......44
2.23 PCA9553 ........................................................................................................................................46
2.23.1 Descriere general.........................................................................................................46
2.23.2 Specificaii. ...................................................................................................................47
2.23.3 Schema bloc a PCA9553............................................................................................. 47
Capitolul 3.Partea hardware.49
Capitolul 4. Partea software..................................................................................................................57
4.1 Structura programului....58
4.2 Funcia de delay (ntarziere) ..59
4.3 Funcia de iniializarre a magistralei..................................................................................................59
4.4 Funcia de trimitere a unui byte (octet)..............................................................................................59
4.5 Funcia de primire a unui byte. 62
4.6 Funcia de scriere. 63
4.7 Funcia de citire.................................................................................................................................66
Concluzii.....73
Bibliografie.75

LIST ACRONIME

ACK
Acqnowledge = Confirmare;
ADC
Analog-Digital Convertor = Convertor analog-digital;
ARM
Advanced RISC Machines = Procesoare cu arhitectur RISC avansat.
CBUS
Communication Bus = Magistral de comunicare;
CLI
Comand Line Interface = Interfa de comand;
CLK
Clock = Semnal de ceas;
CMOS
Complementary metaloxidesemiconductor = Tehnologie de realizare a
dispozitivelor MOS;
DIL
Dual-in-Line = Integrate cu dou rnduri de pini;
DTMF
Dual-tone multi-frequency = Semnal generat la apsarea tastelor unui telefon.
EEPROM
Electrically Erasable Programmable Read-Only Memory = Memorie nevolatil ce
poate fi programat i tears n circuit;
GPIO
General Purpose Input/Output = Intrare/Iesire de uz general;
GVM
Generating Voltmeter = Voltmetru pentru msurri de tensiuni nalte;
HS
High-speed = Vitez mare;
I/O
Input/Output = Intrare/Ieire;
I2C
Inter-Integrated Circuit = Magistral de comunicare serial;
IC.
Integrated Circuit = Circuit Integrat;
INT
Interrupt = ntrerupere;
JTAG
Joint Test Action Group = Port folosit pentru interconectare;
LCD
Liquid Crystal Display = Afiaj cu cristale lichide;
LDO
Low Dropout Regulator = Regulator liniar de tensiune;
LED
Light Emission Diode = Dioda luminiscent;
LSB
Least Significant Bit = Cel mai puin semnificativ bit;
MSB
Most Significant Bit = Cel mai semnificativ bit;
PCB
Printed Circuit Board = Plac cu cablaj imprimat;
RAM
Random Acces Memory = Memorie cu acces aleator;
ROM
Read Only Memory = Memorie ce poate fi doar citit;
SCL
Serial Clock = Linie de ceas serial;
SCLH
Serial Clock High-speed = Linia de ceas n modul HS.
SDA
Serial Data = Linie de date serial;
SDAH
Serial Data High-speed = Linia de date serial n modul HS;
SO
Small Outline = Ocupare redus;
SRAM
Static Random Access Memory = Memorie cu acces aleator ce nu necesit
mprosptare;
USB
Universal Serial Bus = Magistral serial universal;
VSO
Very Small Outline = Ocupare foarte redus;

INTRODUCERE

Dezvoltarea tehnologic masiv ce a influentat societatea modern n ultimele decenii, a dus la


necesitatea adaptrii la noi standarde i cerine. Circuitele au crescut n complexitate, au scazut n
dimensiuni, comunicaiile ntre acestea au crescut n vitez, dnd astfel natere unor noi provocri
pentru designer i pentru producatori. NXP Semiconductors a propus o soluie pentru astfel de
probleme, o magistral de comunicare simpl, bidirecional, cu doar dou linii de magistral,
reducndu-se drastic complexitatea cablajelor, o magistral multi-master, i, poate cel mai mare
avantaj, o magistral la care se pot aduga sau elimina dispositive extrem de uor, fcnd-o astfel o
magistral foarte deschis la dezvoltari ulterioare.
Lucrarea de faa prezint realizarea n miniatur a unei platforme funcional ce va constitui parte
din sistemul de comand-control al acceleratorului Tandem de la Institutul de Fizic i Inginerie
Nuclear Horia Hulubei, platform realizat cu un microcontroller din familia K10 de la Freescale i
periferice IC, comunicarea ntre acestea realizndu-se prin magistrala IC.
n primul capitol se prezint conceptul de magistral IC, caracteristici generale, beneficii
introduce de aceast magistral att pentru designer, ct i pentru producatori. Tot n acest capitol este
descris i motivul pentru care am ales s folosesc aceast magistral.
n capitolul 2 se prezint n detaliu magistrala IC, protocolul acesteia, modul de transfer al datelor,
sincronizarea i arbitrajul magistralei, adresarea pe 7 bii i extensii ale modului standard ale
magistralei ( modul Fast i modul High-Speed). Tot n acest capitol sunt descriese cele dou periferice
IC integrate pe plac i utilitatea lor.
n capitolul 3 este prezentat funcionarea hardware a plcuei, este prezentat schema bloc a
ntregului dispozitiv, schemele circuitelor componente i descrierile acestora. De asemenea sunt
detaliate conexiunile dintre componente i alocarea pinilor.
Capitolul 4 prezint codul surs i mediul de programare folosit pentru realizarea proiectului. Se
explic fiecare subrutina si rutinele principale ale ntregului program i sunt schematizate n
organigrame structurile codului.
n final sunt extrase concluziile acestui proiect i sunt expuse idei pentru dezvoltare ulterioar a
proiectului folosind infrastructura folosit n aceast lucrare.

11

12

Capitolul 1. Conceptul de magistral IC


n piaa electronicelor de larg consum, telecomunicaiilor i electronic industrial, sunt de multe ori
mai multe similitudini ntre modele aparent fr legtur. De exemplu, aproape fiecare sistem include:
Un control inteligent, de obicei, un microcontroler single-chip.
Circuite de uz general, cum ar fi drivere LCD, porturi I/O controlabile de la distan, RAM,
EEPROM, sau convertoare de date.
Circuite orientate spre aplicaie, cum ar fi un Tuner digital i circuitele de procesare a semnalului
pentru sisteme radio i video, sau generatoare DTMF pentru telefoane cu apelare prin tonuri.
Pentru a exploata aceste similitudini n beneficiul att al designerilor de sisteme ct i al
productorilor de echipamente, precum i pentru a maximiza eficiena de hardware i simplitatea de
circuit, Philips a dezvoltat o magistrala simpl, bidirecional, cu 2 fire pentru un control eficient interIC. Acesat magistrala se numete Inter IC sau I2C. n prezent, gama Philips IC include mai mult de 150
de tranzistoare CMOS i bipolare, tipuri compatibile I2C pentru ndeplinirea funciilor n toate cele trei
categorii menionate anterior. Toate dispozitivele compatibile I2C ncorporeaz o interfa on-chip care
le permite s comunice direct unele cu altele prin intermediul magistralei I2C. Acest concept de design
rezolv multe probleme conexe ntlnite n proiectarea circuitelor de control digital.Aici sunt unele
dintre caracteristicile magistralei I2C:
sunt necesare doar dou linii de magistral: o linie de serie de date (SDA) i o linie de ceas serial
(SCL) (exemplu n figurile de mai jos).

Fiecare dispozitiv conectat la magistral este adresabil software de o adres unic i exist relaii
simple de master / slave; n orice moment dispozitivele master pot funciona ca master-emitoare sau
ca master-receptoare.
Este o magistral muli-master, ce include detectarea coliziunilor i impune reguli de arbitraj pentru a
preveni coruperea datelor n cazul n care dou sau mai multe dispozitive master iniiaz simultan un
transfer de date.

13

Este o magistral serial, orientat pe 8 bii, cu transfer bidirecional, ce poate fi fcut cu viteze de pn
la 100 kbit / s n modul Standard, de pn la 400 kbit / s n modul Fast, sau pn la 3.4 Mbit / s n
modul de mare vitez.
Filtrarea on-chip respinge spike-urile de pe linia de date pentru a pstra integritatea datelor de pe
magistral.
Numrul de circuite integrate care pot fi conectate la aceeai magistral este limitat doar de o
capacitate maxim de magistral de 400 pF. Dedesupt, se prezint exemple de aplicaii I2C.

14

1.1 Beneficii ale designerului


Circuitele integrate compatibile I2C permit unui sistem s progreseze rapid, direct de la o diagram
bloc funcional la un prototip. Mai mult dect att, din moment ce se conecteaz direct pe magistrala
I2C, fr nici o interfa extern suplimentar, acestea permit unui sistem -prototip s fie modificat sau
modernizat, pur i simplu prin adugarea sau scoaterea unor circuite integrate pe, i de pe magistral.
Unele dintre caracteristicile circuitelor integrate compatibile I2C, care sunt deosebit de atractive pentru
designeri, sunt:
Blocuri funcionale de pe schema bloc corespunztoare pot s fie chiar circuite integrate reale;
modelele trec rapid de la diagram bloc schematic, la final.
Nu este nevoie de proiectarea altor interfee de date, deoarece interfaa I2C este deja integrat onchip.
Abordarea integrat i protocolul de transfer de date permit sistemelor s fie complet definite
software.
Aceleai tipuri de circuite integrate pot fi de multe ori folosite n multe aplicaii diferite.
Timp de design redus deoarece designeri devin rapid familiari cu blocuri funcionale utilizate
frecvent, reprezentate de circuite integrate compatibile I2C .
Circuite integrate pot fi adugate sau eliminate de la un sistem fr a afecta orice alte circuite pe
magistral.
Diagnosticarea defectelor i depanarea sunt simple; defeciunile pot fi urmrite imediat.

15

Timpul de dezvoltare software poate fi redus prin crearea unei biblioteci de module software
reutilizabile.
n afar de aceste avantaje, circuitele integrate CMOS din gama circuitelor compatibile I2C ofer
designerilor caracteristici speciale, care sunt deosebit de atractive pentru echipamente portabile i
sisteme cu baterie. Ele au toate: consum de curent extrem de sczut, imunitate ridicat la zgomot ,gam
larg de tensiune de alimentare, gam de temperatur de funcionare larg.
1.2 Beneficii productor
Circuitele integrate compatibile I2C nu ajut numai designerii. Acestea dau, de asemenea, o gam
larg de beneficii pentru productorii de echipamente, deoarece:
Este o interfa simpl, cu doar 2 fire, serial, ce minimizeaz interconexiunile, astfel circuitele
integrate au mai puini pini i se reduc cablajele de pe PCB; rezultatul : PCB-uri mai mici i mai puin
costisitoare .
Complet integrat, protocolul I2C elimin necesitatea pentru decodoare de adres i alte probleme de
"logic de lipire.
Capacitatea de multi-master a interfeei I2C permite testarea rapid i folosirea echipamentelor de
utilizatorul final prin intermediul unei conexiuni externe la o linie de asamblare.
Disponibilitatea circuitelor integrate compatibile I2C n SO (contur mic), VSO (contur foarte mic),
precum i pachete DIL, reduce cerinele de spaiu chiar mai mult.
Acestea sunt doar cteva dintre beneficii. n plus, circuitele integrate compatibile I2C mresc
flexibilitatea de proiectare a sistemelor, permind variante simple de construcie a echipamentelor i
modernizarea uoar a acestora pentru a menine design-ul updatat. n acest fel, o ntreag familie de
echipamente poate fi dezvoltat n jurul unui model de baza. Upgrade-uri de echipamente noi, sau
modele viitoare mbuntite (de exemplu, memorie extins, control de la distan, etc) pot fi produse
prin simpla dezactivre a circuitelor corespunztoare de pe magistral. n cazul n care este nevoie de
un ROM mai mare, este pur i simplu o chestiune de selectare a unui microcontroller cu un ROM mai
mare dintr-o anumit gam. Cum noi circuite integrate le pot nlocui pe cele vechi, este uor de a
adaug noi caracteristici pentru echipamente sau pentru a crete performanele sale prin scoaterea
circuiteler integrate vechi de pe magistral i nlocuirea acestora cu succesoarele lor.

1.3 Introducere n conceptul de interfa I2C


Pentru aplicaiile orientate pe domeniul controlului digital pe 8 bii, cum ar fi cele care necesit
microcontrolere, pot fi stabilite anumite criterii de proiectare:
Un sistem complet const, de obicei, din cel puin un microcontroler, i alte dispozitive periferice,
cum ar fi memorii i I/ O expandere .
Costul de conectare a diferitelor dispozitive din cadrul sistemului trebuie s fie reduse la minimum.
Un sistem care ndeplinete o funcie de control nu necesit transfer de date de mare vitez.
Eficienta global depinde de dispozitivele alese i de natura structurii de interconectare pe
magistral.
16

Pentru a produce un sistem care s satisfac aceste criterii, este nevoie de o structura de magistral
serial. Dei magistralele seriale nu au capacitatea de transfer a magistralelor paralele, ele au nevoie de
mai puine cabluri i mai puini pini de conectare a circuitelor integrate. Cu toate acestea, o magistral
nu este doar un fir de interconectare, ea ntruchipeaz toate formatele i procedurile de comunicare n
cadrul sistemului. Dispozitivele care comunic unul cu altul pe magistrala de serie trebuie s aib un
anumit protocol care s evite toate posibilitile de confuzie, pierderea de date i blocajul de informaii.
Dispozitivele rapide trebuie s fie capabile s comunice cu dispozitivele lente. Sistemul nu trebuie s
depind de dispozitivele conectate la acesta, altfel modificri sau mbuntiri ar fi imposibile. De
asemenea, trebuie conceput o precedur pentru a decide care dispozitiv va fi n controlul magistralei
de date i cnd. i, n cazul n care diferite dispozitive cu diferite viteze de ceas sunt conectate la
magistral, sursa de ceas de magistral trebuie s fie definit.Toate aceste criterii sunt implicate n
specificaiile magistralei I2C
1.4. De ce am ales comunicarea I2C pentru aceast lucrare?
Pentru lucrarea de fa aveam nevoie de o magistral simpl, o magistral care s mi reduc numrul
de interconexiuni de pe plac, astfel ca aceasta s fie ct mai mica posibil.
Cum nu am avut nevoie de o magistral foarte rapid, am ales pentru proiect o magistral serial,
bidirecional. Poate avantajul decisiv care m-a facut sa aleg aceast magistral a fost uurina cu care
voi putea s upgradez proiectul n viitor, uurin data de posibilitatea de a elimina sau aduga elemente
n circuit, posibilitate ce alte magistrale mi-o ngreunau.

17

18

Capitolul 2. Conceptul de magistral I2C.


Magistrala I2C sprijin orice proces de fabricaie de circuite integrate (NMOS, CMOS, bipolar).Dou
fire,unul de date (SDA) i unul de ceas (SCL), transport informaii ntre dispozitivele conectate la
magistral. Fiecare dispozitiv este recunoscut printr-o adres unic (dac este un microcontroller, driver
LCD, memorie sau o tastatur) i poate funciona fie ca un emitor fie ca receptor, n funcie de funcia
dispozitivului. Evident, un driver LCD este doar un receptor, n timp ce o memorie poate att primi, ct
i transmite date. n plus fa de emitoare i receptoare, dispozitivele pot fi, de asemenea, considerate
c fiind master sau sclavi atunci cnd efectueaz transferuri de date (a se vedea tabelul 1). Un master
este dispozitivul care iniiaz un transfer de date pe magistral i genereaz semnalele de ceas pentru a
permite acest transfer. La acel moment, orice dispozitiv adresat este considerat un sclav.
Tabel 1. Descrierea termenilor folosii n protocolul I2C.
Termen
Transmitor
Receptor
Master
Sclav
Multi-master
Arbitrare

Sincronizare

Descriere
Dispozitivul care trimite date pe magistral.
Dispozitivul care primete date de pe magistral.
Dispozitivul care initiaz un transfer, genereaz semnalale de ceas si
ncheie un transfer.
Dispozitivul adresat unui master.
Mai mult de un master poate ncerca s preia controlul asupra
magistralei n acelai timp, far s corupa mesajul.
Procedura care asigur ca, n cazul n care mai mult de un master
ncearc simultan s controleze magistrala. i atribuie unuia singur acest
control, trimiterea datelor nefiind astfel corupt.
Procedura de sincronizare a semnalelor de ceas a mai multor dispositive
conectate la magistral.

Magistrala I2C este o magistral muli-master, aceasta nseamnnd c mai mult de un dispozitiv capabil
s controleze magistrala de date poate fi conectat la acesta. Ca mastere sunt, de obicei,
microcontrollerele; s lum n considerare cazul unui transfer de date ntre dou microcontrolere
conectate la magistrala I2C (a se vedea figura 2.1). Acest lucru scoate n eviden relaiile master-sclav
i receptor-emitor de pe magistrala I2C. Trebuie remarcat faptul c aceste relaii nu sunt permanente,
ci depind numai de direcia de transfer de date la acel moment.

19

Transferul de date va proceda dup cum urmeaz:


1) S presupunem c un microcontroler A vrea s trimit informaii la microcontroller-ul B:
microcontroller-ul A (master), se adreseaz microcontrolerului B (sclav)
microcontroller-ul A (master-transmitor), trimite date la microcontroller-ul B (slave-receptor)
microcontroller-ul A ncheie transferal
2) n cazul n care un microcontroler A dorete s primeasc informaii de la microcontroler B:
microcontroler-ul A (master) se adreseaz microcontrolerului B (sclav)
microcontroller-ul A (master-receptor) primete date de la microcontroller-ul B (slave-emitor)
microcontroller-ul A termin transferul
Chiar i n acest caz, comandantul (microcontroler A) genereaz semnalul de ceas i termin transferul.
Posibilitatea de a conecta mai mult de un microcontroler pentru magistrala I2C nseamn c mai mult
de un master ar putea ncerca s iniieze un transfer de date n acelai timp. Pentru a evita haosul care ar
putea rezult de la un astfel de eveniment, s-a dezvoltat o procedura de arbitraj. Aceast procedura se
bazeaz pe conexiunea I a tuturor interfetelor I2C la magistrala I2C. n cazul n care dou sau mai
multe dispozitive de master ncerca s pun informaii pe magistral, primul care produce un "1" (stare
HIGH), atunci cnd cealalt produce un "0" (stare LOW) va pierde arbitrajul. Semnalele de ceas n
timpul arbitrajului sunt o combinaie sincronizat a ceasurilor generate de dispozitivele de master
folosind conexiunea I la linia SCL.
Generarea de semnale de ceas pe magistral este ntotdeauna responsabilitatea dispozitivelor de master;
fiecare master genereaz propriile semnale de ceas, atunci cnd transfer date pe magistrala. Semnalul
de ceas de magistrala de la un master poate fi modificat numai atunci cnd este utilizat de un dispozitiv
sclav lent, care ine n jos linia de ceas, sau de un alt master, atunci cnd are loc arbitrajul.
2.1 Caracteristici generale.
Att SDA ct i SCL sunt linii bidirecionale, conectate la o tensiune pozitiv de alimentare prin
intermediul unui curent-surs sau rezistor de pull-up (vezi fig.2.2). Cnd magistrala este liber, ambele
20

linii sunt ridicate (n starea de HIGH). Etapele de ieire ale dispozitivelor conectate la magistrala
trebuie s aib o drena comun sau un colector comun pentru a efectua funcia I.Datele de pe
magistrala I2C pot fi transferate la rate de pn la 100 kbit / s n modul Standard, de pn la 400 kbit / s
n modul Fast, sau pn la 3,4 Mbit / s n modul de mare vitez. Numrul de interfee conectate la
magistral depinde numai de limita de capacitate a magistralei de 400 pF.

2.2 Transferul unui bit


Datorit diversitii dispozitivelor realizate n diferite metode tehnologice (CMOS, NMOS, bipolare),
care pot fi conectate la magistrala I2C, nivelurile de 0 logic (LOW) i 1 logic (HIGH) nu sunt
fixe i depind de nivelul asociat de VDD. Un impuls de ceas este generat pentru fiecare bit de date
transferat.
2.3 Valabilitatea datelor
Datele de pe linia SDA trebuie s fie stabile n timpul perioadei HIGH a ceasului.Starea HIGH sau
LOW a liniei de date se poate schimba numai atunci cnd semnalul de ceas de pe linia SCL este LOW
(a se vedea figura 2.3).

21

2.4 Condiii de START i STOP.


n cadrul procedurii de pe magistrala I2C, apar situaii unice, care sunt definite ca condiii de START
(S) i STOP (P) (vezi Fig.2.4). O tranziie HIGH-LOW a liniei SDA n timp ce SCL este pe HIGH este
un astfel de caz unic. Aceast situaie indic o condiie de START. O tranzitie LOW-HIGH a liniei
SDA n timp ce SCL este HIGH, definete o condiie de STOP. Condiiile de START i de STOP sunt
ntotdeauna generate de ctre commandant (dispozitvul master). Magistrala este considerat a fi
ocupat dup condiia de START. Magistrala este considerat a fi liber din nou dup o anumit
perioada de timp dup condiia de STOP. Magistrala rmne ocupat n cazul n care o condiie de
START repetat (Sr) este generat n loc de o condiie STOP. n acest sens, condiiile START (S) i
START repetat (Sr) sunt funcional identice. n restul lucrrii, simbolul S va fi folosit c un termen
generic pentru a reprezenta att condiia de START ct i condiiile de START repetat, cu excepia
cazului n care Sr este deosebit de relevant. Detectare condiiilor de start i stop de ctre dispozitivele
conectate la magistral este uor dac sunt dotate cu interfatata hardware necesar. Cu toate acestea,
microcontrollerele care nu au o astfel de interfa trebuie s verifice linia SDA, cel puin de dou
ori ntr-o perioada de ceas pentru a sesiza tranziia.

2.5. Transferul datelor


22

2.5.1 Formatul byte-ului


Fiecare octet pus pe linia SDA trebuie s fie de lungime 8-bii. Numrul de octeti care pot fi transmii
pentru fiecare transfer poate fi orict de mare. Fiecare octet trebuie s fie urmat de o confirmare de bit.
Datele sunt transferate ncepnd cu cel mai semnificativ bit (MSB) (vezi Fig.2.5). n cazul n care un
dispozitiv-sclav nu poate primi sau transmite un alt octet complet de date pn cnd nu a efectuat o alt
funcie, de exemplu, deservirea o ntrerupere intern, acesta poate ine linia de ceas SCL n stare
LOW pentru a for dispozitivul master ntr-o stare de ateptare.Transfer de date continu atunci cnd
dispozitivul sclav este gata pentru un alt octet de date i elibereaz linia de ceas SCL. n unele cazuri,
este permis s se utilizeze un format diferit de formatul I2C (pentru dispozitive compatibile CBUS, de
exemplu). Un mesaj care ncepe cu o astfel de adresa poate fi terminat prin generarea unei condiii
STOP, chiar i n timpul transmisiei unui octet. n acest caz, nicio confirmare nu este generat.

2.5.2 Acknowledge
Transferul de date este obligatoriu s se fac cu confirmare. Pulsul de ceas asociat acknowledge-ului
este generat de ctre dispozitivul master. Transmitorul elibereaz linia SDA (HIGH) n timpul
pulsului de ceas acknowledge. Receptorul trebuie s trag n jos linia SDA n timpul pulsului de ceas
de confirmare, astfel nct acesta rmne LOW constant n timpul perioadei de HIGH al acestui impuls
de ceas (vezi Fig.2.6). Desigur, set-up-ul i timpii de ateptare, trebuie s fie, de asemenea, luate n
considerare.
De obicei, un receptor care a fost abordat este obligat s genereze acknowledge dup fiecare octet
primit, cu excepia cazului n care mesajul ncepe cu o adresa CBUS.
Atunci cnd un dispozitiv sclav nu recunoate adresa slave (de exemplu, este n imposibilitatea de a
primi sau de a transmite, deoarece realizeaz funcii n timp real), linia de date trebuie s fie lsat
HIGH de ctre dispozitivul sclav. Master-ul poate genera apoi fie o condiie STOP pentru a anula
transferul, fie o condiie START repetat pentru a ncepe un nou transfer.
23

n cazul n care un receptor-sclav nu recunoate adresa de sclav, dar, ceva timp mai trziu, nu mai poate
primi mai muli octeti de date, master-ul trebuie s abandoneze din nou transferul. Acest lucru este
indicat de ctre dispozitivul-sclav prin negenerarea semnalului de acknowledge nainte de primul byte
ce urmeaz. Slave-ul las linia de date pe HIGH iar dispozitivul master genereaz o condiie de
STOP sau una de START repetat.
n cazul n care un master-receptor este implicat ntr-un transfer, acesta trebuie s semnaleze sfritul
transferului la transmitorul-slave care nu genereaz acknowledge pe ultimul octet care a fost
cronometrat de sclav. Emitorul-sclav trebuie s elibereze linia de date, pentru a permite dispozitivului
master s genereze o condiie de STOP sau o condiie de START repetat.

2.6 Arbitrarea i generarea clock-ului.


2.6.1 Sincronizarea semnalelor de clock
Toate dispozitivele master genereaz propriul lor semnal de ceas pe linia SCL pentru a transfera
mesaje pe magistrala I2C. Datele sunt valabile doar n timpul perioadei HIGH a semnalului de ceas.
Prin urmare, este nevoie de un ceas definit pentru c procedura de arbitraj bit-cu-bit s aib loc.
Sincronizarea ceasului se face folosind conexiunea prin cablu de tip I (AND) a interfeei I2C la linia
SCL. Acest lucru nseamn c o tranziie HIGH-LOW pe linia SCL va determina dispozitivele n cauza
s nceap numrarea pe perioada de LOW i, odat ce semnalul de ceas al unui dispozitiv a trecut
LOW, se va ine linia SCL n aceast stare pn cnd se atinge starea HIGH pe semnalulu de ceas (vezi
Fig.2.7). Cu toate acestea, o tranziie LOW la HIGH a acestul semnal de ceas nu poate schimb starea
liniei SCL n cazul n care un alt ceas este nc n perioada de LOW. Prin urmare, linia SCL va fi
24

inut n LOW de dispozitivul cu cea mai lung perioada LOW. Dispozitivele cu perioade mai scurte
de LOW introduc o ateptare de n starea HIGH n acest timp.

Atunci cnd toate dispozitivele n cauza s-au numrat pe perioada lor de LOW, linia de ceas va fi
eliberat i dus n starea HIGH. Nu va fi atunci nici o diferena ntre ceasurile dispozitivelor i starea
liniei SCL i toate dispozitivele vor ncepe numrarea perioadele lor de HIGH. Primul dispozitiv care
finalizeaz perioada de HIGH va trage din nou linia SCL n LOW. n acest fel, un ceas sincronizat este
generat pe linia CL cu perioada s de LOW determinat de dispozitivul cu cea mai lung perioada
LOW , iar perioada s de HIGH determinat de cel cu periada de HIGH cea mai scurt.
2.6.2 Arbitrarea
Un dispozitiv master poate ncepe un transfer numai n cazul n care magistrala este liber.Dou sau
mai multe dispositive master pot genera o condiie de START n timpul minim ateptare al condiiei
START, care conduce la o generare de condiie de START pe magistrala. Arbitrajul are loc pe linia
SDA, n timp ce linia SCL este n strarea HIGH, n aa fel nct master ul care transmite un nivel
ridicat, n timp ce un alt master transmite un nivel sczut va opri stadiul de ieire date, deoarece nivelul
de pe magistral nu corespunde cu nivelul sau.
Arbitrajul poate continua pentru mai multe bii. Prima etap este compararea biilor de adres. n cazul
n care dispozitivele master ncearc fiecare s se adreseze aceluiai dispozitiv, arbitrajul continu cu
compararea biilor de date, dac acestea sunt master-transmitor, sau bi de acknowledge, dac
acestea sunt master-receptor. Deoarece adresa i datele de informaii cu privire la magistrala I2C este
determinat de ctre master-ul care ctig arbitrajul, nici o informaie nu se pierde n timpul procesului
de arbitraj.
25

Un master care pierde arbitrajul poate genera impulsuri de ceas pn la sfritul octetului n care se
pierde arbitrajul.
n cazul n care un master include, de asemenea, o funcie de sclav i pierde arbitrajul n timpul etapei
de adresare, este posibil c masterul castigatoar s ncerce s-l abordeze. Prin urmare,dispozitivul
master care pierde, trebuie s comute imediat n modul de sclav. Figura 2.8 prezint procedura de
arbitraj de la doi masteri. Desigur, mai multe dispositive pot fi implicate (n funcie de ct de multe
dispositive de master sunt conectate la magistral). n momentul n care exist o diferena ntre nivelul
de date intern al masterului generarand DATA 1 i nivelul real de pe linia SDA, transferul de date este
oprit, ceea ce nseamn c un nivel ridicat de ieire este apoi conectat la magistral. Acest lucru nu va
afecta transferul de date iniiat de ctre masterul ctigator.

Deoarece controlul magistralei I2C este decis exclusiv pe adresa sau codul de master i datele sunt
transmise de dispositive master concurente, nu exist nici un master central, nici vreo ordine de
prioritate pe magistral.
O atenie special trebuie acordat n cazul n care, n timpul unui transfer serial, procedura de arbitraj
este nc n curs de desfurare n momentul n care o condiie de START repetat sau o condiie de
STOP este transmisa pe magistrala. Dac este posibil ca o astfel de situaie s apar, dispozitivele
master implicate trebuie s trimit aceast condiie de START repetat sau condiia de STOP n aceeai
poziie n cadrul format. Cu alte cuvinte,arbitrarea nu este permisa ntre:
O condiie de START repetat i un bit de date
O condiie de STOP i un bit de date
O condiie de START repetat i o condiie de STOP.
Dispozitivele slave nu sunt implicate n procedura de arbitraj.

26

2.7. Formatul cu adrese pe 7 bii.


Transferurile de date respect formatul prezentat n Fig.2.9. Dup conditia de START (S), o adres de
tip sclav este trimisa. Aceast adres este de 7 bii urmat de un bit al optulea, care este un bit de
direcie de date (R / W) - un "zero" indic o transmisie (WRITE), un "unu" indic o cerere de date
(READ). Un transfer de date este ntotdeauna terminat cu o condiie de STOP (P) generata de ctre
master. Cu toate acestea, n cazul n care un dispozitiv master dorete nc s comunice pe magistrala,
se poate genera o condiie de START repetat (Sr) i s abordeze un alt sclav, fr a genera n primul
rnd o condiie STOP. Diverse combinaii de formate de citire / scriere sunt posibile ntr-un astfel de
transfer.

Formatele posibile de transfer de date sunt:


Master-emitorul transmite la slave-receptor.Direcia de transfer nu este modificat (vezi Fig.2.10).
Master-ul citete slave, imediat dup primul octet (vezi fig.2.11). La momentul primii acknowledgeului, master-emitorul devine un master-receptor i slave-receptorul devine un slave-transmitor.
Acest prim acknowledge este nc generat de sclav. Condiia de STOP este generat de ctre master,
care a trimis anterior un not-acknowledge (A).
Format combinat (vezi fig.2.12). n timpul unei schimbri de direcie n cadrul unui transfer, condiia
de START i adresa slave-ului sunt repetate, dar cu bitul de R / W (read/write) inversat. Dac un
receptor master trimite o condiie de START repetat, aceast a trimis anterior un not-acknowledge (A).

27

28

2.8 Adresarea pe 7 bii.


Procedura de adresare pentru magistrala I2C este de aa natur nct primul octet dup condiia de
START determin, de obicei, care sclav va fi selectat de ctre dispozitivul master.Excepia este adresa
de "apel general", care poate adresa toate dispozitivele. Cnd se utilizeaz aceast adresa, toate
dispozitivele ar trebui, teoretic, s rspund cu un acknowledge. Cu toate acestea, dispozitivele pot fi
fcute pentru a ignora aceast adres. Al doilea octet al adresei de apel general definete apoi
msurile care trebuie luate.
2.9 Definirea biilor din primul octet
Primii apte bii ai primului octet constituie adresa slave-ului (vezi fig.2.13). Al optulea bit este LSB
(cel mai puin semnificativ bit). Aceast determina direcia mesajului. Un "zero" n cel mai puin
semnificativ bit din primul octet nseamn c master-ul va scrie informaii la un slave selectat. Un "1"
n aceast poziie nseamn c master-ul va citi informaiile de la slave.

Atunci cnd este trimis o adres, fiecare dispozitiv ntr-un sistem compar primii apte bii dup
condiia de START cu adresa lui. n cazul n care acestea se potrivesc, dispozitivul se consider adresat
de ctre master c un sclav-receptor sau sclav-transmitor, n funcie de bitul de R / W. O adresa de
sclav poate fi format dintr-o parte fix i o parte programabil. Deoarece este probabil s existe mai
multe dispozitive identice ntr-un sistem, partea programabil a adresei slave-ului da numrul maxim
posibil de astfel de dispositive ce pot fi conectate la magistral. Numrul de bii de adres programabil
ale unui dispozitiv depinde de numrul de pini disponibili. De exemplu, dac un dispozitiv are 4 bii de
adresa fixi i 3 bii de adres programabili, un total de opt dispozitive identice pot fi conectate la
aceeai magistral.
Comitetul de magistrala I2C coordoneaz alocarea de adrese I2C. Dou grupuri de opt adrese
(0000XXX i 1111XXX) sunt rezervate pentru scopurile indicate n tabelul 2. Combinaia de bii
11110XX a adresei slave-ului este rezervat pentru adresarea pe 10 bii.

29

Tabelul 2.
Adresa dispozitivului
SLAVE
0000 000
0000 000
0000 001
0000 010

Bit-ul de R/W
(read/write)
0
1
X
X

0000 011
0000 1XX

X
X

1111 1XX
1111 0XX

X
X

Descriere
Adres de apel general.
Byte-ul de START.
Adrese de CBUS.
Rezervat pentru diferite formate de
magistral.
Rezervat pentru dezvoltri viitoare.
Codul pentru master n modul Hs (highspeed).
Rezervata pentru desvoltri viitoare.
Adresare pe 10 biti a dispozitivelor slave.

Note:
1. Nici un dispozitiv nu trebuie s dea acknowledge la recepia unui byte de START.
2. Adresa CBUS a fost rezervat pentru a permite combinri de dispozitive compatibile CBUS i
dispositive compatibile I2C n acelai sistem. Dispozitivele compatibile I2C nu au voie s rspund la
recepia aceastei adrese.
3. Adresa rezervat pentru un alt format de magistral este inclus pentru a permite I2C i altor
protocoale s fie amestecate. Numai dispozitivele compatibile I2C care pot lucra cu astfel de formate i
protocoale pot rspunde la aceast adres.
2.10 Adresa de apel general.
Adresa de apel general este utilizat pentru a aborda fiecare dispozitiv conectat la magistrala I2C. Cu
toate acestea, n cazul n care un dispozitiv nu are nevoie de oricare din datele furnizate n cadrul
structurii de apel general, el poate ignor aceast adresa prin care neemiterea unei confirmri
(acknowledge). n cazul n care un dispozitiv are nevoie de date de la o adresa de apel general, va
confirm aceast adresa i se va comporte c un sclav-receptor. Al doilea i urmatoarii octeti vor fi
recunoscui de ctre fiecare sclav-receptor capabil de manipularea acestor date. Un sclav care nu poate
procesa unul din aceti bytes trebuie s o ignore printr-un notacknowledge. Scopul adresei de apel
general este ntotdeauna specificat n al doilea octet (vezi fig.2.14).

30

Exist dou cazuri care se iau n considerare:


n cazul n care cel mai puin semnificativ bit B este un "0".
Cnd cel mai puin semnificativ bit B este un "1".
Cnd bitul B este un "0"; al doilea octet are urmtoarea definiie:
00000110 (H'06 "). Reset i scrierea prii programabile din adresa sclav prin hardware. La primirea
aceastei secvene de 2 bytes, toate dispozitivele concepute s rspund la adresa de apel general, se vor
reset i s ia n partea programabil adresa lor.Trebuie luate ns precauii pentru a se asigura c un
dispozitiv nu trage n jos SDA sau linia CL dup aplicarea tensiunii de alimentare, deoarece aceste
niveluri sczute ar bloca magistrala.
00000100 (H'04 "). Scrie partea programabil din adresa de sclav prin hardware. Toate dispozitivele
care definesc partea programabil a adresei lor de hardware-ul (i care rspund la adresa de apel
general), vor ncuia aceast parte programabil de la primirea acestei secvene de 2 octeti. Dispozitivul
nu se va reset.
00000000 (H'00 "). Acest cod nu este permis a fi folosit c al doilea octet.
Secvene de proceduri de programare sunt publicate n fiele de date corespunztoare dispozitivelor.
Codurile rmase nu au fost stabilite i dispozitivele trebuie s le ignore.
Cnd B este un bit "1"; secven de 2 byte este un "apel general hardware". Acest lucru nseamn c
secven este transmis printr-un dispozitiv de master hardware, cum ar fi un scaner tastatur, care nu
poate fi programat s transmit o adres sclav dorit. Din moment ce un master hardware nu tie n
avans crui dispozitiv i este adresat mesajul, se poate genera doar aceast apelare hardware general i
propria adres - identificarea n sine a sistemului (vezi fig.2.15).

31

Cei apte bii rmai n al doilea octet conin adresa master-ului hardware. Aceast adres este
recunoscut de ctre un dispozitiv inteligent (de exemplu, un microcontroler), conectat la magistral
care va conduce apoi informaiile de la master-ul hardware. n cazul n care dispozitivul master
hardware poate aciona, de asemenea, ca un sclav, adresa de sclav este identic cu adresa de master.
n unele sisteme, o alternativ ar putea fi faptul c master-ul transmitor hardware este setat n modul
de sclav receptor dup resetarea sistemului. n acest fel, un system master configurarabil poate spune
master-ului hardware (care este acum n modul slave-receptor), crei adresa trebuie trimise datele (vezi
fig.2.16). Dup aceast procedura de programare, master-ul hardware rmne n modul mastertransmitor.

2.11 Byte de START.


Microcontrolerele pot fi conectate la magistrala I2C n dou moduri. Un microcontroler cu o interfa
hardware I2C on-chip poate fi programat pentru a fi ntrerupt doar de cereri de pe magistral. n cazul
n care un dispozitiv nu are o astfel de interfa, aceasta trebuie s monitorizeze n mod constant
magistrala prin software. n mod evident, cu ct microcontrolerul monitorizeaz mai mult (mai
frecvent, cu o frecvena mai mare) magistrala, ,cu att mai puin timp se aloc ndeplinirii funciilor
sale destinate. Prin urmare, exist o diferena de vitez ntre dispozitivele hardware rapide i un
microcontroler relativ lent, care se bazeaz pe software. n acest caz, transferul de date poate fi

32

precedat de o procedura de pornire care este mai lung dect prodedura normal (vezi fig.2.17).
Procedura de pornire este format din:
O condiie de START (S)
Un byte START (00000001)
Un puls de ceas de acknowledge (ACK)
O condiie de START repetat (Sr).

Dup ce condiia de START (S) a fost transmis de un master care necesit acces la magistral, octetul
de START (00000001) este transmis. Prin urmare, un alt microcontroler poate folosi linia SDA la o
rat de eantionare sczut pn cnd unul dintre cele apte zerouri dinn octetul de START este
detectat. Dup detectarea acestui nivel LOW pe linia SDA, microcontrolerul poate trece la o rat de
eantionare mai mare pentru a gsi condiia de START repetat (Sr), care este apoi utilizat pentru
sincronizare.
Un receptor hardware se va reset la primirea condiiei de START repetat (Sr) i, prin urmare, va
ignor octetul de START. Un impuls de ceas acknowledge este generat dup octetul de START. Acest
lucru este prezent doar pentru a se conforma cu formatul de manipulare al octetului folosit pe
magistral. Nici unui dispozitiv nu poate s recunoasc octetul de START.

2.12.Extensii ale modului standard pe magistrala I2C.


Specificaiile modului Standard pentru magistrala I2C, cu rat de transfer de date de pn la 100 kbit/s
i adresare pe 7 bii, au existat de la nceputul anilor 1980. Acest concept a crescut rapid n popularitate
i este acceptat n prezent n ntreag lume c un standard de facto cu cteva sute de circuite integrate
compatibil.
Pentru a satisface cererile pentru viteze mai mari, precum i pentru a pune la dispoziie mai multe
adrese sclav pentru numrul tot mai mare de dispozitive noi, modul Standard a fost modernizat de-a
lungul anilor, iar astzi este disponibil cu urmtoarele extensii:
Fast-mode , cu o rat de transfer de bii de pn la 400 kbit/s.
Modul de mare vitez (Hs-mode), cu o rat de transfer de bii de pn la 3,4 Mbit/s.
adresarea pe 10 bii, ceea ce permite utilizarea a pn la 1024 de adrese de sclavi.
Exist dou motive principale pentru extinderea specificaiilor magistralei I2C regulate:
33

Multe dintre aplicaii de astzi au nevoie de a transfer serial cantiti mari de date i necesit rate de
bii mai mari de 100 kbit/s (Standard-mode), sau chiar 400 kbit/s (Fast-mode). C urmare a
mbuntirii continue n domeniul tehnologiilor semiconductoare, dispozitivele I2C sunt disponibile
acum cu rate de bii de pn la 3,4 Mbit / s (Hs-mode) fr creteri notabile n costul de fabricaie al
circuitului de interfa.
Pentru caa cele mai multe dintre cele 112 adresele disponibile cu sistemul de adresare pe 7 bii au fost
alocate n curnd, a devenit evident c mai multe combinaii de adrese au fost necesare pentru a preveni
probleme cu alocarea de adrese de sclavi pentru dispozitive noi. Aceast problema a fost rezolvat cu
noul sistem de adresare pe 10 bii, ceea ce a permis o cretere de aproximativ zece ori a numrului de
adrese disponibile.
Noi dispozitive slave, cu o interfa I2C Fast-mode sau Hs-mode pot avea o adresa de sclav de 7 sau
de 10-bit. Dac este posibil, o adresa de 7 bii este de preferat, deoarece aceast este cea mai ieftin
soluie hardware i astfel rezult cea mai scurt lungime a mesajului. Dispozitivele cu adrese de 7 i
de 10 bii pot fi amestecate n acelai sistem I2C, indiferent dac acesta este un system Fast-mode sau
un sistem Hs-mode.Att dispozitivele master existente ct i cele viitoare pot genera fie adrese de 7 ,
fie de 10 bii.
2.12.1 FAST-MODE
n Fast-mode, protocolul, formatul, nivelurile logice i sarcina maxim capacitiv pentru liniile SDA i
SCL menionate n specificaiile I2C n modul Standard sunt neschimbate. Noi dispozitive cu o
interfa I2C trebuie s ndeplineasc cel puin cerinele minime de Fast mode sau Hs-mode.
Dispozitive Fast-mode pot primi i transmite date cu viteze de pn la 400 kbit / s. Cerin minim este
c acestea se pot sincroniza cu un transfer de 400 kbit/s; ele pot prelungi apoi perioada LOW a
semnalului SCL pentru a ncetini transferul. Dispozitive Fast-mode sunt compatibile cu transferurile i
pot comunica cu dispozitivele de mod standard ntr-un sistem I2C cu viteze de 0 pn la 100 kbit / s. Ca
dispozitive de mod Standard, ele nu ar trebui totui s fie incluse ntr-un sistem I2C de mod Fast,
deoarece acestea nu pot urmri rata de transfer mai mare i stri imprevizibile ar avea loc.
Fast-mode are urmtoarele caracteristici suplimentare n comparaie cu modul Standard:
Rata maxim de transfer de bii este crescut la 400 kbit/s.
Sincronizarea ntre linia de date serial (SDA) i linia de ceas serial (SCL a fost adaptat. Nu este
nevoie de compatibilitate cu alte sisteme, cum ar fi magistrale CBUS deoarece acestea nu pot funciona
la creterea ratei de bii.
Intrrile dispozitivelor Fast-mode ncorporeaz suprimarea spike-rilor i un trigger Schmitt la
intrrile SDA i SCL.
Buffer-ele ieirilor dispozitivelor Fast-mode ncorporeaz controlul pantei marginilor semnalelor de
pe SDA i SCL.
n cazul n care alimentarea cu energie a unui dispozitiv Fast-mode este oprit, pinii de intrare
ieire ai liniilor SDA i SCL trebuie s fie independeni, astfel nct acestea s nu obstrucioneze liniile
de magistrala.
Dispozitivele de pull-up conectate la liniile de magistrala trebuie s fie adaptate pentru a se potrivi
celui mai scurt timp de cretere maxim permisibil admis pentru Fast-mode. Pentru sarcini de pn la
34

200 pF, dispozitivul de pull-up pentru fiecare linie de magistrala poate fi un rezistor; pentru sarcini de
magistrala ntre 200 i 400 pF pF, dispozitivul de pull-up poate fi o surs de curent (3 m max.) sau un
rezistor cu comutarea circuitelor (vezi Fig.2.18).

2.12.2 Hs-MODE (mod de high-speed).


Dispozitive de modul de mare vitez (Hs-mode), ofer un salt cuantic n viteze de transfer I2C.
Dispozitivele de mod Hs pot transfer informaii cu rate de transfer de bii de pn la 3,4 Mbit / s, dar
ele rmn pe deplin compatibil n jos cu dispozitive de mod Fast sau Standard pentru comunicare bidirectionala ntr-un system mixt de vitez. Cu excepia faptului c arbitrajul i ceasul de sincronizare nu
sunt efectuate n timpul transferului n modul Hs, acelai protocol de magistrala serial i formatul
datelor este meninut i cu sistemul Standard sau Fast. n funcie de aplicaie, noi dispozitive pot avea
o interfa I2C rapid sau pentru modul Hs, dei dispozitivele de mod HS sunt preferate, deoarece
acestea pot fi proiectate ntr-un numr mai mare de aplicaii.
2.13 Transfer de mare vitez
Pentru a realiza un transfer cu viteze de pn la 3,4 Mbit/s, urmtoarele mbuntiri au fost fcute la
specificaiile I2C regulare:
dispozitive de master de mod Hs au un tampon de ieire drena-comun pentru semnalul SDAH i o
combinaie de o drena-comun pull-down i curent-surs pull-up de circuit pe ieirea SCLH . Acest
circuit de curent-surs scurteaz timpul de cretere a semnalului SCLH. Numai curentul- surs al unui
master este activat la un moment dat, i numai n timpul n care este pe modul Hs.
Nici un arbitraj sau ceas de sincronizare nu se realizeaz n timpul transferului de vitez mare n
modul Hs n sisteme muli-master, care accelereaz capaciti de manipulare de bii. Procedura de
arbitraj se termin ntotdeauna dup o transmisie precedent de cod de ctre master n modul Fast sau
Standard.
Dispozitive de master n modul HS pot genera un semnal de ceas de serie cu un raport ridicat de LOW
de la 1 la 2. Aceast amelioreaz condiiile de sincronizare pentru set-up i timpii de hold.
35

C o opiune, dispozitive de master de mod Hs poate avea o punte. n timpul transferului H, datele de
mare vitez (SDAH) i de ceas serial de mare vitez (SCLH) liniile de dispositive de mod Hs sunt
separate de acest pod (punte) de liniile SDA i CL ale dispozitiveloe de mod Fast sau Standard.
Acest lucru reduce sarcina capacitiv a liniilor SDAH i SCLH rezultnd timpi de cretere i de cdere.
Singur diferena dintre dispozitivele slave n modul HS i dispozitivele slave n modurile Fast i
Standard este vitez cu care acestea opereaz. Sclavii n modul Hs au tampoane de ieire drena
comun pe rezultatele SCLH i SDAH. Opional, tranzistori de pull-down de pe pnul SCLH pot fi
folosii pentru a ntinde nivelul sczut al semnalului SCLH, dei acest lucru este permis numai dup
bitul de acknowledge n transferurilor de mare virteza.
Intrrile de dispositive de mod Hs ncorporeaz suprimarea spike-urilor i un trigger Schmitt la
intrrile SDAH i SCLH.
Buffer-ele de ieire de dispozitive n modul Hs ncorporeaz controlul pantei de marginile n care se
ncadreaz semnalele SDAH i SCLH.
Figura 2.19 arat configuraia fizic I2C ntr-un sistem doar cu dispositive de mod Hs. Pinii de SDA i
SCL pe dispozitivele de master sunt utilizai numai n sistemele de transport cu magistrale mixte de
vitez i nu sunt conectate ntr-un sistem numai de mod Hs. n astfel de cazuri, aceste pini pot fi
utilizai pentru alte funcii.
Opionale sunt rezistentele de serie Rs cu scopul de a proteja etapele de intrare-ieire ale
dispozitivelor I2C de spike-urile de nalta tensiune pe liniile de magistrala i a minimiza interferenele.
Rezistentele de pull-up RP menin liniile SDAH i SCLH la un nivel ridicat n cazul n care
magistrala este liber i asigura c semnalele s fie trase de la un nivel LOW la un nivel ridicat n
timpul de cretere cerut. Pentru sarcini de magistrala capacitive mai mari (> 100 pF), rezistorii Rp
pot fi nlocuii cu surse de current de pull-up pentru a satisface cerinele de timp de cretere. Cu
excepia cazului n care este procedat de un bit de acknowledge, timpul de cretere al impulsurilor de
ceas SCLH din transferuri de mod HS este scurtat de circuitul de surs de curent de pull-up intern.

36

2.14 Formatul transferului de date serial n modul HS (high-speed).


Format de transfer de date serial n modul Hs ndeplinete specificaiile modului Standard. Modul HS
poate ncepe numai dup ce se ndeplinesc urmtoarele condiii (toate care sunt i n modul Fast sau
Standard):
1.
Condiie de START (S)
2.
Cod master pe 8 bii (00001XXX)
3.
Bit de not-acqnowledge (A)
n figurile 2.20 i 2.21 se arat mai detaliat formatul amintit mai sus. Acest cod de master are dou
funcii principale:
Permite arbitraj i sincronizarea ntre masterele concurente la viteze de mod Fast / Standard, care
rezult ntr-un singur master ctigtor.
Se indic nceputul unui transfer n modul Hs.
Coduri de master de mod Hs sunt coduri rezervate de 8 bii, care nu sunt utilizate pentru adresarea
sclavilor sau n alte scopuri. Mai mult dect att, dup cum fiecare master are propriul cod de master
unic, pn la opt mastere de mod Hs pot fi prezente ntr-un sistem de I2C (dei codul 0000 1000 ar
trebui s fie rezervat pentru testare i scopuri de diagnosticare). Codul master pentru un dispozitiv
master de mod Hs este un software programabil i este ales de ctre designer-ul de sistem.
Arbitrajul i sincronizarea pot avea loc numai n timpul transmisiei codului master i a biilor de notacqnowledge (A), dup care a maestrul ctigtor rmne activ. Codul master indic altor dispozitive
37

c un transfer de high-speed trebuie s nceap i dispozitivele conectate trebuie s respecte


specificaiile modului de Hs. Cum nici unui dispozitiv nu i este permis s recunoasc codul master,
codul de master este urmat de un bit de not-acqnowledge (A).
Dup bitul de not-acknowledge (A), iar linia SCLH a fost tras la un nivel ridicat, masterful activ
comut pe modul Hs i permite (la momentul Th, vezi Fig.25), circuitul surs de current de pull- up
pentru semnalul SCLH. Cum i alte dispozitive pot ntrzia transferul serial nainte de tH prin
ntinderea perioadei de LOW a semnalului SCLH, masterul activ va activ circuitul surs de curent de
pull-up atunci cnd toate dispozitivele au eliberat linia de SCLH i semnalul SCLH a atins un nivel
ridicat , astfel accelernd ultima parte a timpul de cretere a semnalului SCLH.

Masterul activ trimite apoi o condiie de START repetat (Sr), urmat de o adresa de sclav de 7 bii (sau
de 10 bii), cu un bit de R/W (read/write), i primete un bit de acqnowledge (A) de la sclavul selectat.
Dup o condiie de START repetat i dup fiecare bit de acqnowledge (A) sau bit de not-acqnowledge
(A), masterul activ dezactiveaz circuitul surs de current de pull-up. Acest lucru permite altor
dispozitive s ntrzie transferul serial prin ntinderea perioadei de LOW a semnalului SCLH.
38

Maestrul activ reactiveaz circuitul surs de curent de pull-up curent din nou, atunci cnd toate
dispozitivele au eliberat linia i semnalul SCLH ajunge la un nivel ridicat, iar astfel accelereaz ultima
parte a timpul de cretere a semnalului SCLH.
Transferul de date n continu n modul Hs dup urmtoarea condiie de START repetat (Sr), i comut
napoi la modul Fast/Standard dup o condiie STOP (P). Pentru a reduce aeriene de cod master, este
posibil c un maestru s lege o serie de transferuri de mod Hs, separate prin condiiile de START
repetat (SR).
2.15 Trecerea de la modul Fast/Standard la modul HS i invers.
Dup resetare i initializare, dispozitivele de mod Hs trebuie s fie n modul Fast. Fiecare dispozitiv de
mod Hs poate comut de la modul Fast la modul Hs i invers i este controlat de transferul serial de pe
magistrala I2C.
nainte de momentul de timp t1 din Fig.2.21, fiecare dispozitiv conectat funcioneaz n modul Fast.
ntre momentele t1 i th (acest interval de timp poate fi ntins prin orice dispozitiv), fiecare dispozitiv
conectat trebuie s recunoasc secven "S 00001XXX O" i trebuie s comute circuitul sau intern de
la setarea de mod Fast la setarea de mod Hs. ntre momentele t1 i th dispozitivele master i slave
conectate efectueaz aceast comutare prin urmtoarele aciuni. Masterul activ (ctigtor):
1. Adapteaz SDAH i filtrele de intrare SCLH n funcie de cerin de suprimare a spike-ului n modul
Hs.
2. Adapteaz set-upul i timpii de ateptare n conformitate cu cerinele modului Hs.
3. Adapteaz controlul pantei din etapele de ieire a SDAH i SCLH n conformitate cu cerinele
modului Hs.
4. Trece la rat de bit a modului Hs, care este necesar dup momentul de timp tH.
5. Activeaz circuitul surs de current de pull-up a liniei SCLH la momentul de timp th.
Masterii non-activi, sau pierztori:
1. Adaptarea liniei SDAH i filtrele de intrare ale SCLH n funcie de cerin de suprimare a spikeurilor n modul Hs.
2. Ateapt o condiie de STOP pentru a detecta cnd maistrala este din nou liber.
Toi sclavii:
1. i adapteaz linia SDAH i filtrele de intrare SCLH n funcie de cerin suprimrii spike-urilor n
modul Hs.
2. Adaptarea set-upului i a timpilor de ateptare n conformitate cu cerinele modului Hs. Aceast
cerin poate fi deja ndeplinit prin adaptarea filtrelor de intrare.
3. Adaptarea controlul pantei de ieire a liniei SDAH, dac este necesar. Pentru dispozitivele slave,
controlul pantei este aplicabil numai pentru etap de ieire SDAH i, n funcie de toleranele de
circuit, att cerinele modului Fast ct i cerinele modului HS pot fi ndeplinite fr comutare de circuit
intern.
La momentul de timp tFS n Fig.2.21, fiecare dispozitiv conectat trebuie s recunoasc condiia de
STOP (P) i comut circuitul intern de la setarea de mod Hs napoi la setarea de mod Fast nainte de
momentul de timp t1. Acest lucru trebuie s fie finalizat n timpul minim n care magistrala este liber
aa cum este specificat n tabelul 3 n conformitate cu specificaiile Fast-mode.
39

2.16 Dispozitive de mod High-speed la modurile de vitez mai mici.


Dispozitivele de mod Hs sunt pe deplin compatibile cu modurile mai lente, i pot fi conectate la un
system I2C de mod Fast/Standard(vezi Fig.2.22). Cum nici un cod de master nu va fi transmis ntr-o
astfel de configuraie, toate dispozitivele de master de mod Hs rmn n modurile Fast/Standard i
comunica la viteze de mod Fast/Standard cu surs de curent dezactivat. Pinii SDAH i SCLH sunt
utilizai pentru a se conecta la sistemul de mod Fast/Standard, astfel permindu-le liniilor SDA i SCL
(dac exist) de pe dispozitivul master de mod Hs s fie utilizate pentru alte funcii.

2.17 Moduri de vitez mixt pe un sistem de magistrala serial


Dac un sistem are o combinaie de dispozitive HS, Fast i/sau dispozitive de mod Standard, este
posibil, folosind o interconectare a acestora, s se obin rate diferite de bii ntre diferite dispozitive
(vezi fig 2.23 i 2.24).
Legtur este necesar pentru a conecta / deconecta o seciune de mod Hs la/de la o seciune de mod
Fast/Standard la momentul potrivit. Aceast legtur include o funcie de schimbare de nivel care
permite dispozitivelor cu diferite tensiuni de alimentare s fie conectate. De exemplu, dispozitivele de
mod Fast sau Standard, cu un VDD2 de 5 V pot fi conectate la dispozitive de mod Hs, cu un VDD1 de
3 V sau mai puin (de exemplu, n cazul n care VDD2= VDD1), linia SDA furnizat i pinii SCL
tolerand 5 V .Aceast legtur este ncorporat n dispozitivele de master de mod Hs i este complet
controlat de o serie de semnale SDAH, SCLH, SDA i SCL. O astfel de punte poate fi implementat
n orice circuit integrat, orice circuit autonom.
TR1, TR2 i TR3 sunt tranzistori cu canal N. TR1 i TR2 au o funcie de poart de transfer, i TR3 este
o etap de drenaj. Dac TR1 sau TR2 sunt pornite, ele transfer un nivel sczut n ambele direcii, altfel
atunci cnd att drena ct i surs sunt la un nivel nalt (HIGH), va exist o impedanta mare ntre drena
i surs pentru fiecare tranzistor pornit. n acest ultim caz, tranzistorii vor aciona c un schimbtor
nivel, atunci cnd SDAH i SCLH sunt inute n HIGH de VDD1 i SDA i SCL sunt trase n
HIGH de VDD2

40

n timpul modurilor Fast/Standard, o legtur a masterilor din modurile de high-speed conecteaz


liniile SDAH i SCLH de la linia SDA corespunztoare i liniile SCL care permit c astfel de
dispositive de mod Hs s comunice cu dispozitivele de mod Fast/Standard la viteze mai mici. Arbitrajul
i de sincronizarea sunt posibile n timpul transferului Fast sau Standard ntre toate dispozitivele
conectate. n timpul transferului de mod Hs, totui, legtura se deschide pentru a separ cele dou
seciuni de magistrala i permite dispozitivelor de mod Hs pentru a comunica ntre ele la viteze de 3,4
Mbit/s. Arbitrajul ntre dispositive de mod Hs i dispositive de mod Fast/Standard se efectueaz numai
n timpul codul de master (00001XXX), i e ctigat n mod normal de un master de mod Hs deoarece
nici o adresa de sclav nu are patru zerouri.Alte dispositive master pot ctig arbitrajul numai n cazul
n care trimite un cod rezervat de 8 bii (00000XXX). n astfel de cazuri, legtura rmne nchis i
transferul continu n modul Fast/Standard. Tabelul 3 prezint posibile viteze de comunicare ntr-un
astfel de sistem.

Tabel 3. Ratele de bit ale comunicrilor n sisteme cu viteze mixte.


Transfer ntre Configuraia magistralei seriale
HS + Fast +
Standard

HS + Fast

HS + Standard

Fast + Standard

HS <-> HS
HS <-> Fast

0-3.4 Mbit/s
0-100 kbit/s

0-3.4 Mbit/s
0-400 kbit/s

0-3.4 Mbit/s
-

HS <->
Standard
Fast <->
Standard

0-100 kbit/s

0-100 kbit/s

0-100 kbit/s

0-100 kbit/s

41

Fast <->Fast

0-100 kbit/s

0-400 kbit/s

0-100 kbit/s

Standard <->
Standard

0-100 kbit/s

0-100 kbit/s

0-100 kbit/s

2.18 Modul de transfer fast sau standard ntr-un sistem cu viteze mixte.
Legtur artat n figura 2.23 interconecteaz liniile de magistrala seriale corespunztoare, formnd
un sistem de magistrala serial. Cum nici un cod master (00001XXX) nu se transmite, circuitele surs
de current de pull-up stau nchise i toate ieirile sunt deschise n drena. Toate dispozitivele, inclusiv
dispozitivele de mod Hs, comunica unul cu cellalt conform protocolului, formatului i vitezei din
specificaiile de mod Fast sau Standard.
2.19 Transferul de mare vitez ntr-un sistem cu viteze mixte.
Figura 2.24 prezint diagram de sincronizare a unui transfer complet de mod Hs, care este invocat de
ctre o condiie START, un cod master, i un bit de not-acqnowledge A (la viteze de mod fast sau
standard). Dei diagram de timp este mprit n dou pri, ar trebui s fie privit c o singur
diagram de timp, unde momentul de timp tH este un punct comun pentru ambele pri.
Codul master este recunoscut de ctre legtur n masterul activ sau non-activ (vezi Fig.2.23). Legtur
efectueaz urmtoarele aciuni:
42

1 ntre t1 i th (vezi Fig.2.24), tranzistorul TR1 se deschide pentru a separ liniile SDAH i SDA, dup
care tranzistorul TR3 se nchide pentru a trage n jos pe linia SDA la VSS.
3.
Atunci cnd ambele SCLH i SCL deven HIGH (tH n Fig.2.24), tranzistorul TR2 se deschide
pentru a separ liniile SCLH i SCL. TR2 trebuie s fie deschis nainte c SCLH s fie tras n LOW
dup condiia de START repetat (Sr).
Transferul Hs ncepe dup tH cu o condiie de START repetat (Sr). n timpul transferului Hs, linia SCL
rmne la un nivel ridicat, iar linia SDA la un nivel de starea de echilibru LOW, i astfel este pregtit
pentru transfer de o condiie STOP (P)
Dup fiecare bit de confirmare (A) sau de not-acqnowledge (A) masterul activ dezactiveaz circuitul
surs de curent de pull-up. Acest lucru permite altor dispozitive s ntrzie transferul serial prin
ntinderea perioadei de LOW a semnalului SCLH. Masteul activ re-activeaz circuitul surs de current
de pull-up din nou, atunci cnd toate dispozitivele sunt eliberate i semnalul SCLH ajunge la un nivel
ridicat, iar astfel accelereaz ultima parte a timpul de cretere a semnalului SCLH. n situaii
neregulate, dispozitivele de mod Fast/Standard pot nchide legtur (TR1 i TR2 nchis, TR3 deschis),
n orice moment, trgnd n jos linia SCL pentru cel puin 1 ms, de exemplu, pentru a recupera de la o
blocare a magistralei (ntrziere a acesteia).
Modul HS nainteaz o condiie de STOP i aduce sistemul napoi n modul Fast / Standard. Legtur
recunoate, de asemenea, aceast condiie STOP i ia urmtoarele msuri:
1 Transistor TR2 se nchide dup tFS pentru a conecta SCLH cu SCL; ambele fiind HIGH n acest
moment. Tranzistorul TR3 se deschide dup tFS, care elibereaz linia SDA i permite s fie tras n
HIGH de rezistorul RP de pull-up. Aceast este condiia de STOP pentru dispozitivele Fast / Standard.
TR3 trebuie s se deschid suficient de rapid pentru a asigura timpul liber pe magistrala ntre condiia
de STOP i cea mai veche condiie de START urmtoare, n conformitate cu specificatiilei modului
Fast.
2. n cazul n care SDA ajunge la un nivel ridicat (t2 n Fig.2.24), tranzistorul TR1 se nchide pentru a
conecta SDAH cu SDA. (Not: interconexiunile sunt realizate atunci cnd toate liniile sunt high,
prevenind astfel tulburri pe liniile de magistrala). TR1 i TR2 trebuie s fie nchise n timpul liber
minim de pe magistral n conformitate cu specificaiile modului Fast .
2.20 Cerine de timp pentru legtur dintr-un system cu viteze mixte.
Se poate observ din Fig.2.24 c aciunile legturii de la t1,tH i tFS trebuie s fie att de rapide nct
s nu afecteze liniile SDAH i SCLH. n plus, podul (legtur) trebuie s ndeplineasc cerinele de
sincronizare aferente din specificaiile modului Fast pentru SDA i linii SCL.
2.21.Conexiuni electrice ale dispozitivelor I2C legate la magistral.
Specificaiile electrice pentru intrrile i ieirile dispozitivelor I2C i caracteristicile liniilor de
magistrala la care sunt legate aceste dispositive vor fi duscutate n acest subcapitol.
Dispozitivele I2C cu nivele de intrare fixe de 1.5-3 voli pot avea alimentare de tensiune
independent.Rezistorii de pull-up trebuie conectai la o alimentare de 5V cu o toleran de 10% (figura
2.25). Dispozitivele I2C cu nivele de intrare legate la Vdd trebuie s aib o linie de alimentare comun
la care se leag de asemenea, rezistorii de pull-up. (figura 2.26).
Cnd dispozitivele cu nivele de intrare fixe sunt amestecate cu dispoztive cu nivele de intrare
commune, legate la Vdd, dispozitivele rezultate trebuie legate la o alimentare comun de 5 V +/-10% i
43

trebuie s aib rezistori de pull-up conectai la pinii lor de SDA i SCL, aa cum evideniaz figura
2.27.
Nivelele de intrare sunt definite astfel nct nivelul de zgomot a nivelului de LOW s fie 0.2*Vdd iar
nivelul zgomotului al nivelului de HIGH s fie 0.2*Vdd.

44

2.22 .PCA9555
2.22.1. Descriere generala
PCA9555 este un dispozitiv CMOS cu 24 de pini care ofer 16 bii de expansiune de uz general de
intrare sau ieire paralela (GPIO) pentru aplicaii I2C i a fost dezvoltat de firma NXP
Semiconductors. mbunatirile includ toleran de 5V I/O, curent de alimentare mai mic, pini de I/O
configurabili individual i dimendiuni mai mici. I/O expanderele reprezint o soluie simpl atunci
cnd sunt necesari pini de intrare/ieire adiionali pentru switch-uri, senzori, butoane, LEDuri,
ventilatoare, etc.
PCA9555 are doua configuraii de cate 8 bii (selecie intrare/iesire). Master-ul sistemului poate activa
pinii de I/O ca i intrri sau ca i ieiri prin scrierea biilor de configurare.Datele de intrare sau ieire
sunt pstrate n regitrii de intrare sau ieire corespunztori.Polaritatea registrului de citire poate fi
schimbat cu registrul de schimbare de polaritate.Toti regitrii pot fi citii de master-ul sistemului.
Ieirea PCA9555 este activat atunci cand orice stare de intrare variaz de la starea registrului de
intrare corespunzator portului i este folosit s indice master-ului sistemului c starea de intrare s-a
schimbat.Reset-ul de alimentare (reset-ul activat atunci cand tensiunea de alimentare este prezent)
seteaz regitrii la valorile lor predefinite i iniializeaz starea dispozitivului.
3 pini hardware (A0,A1 si A2) variaz adresa I2C a dispozitivului i astfel 8 dispozitive pot mparti
aceeasi magistral I2C.
2.22.2 Specificaii.
Tensiune de alimentare de operare: 2.3-5.5 V.
Registru de polaritate inversa.
ntrerupere activ la LOW pe iesire.
Curent de standby mic.
Filtru de zgomot pe intrarile SDA i SCL.
45

Reset intern la alimentare.


16 pini de I/O care definesc 16 intrari.
Frecvena de 0-400 KHz.

2.22.3 Schema bloc.

Configuraia pinilor este prezentat n figura 2.29, iar adresa dispozitivului este prezentat n figura
2.30.

Regitrii de intrare sunt ilustrai n figura 2.31.

46

n acest proiect PCA9555 s-a folosit pentru a lega tastatura cu 12 butoane pe magistrala
sistemului.Aceasta s-a legat folosind pinii adiionali oferii de expansiunea pinilor de uz
general.(vezi figura 2.32)

2.23 PCA9553
2.23.1 Descriere general.
LED Blinker-ul PCA9553 aprinde intermittent leduri n aplicaii I2C atunci cnd este necesar s se
limiteze traficul de pe magistral sau s se elibereze master-ul I2C (microprocesorul). Unicitatea
acestui dispozitiv const n oscilatorul sau intern cu dou rate de clipire programabile. Pentru a aprinde
47

intermitent nite leduri cu legate la un I/O expander, master-ul de pe magistrala trebuie s transmit
repetat comenzi de aprindere respective stingere a ladului. Aceste comenzi ngreuneaz traficul de pe
magistrala (l aglomereaz) i folosete un timer al master-ului. PCA9553 necesit doar comand
iniial prin care se seteaz cele dou rate de clipire (frecvena i perioada de clipire). Din aces
moment, este necesar doar o comand de la master-ul de pe magistrala pentru a aprinde sau stinge
individual ledurile. Astfel orice pini de uz general folosii pentru a aprinde intermittent acele leduri vor
fi folosii pentru alte funcii.
Reset-ul de alimentare initializeaza registrii la starea lor predefinit (toi 0), astfel toate ledurile vor fi
stinse.
De asemenea, pinii folosii pentru a aprinde intermittent ledurile sunt pini de uz general, deci ei pot fi
folosii i pentru alte funcii, dar nu este o variant foarte eficient deoarece sunt doar 4 pini, mult mai
puini dect ofer un I/O expander.
2.23.2 Specificaii.

4 pini pentru aprinderea intermitent a ledurilor cu o rat programabil.

2 rate de clipire selectabile, programabile (frecvena i perioada) cu frecvente ntre 0.172 Hz i


44 Hz (5.82 secunde i 0.023 secunde).

Pinii nefolosii pentru leduri pot fi folosii c GPIO (pini de uz general).

Oscilatorul intern nu necesit component externe.

Reset de alimentare intern.

Filter de zgomot la intrare.

Current de standby mic.

Tensiune de alimentare de 2.3 5.5 V.

Frecvena de ceas de 0-400 KHz.


2.23.3 Schema bloc a PCA9553 a fost ilustrat n figura 2.33.

48

Configuraia pinilor este prezentata n figura 2.34, iar adresa dispozitivului este prezentata n figura
2.35.

49

Aplicaia n care s-a folosit PCA9553 n aces proiect const n legarea unor leduri la acest
dispozitiv.Acest lucru s-a vrut pentru a elibera magistrala I2C de transiterea comenzilor de
aprindere i stingere repetate. Configuraia aplicaiei este ilustrat n figura 2.36.

50

Capitolul 3.Partea hardware


Schema de principiu folosit este ilustrat n figura de mai jos (figura 3.1).

Procesorul folosit (master-ul I2C) este un procesor K10DX256 de la Freescale, un procesor relativ nou
i performant. Acesta are o frecven de ceas de 72 MHz (megahertz), memorie flash programabil de
256 KB (kilobytes) i o memorie SRAM de 64 KB (kilobytes). Este un procesor pe 32 de bii, ce
51

ncorporeaza o arhitectur ARM versiunea a 7-a. Am ales acest procesor deoarece este foarte fiabil, are
performane bune, ce asigura posibilitatea dezvoltrii viitoare a sistemului.
Legarea procesorului n sistem este detaliat n figura 3.2.

n stnga-jos a imaginii este reprezentat un oscilator, ce d o frecven exact de 32,768 KHz


(kilohertz), frecven necesara dac se dorete utilizarea unei alte surse de semnal de ceas dect
procesorul. De asemenea toi pinii nefolositi au fost rutai la 2 conectori (J4 i J5) pentru dezvoltri
ulterioare.
Procesorul necesit o tensiune de 3.3 voli, tensiune obinut printr-un LDO, un regulator de tensiune
ce coboar tensiunea de 5 voli la o tensiune de 3.3 V necesar procesorului. Legarea acestuia este
ilustrat n figura 3.3.

52

Montajul este alimentat la 12 voli sau prin USB la 5 voli. Circuitul LM7805 este un regulator, un
stabilizator de tensiune ce coboar tensiunea de la 12 voli ct este pe intrare, la 5 voli, ct este nevoie
pe liniile SDA si SCL. Stabilizatorul scoate acea tensiune de 5 voli. Urmeaza un filtru LC ce
stabilizeaz semnalul i l cura, iar cele 2 PCA-uri (I/O expander-ul si aprinztorul intermitent de
leduri) sunt legate la liniile SDA si SCL folosind rezistori de pull-up de 10 kiloohmi, aa cum este
recomandat n foile de catalog ale acestora.
La I/O expander (PCA9555) s-a legat tastatura de 4x3 butoane, iar la PCA9553 s-au legat 4 leduri,
folosindu-se pentru protecia lor rezistene de 2 kiloohmi.
Tot la 5 voli se alimenteaz i circuitul 74HC74, un circuit de tip flip-flop, un bistabil n esena, ce
numr la ieirea lui tranziiile din 1 n 0 i din 0 n 1 care s-au produs. Astfel totat partea de circuit
legat la integratul 74HC74 const ntr-un counter.
Descrierea detaliat a legrii tastaturii la PCA9555 i legarea ledurilor la PCA9553 sunt descrise n
figurile 3.4 i 3.5.

53

Alimentarea, aa cum am precizat i mai sus, se poate face att printr-o alimentare de 12 voli, ct i
prin USB, la 5 voli. Alimentarea prin USB ofera un potenial de +5 voli i un curent maxim de 500
mA (miliamperi).
Comunicarea ntre plac i calculator se face serial, aa c este nevoie de un convertor USB-serial,
conversie asigurat n cazul meu de FT232R. Comunicarea este descris n figura 3.6.

54

Sub-amnsamblul D4 este un circuit pentru protecia dispozitivului conectat (n cazul meu, plcua) la
fluctuaii ale tensiunii i curentului date de calculator sau de cablu.
Pentru dezvoltri ulterioare, pe placu s-a pus i o referin de tensiune de 2.5 voli (figura 3.7).

Placua ce conine toate aceste elemente a fost realizat n 2 straturi i este ilustrat n figura 3.8.

55

Ansamblul ce va reprezenta sistestemul de comand-control al acceleratorului Tandem este reprezentat


n figura 3.9. Acesta simuleaz acceleratorul printr-un sistem format din: un transformator 230V-5V, o
surs n comutaie, un oscilator, un generator de referin i plcua programabil ce asigur
comunicaia ntre dispozitivele periferice (tastatur, display, leduri) i semnalele ce vin de la simulator.
Comunicarea se face prin interfaa I2C.

56

Componentele simulatorului acceleratorului sunt ilustrate n figura 3.10.

57

58

Capitolul 4. Partea software


Codul surs a fost scris n limbajul #C i a fost dezvoltat n programul Freescale CodeWarrior 10.6,
obinut gratis de pe site-ul productorului.
Structural, programul conine funciile de START (condiie de start I2C), funcie de STOP (condiie de
stop I2C) i funcii de scriere si de citire a biilor.

Codul compilat este uploadat pe microcontroller prin portul JTAG cu ajutorul unui programator, o
interfa de cumunicare, debug i programare USB Multilink Universal de la firma PE Micro care
permite calculatorului s comunice cu procesorul printr-un port USB. Modul de conectare este ilustrat
n figura 46.
Incrcarea programului pe processor se face doar cnd se face conexiunea placuei cu programator prin
JTAG, programatorul este conectat la calculator prin USB, iar placua este alimentat.

59

4.1 Structura programului.


Definerea strilor este absolut necesar pentru simplificarea programului. Astfel, s-au definit strile de
HIGH i LOW ale liniilor SDA i SCL precum i un indicator al liniilor SDA i SCL.
#define SCL_LOW() do{GPIOB_PDDR |=0x20; GPIOB_PCOR = 0x20;}while(0);
#define SCL_HIGH() do{GPIOB_PDDR &= ~0x20;} while(0);
#define SDA_LOW() do{GPIOB_PDDR |=0x10; GPIOB_PCOR = 0x10;}while(0);
#define SDA_HIGH() do{GPIOB_PDDR &= ~0x10;}while(0);
#define SDA ((GPIOB_PDIR & 0x10)>>4);
#define SCL ((GPIOB_PDIR & 0x20) >>5);
Din foaia de catalog a procesorului se vede c liniile SDA i SCL sunt legate la PTB-uri, deci portul B.
Registrul GPOIx_PDDR (port data direction register) seteaza porturi individuale ca intrare sau ieire.
Linia SCL este legata la portul 35 al microcontrollerului, adic PTB0. Din foaia de catalog a
procesorului se observa ca PTB0 reprezinta bitul 5 al registrelor. Astfel, SCL se definete ca LOW
astfel: se definete portul corespunzator ca ieire (output) si se scrie n acesta valoarea dorita. In
registrul PDDR s-a fcut bitul 5 1 iar restul 0. Deci registrul va avea valoarea 20. n registrul
PCOR (port clear output register) se scrie coninutul cu bitul corespunzator, adic valoarea din
registrul PDDR, deci 0x20. Asta nseamn c n registrul PCOR se va scrie valoarea 0, nsemnnd ca
linia SCL este inut n starea LOW.
Pentru a defini starea HIGH a liniei SCL, n registrul PDDR se scrie scrie orice alt valoare dect cea
scrisa pentru starea LOW, astfel portul nu va fi configurat ca ieire, deci nu se va putea scrie in el, deci
el va ramne n starea predefinit (starea HIGH).

60

Pentru linia SDA se repet procedeul de la linia SCL, singura diferena fiind faptul ca PTB1
(corespunzator liniei SDA la processor) este corespunztor bitului 4 din regitrii. Astfel, pentru ca n
registrul PDDR s se configureze o ieire, se face bitul 4 1 iar toi ceilali 0, rezultnd valoarea
0x10. Pentru a define valoarea de LOW, n registrul PCOR se scrie valoarea 0 iar pentru a se define
starea de HIGH, registrul se configureaz ca orice n afar de ieire, acesta lund valoarea predefinit,
adic HIGH.
De asemenea, se definesc 2 indicatori de stare ce au rolul de a citi starea liniilor SDA i SCL. Acetia se
definesc prin citirea biilor corespunztori liniilor SDA i SCL (4 respectiv 5). Citirea se face prin
registrul PDIR (port data input register), prin operaia logic I a valorii registrului + valoarea 0x10
pentru SDA i 0x20 pentru SCL. Pentru a se citi doar valoarea bitului corespunztor liniei (4 respectiv
5), se face shiftarea (deplasarea) cu 4 respectiv 5 bii spre stnga.
4.2 Funcia de delay (ntarziere)
//Delay function
void Delay_us(uint16 delay){
uint32 i,wait;
wait = 16 * delay; //ceasul rureaz la 72Mhz ; 72 = 4 * 16 => 1 us delay
i = 0;
while(i<wait){
i++;
}
}
Funcia de delay are ca parametru un ntreg ce va da mrimea (durata) ntrzierii. Practic, funcia este
parcurs pn cnd variabila I va devein egal cu variabila wait, adic 16*delay (mrimea ntarzierii).
4.3 Funcia de iniializarre a magistralei.
/****************************************************************************
; Funcie de iniializare IICbus
*********************************************************/
void local_iic_init(void){
SDA_HIGH(); // SDA-high
SCL_HIGH(); // SCL-high
}
Iniializarea sistemului const n tragerea liniilor SDA i SCL n starea HIGH.
4.4 Funcia de trimitere a unui byte (octet).
/********************************************************
; Master-ul IICbus trimite un byte
2 - error
1 - nack
0 - ok
*********************************************************/
uint8 iic_send_byte(uint8 byte){
uint8 temp,counter;
temp = byte;
counter = 8;
while(counter != 0){
if((temp & 0x80)!=0){
61

SDA_HIGH();
} else {
SDA_LOW();
}
Delay_us(15);
SCL_HIGH();
temp = (temp << 1);
counter--;
Delay_us(15);
if(waitSCLrise())return 2;
SCL_LOW();
}
// ACK
SDA_HIGH();
Delay_us(15);
SCL_HIGH();
Delay_us(15);
if(waitSCLrise())return 2;
temp = 0;
if(SDA!=0) temp = 1; // Not acknoledge
SCL_LOW();
Delay_us(45);
return temp;
}
Funcia de tremitere a unui byte are ca parametru chiar byte-ul ce trebuie trimis. Acesta se stocheaz
ntr-o variabil temp. Se parcurge apoi byte-ul pe bii ( prin bucla while care decrementeaz variabila
counter, iniializat cu 8 la fiecare pas). Se determin apoi valoarea MSB-ului (most significant bit)
prin operaia I ntre byte-ul stocat n temp i 0x80 (1000 0000). Daca rezultatul operaiei este 1
atunci SDA este trecut n HIGH. Altfel, SDA se trece n LOW. Procedeul se repet pentru toi biii
byte-ului, prin shiftarea byte-ului la fiecare pas spre dreapta.
In finalul buclei while se verific dac linia SCL s-a ridicat (a trecut n starea HIGH). Dac trec mai
mult de 3ms (milisecunde) pana SCL trece n HIGH, atunci se ntoarce un mesaj de eroare.
La finalul transmiterii byte-ului se verific prezena bitului de acqnowledge. Daca acesta exist, atunci
se intoarce mesajul OK.
Paii funciei de trimitere a unui byte sunt:
1) In temp se memoreaz byte-ul ce urmeaz a fi trimis;
2) Se creaz o bucl while cu un numar de 8 pai (numarul de bii dintr-un byte);
2.1) Se testeaz bitul 7 (MSB-ul);
2.2) Dac bitul este 1, atunci linia SDA trece n HIGH, altfel n LOW;
2.3) La fiecare pas temp se shifteaz la dreapta cu 1, iar counter (iniial=8) se
decrementeaz;
3) Se verific prezena bitului de acqnowlodge.
Organigrama funciei este prezentat n figura de mai jos.

62

Funcia waitSCLrise folosit n corpul funciei de trimitere a unui byte are strucura:
/******************************************************************************
; maste-ul IICbus ateapt linia scl sa se ridice
0 - scl high
1 - error : scl nu s-a ridcat (nu a trecut n starea HIGH) n 3 ms
***************************************************************************/
uint8 waitSCLrise(void){
uint16 counter;
counter = 0;
while(SCL!=1){
counter++;
if(counter<18){//mai puin de 3ms au trecut
Delay_us(counter*20);
}else return 1;//error
}
return 0;
}
63

Ct timp linia SCL este n starea LOW (=0), o variabila iniializat cu 0 se incrementeaz. Pentru a
trece 3 ms (milisecunde) este necesar o ntarziere de maxim (17 * 20 pai de ceas).
Dac trec mai mult de 3 ms, atunci se ntoarce un mesaj de eroare.
4.5 Funcia de primire a unui byte.
/******************************************************************************
; master-ul IIC primete un byte
2 - error
1 - nack
0 - ok
*********************************************************/
uint8 iic_receive_byte(uint8 *byte,uint8 ack){
uint8 temp,counter;
counter = 8;
temp=0;
while(counter != 0){
temp = (temp << 1);
SCL_HIGH();
Delay_us(15);
if(waitSCLrise())return 2;
if(SDA==1) temp++;
SCL_LOW();
Delay_us(15);
counter--;
}
*byte = temp;
if(ack){
// ACK
SDA_LOW();
} else SDA_HIGH();
SCL_HIGH();
Delay_us(15);
if(waitSCLrise())return 2;
SCL_LOW();
SDA_HIGH();
Delay_us(45);
return 0;
}
Funcia de recepie a unui byte are ca parametrii adresa unde este stocat byte-ul primit i o variabil
ack care indic prezenta bitului de acqnowlwdge dupa primirea byte-ului.
Se intr ntr-o bucl while ce tine 8 pai (numarul de bii dintr-un byte). In aceast bucl, la fiecare pas
liniei SCL ii se aplic o tranziie din HIGH n LOW, i tot la fiecare pas se verific starea liniei SDA.
Dac linia SDA este n HIGH atunci byte-ul temp (iniializat cu 0) se incrementeaz. Deci, biii de 1
din byte-ul primit vor corespunde unor bii de 1 n byte-ul temp. Aadar byte-ul primit va fi stocat n
temp, cei 2 fiind identici.

64

La final se verific prezena bitului de acqnowledge. Dac acesta nu apare n mai puin de 3 ms
(milisecunde) atunci se ntoarce un mesaj de eroare.
Paii funciei de primire a unu byte sunt:
1) Se iniializeaza o variabil counter cu 8 i o variabil temp cu 0;
2) Se intr ntr-o bucl while de 8 pai;
2.1) La fiecare pas se verific starea liniei SDA.
2.2) Dac linia SDA este 1 atunci n temp se va scrie valoarea 1, altfel 0. Astfel se construiete
temp;
2.3) La fiecare pas se decrementeaz counter i se shifteaz temp spre dreapta cu 1;
3) Se verific prezena bitului de acqnowledge.
Organigrama funciei este prezentat n figura de mai jos.

4.6 Funcia de scriere.


/****************************************************************************
65

; funcia de scriere
*********************************************************/
uint8 local_iic_write(uint8 *buf, uint8 len){
uint8 nack;
uint8 i;
nack = 0;
Delay_us(15);
if(SDA==0 || SCL==0) local_iic_restart();
if(SDA==0 || SCL==0) return 2;
// magistrala este ocupat
// ************** start****************
SDA_LOW();
Delay_us(15);
SCL_LOW();
Delay_us(15);
// ------------ data ----------------for(i=0;i<len;i++){
nack = iic_send_byte(buf[i]);
if(nack) break;
}
// condiie de STOP
SDA_LOW();
Delay_us(15);
SCL_HIGH();
Delay_us(15);
SDA_HIGH();
return nack;
}
Funcia de scriere are ca parametrii adresa I2C la care se va scrie byte-ul si lungimea acestuia (daca
vrem s scriem 2 bytes atunci lumgimea va fi de 16). Inceputul funciei const ntr-o verificare dac
magistrala este liber sau nu. Dac aceasta nu este liber, se ncearc un restart de magistral, o
resetare a acesteia, prin funcia local_i2c_restart. Corpul aceste funcii este:
/****************************************************************************
Funcie de restart a magistralei IIC
*********************************************************/
void local_iic_restart(void){
uint8 c;
for(c=0;c<9;c++){
// condiie de STOP
SCL_LOW();
Delay_us(15);
SDA_LOW();
Delay_us(15);
SCL_HIGH();
Delay_us(15);
waitSCLrise();
66

SDA_HIGH();
Delay_us(15);
}
}
Funcia de restart a magistralei const n incercarea de forare a trecerii liniilor SDA i SCL din LOW
n HIGH.
Dac nici n urma ncercrii de restart, SDA i SCL sunt tot n starea 0, atunci se ntoarece un semnal
de eroare. In orice alt caz n afar de cel prezentat mai sus, atunci scrierea poate ncepe, deci se d o
condiie de START.
Pentru scrierea efectiv se scrie n nack valoarea byteului trimis din buf[i]. Dac nack ramne 0
atunci se iese din operaia de scriere. Funcia este finalizat cu o condiie de STOP.
Paii functiei de scriere sunt:
1) Verificarea magistralei (dac aceasta este liber sau ocupat);
2) Dac nu este ocupat, se d condiia de START;
3) Se transmite fiecare byte cu ajuorul funciei de trimitere a unui byte descris mai sus;
4) Dac s-a scris ceva, atunci se d o condiie de STOP;
Organigrama funciei de scriere este:

67

4.7 Funcia de citire.


/****************************************************************************
; funcia de citire
*********************************************************/
uint8 local_iic_read(uint8 *writebuf,uint16 writelen, uint8 *readbuf,uint16 readlen){
uint8 nack;
uint16 i;
nack=0;
if(SDA==0 || SCL==0) local_iic_restart();
if(SDA==0 || SCL==0) return 2;
// magistrala este ocupat
Delay_us(15);
//------------------------ start --------------------------SDA_LOW();
Delay_us(15);
SCL_LOW();
Delay_us(15);
//------------ scrie byte
for(i=0;i<writelen;i++){
nack = iic_send_byte(writebuf[i]);
if(nack) goto end_iic_read;
}
//------------------- condiie de restart
SDA_HIGH();
Delay_us(15);
SCL_HIGH();
Delay_us(15);
SDA_LOW();
Delay_us(15);
SCL_LOW();
Delay_us(15);
//-------retrimite adresa i2c
nack = iic_send_byte(writebuf[0]+1);
if(nack) goto end_iic_read;
Delay_us(15);
//-------------citire bytes
for(i=0;i<readlen;i++){
if(i == (readlen-1)){
nack =iic_receive_byte(&readbuf[i],0);
if(nack) goto end_iic_read;
}else{
nack =iic_receive_byte(&readbuf[i],1);
if(nack) goto end_iic_read;
}
}
end_iic_read:
68

// condiie de STOP
SDA_LOW();
Delay_us(15);
SCL_HIGH();
Delay_us(15);
SDA_HIGH();
return nack;
}
Funcia de citire are ca parametrii: adresa datei ce va fi scris n registrul ce urmeaz a fi citit, numarul
de bytes citii (lungimea datelor), adresa datei ce va fi citit i lungimea datei ce va fi citit.
Iniial se verifica dac magistrala este liber, adic SDA i SCL s nu fie 0. n cazul n care ambele
sunt 0, atunci se ncearc un restart de magistral i se verifica din nou starea acesteia. Dac
magistrala continua sa fie ocupat, se ntoarce un mesaj de eroare. Dac magistrala este liber atunci se
d condiia de START.
Dup condiia de START, n nack (iniializat cu 0) se scrie byte-ul. Se verific nack; dac acesta
ramne 0, atunci se ncheie pricesul de citire (nu s-a scris nimic, deci nu are ce s se citeasc).Dac n
nack s-a scris ceva, atuci datele din acesta trebuie citite. Pentru asta, este necesar o condiie de start
repetat (un restart).
Pentru nceperea procesului de citire, este necesar retrimiterea adresei I2C. Din nou se verific dac
adresa s-a trimis, iar n caz negativ, procesul se ntrerupe.
Din foaia de catalog se observ c PCA9555 are 2 regitrii port de intrare (input port register 0 i input
port register 1). Se intr ntr-o bucl for cu un numr de pai egal cu numrul de bytes (octei)
transmii. Se rein datele citite att din registrul de intrare 0, ct si din registrul de intrare 1. Dac
aceast operaiune s-a efectuat cu succes, adic n nack s-a scris ceva i astfel este diferit de 0,
atunci procesul de citire se ncheie , i se d o condiie de STOP.
Paii functiei de citire sunt:
1) Verificarea magistralei (dac aceasta este liber sau ocupat);
2) Dac nu este ocupat, se d condiia de START;
3) Se scrie byte-ul ce urmeaz a fi citit;
4) Se da o condiie de start repetat i se retrimite adresa I2C;
5) Se primete n ambii regitrii de intrare octeii ce au fost citii, cu ajutorul funciei de primire a
unui byte;
6) Dac n nack (unde au fost stocai octeii citii) este scris ceva, atunci se d condiia de STOP.
Organigrama funciei de citire este:

69

In particular, pentru citirea tastaturii, rezultatul aplicrii funciei de citire va fi unul de


genul: RSP: Ok
Data: FF FF. Acesta se traduce prin faptul ca toi cei 16 pini sunt 1,
adic nici o tast nu este apasat. Ins acest gen de afiare nu este cea mai bun, fiabil.
Dat fiind acest fapt, am construit o secven dedicate citirii corespunzatoare a tartaturii.
Scopul este de a afia pe ecranul calculatorului ce tast s-a apsat n timp real.
Secvena a fost scris n corpul funciei main a programului i arat astfel:
unsigned
unsigned
unsigned
unsigned

char olddata[2];
char readdata[2];
char writedata[2];
short counter=0;

void main(void)
{
sysinit();
writedata[0] = 0x40;
writedata[1] = 0;
olddata[0] = 0xFF;
olddata[1]=0xFF;
for(;;) {
RS232_CLI_Process();
if (counter>=1000) {
counter=0;
local_iic_read (writedata, 2,readdata , 2);
if (olddata[0]!= readdata[0]) {

70

if(((olddata[0] & 0x01)!=0)&& ((readdata[0]&


RS232TXStr ((unsigned char *)"\r\n Key=1");
}
if(((olddata[0] & 0x02)!=0)&& ((readdata[0]&
RS232TXStr ((unsigned char *)"\r\n Key=2");
}
if(((olddata[0] & 0x04)!=0)&& ((readdata[0]&
RS232TXStr ((unsigned char *)"\r\n Key=3");
}
if(((olddata[0] & 0x08)!=0)&& ((readdata[0]&
RS232TXStr ((unsigned char *)"\r\n Key=4");
}

0x01)==0)){
0x02)==0)){
0x04)==0)){
0x08)==0)){

if(((olddata[0] & 0x10)!=0)&& ((readdata[0]& 0x10)==0)){


RS232TXStr ((unsigned char *)"\r\n Key=5");
}
if(((olddata[0] & 0x20)!=0)&& ((readdata[0]& 0x20)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=6");
}
if(((olddata[0] & 0x40)!=0)&& ((readdata[0]& 0x40)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=7");
}

if(((olddata[0] & 0x80)!=0)&& ((readdata[0]& 0x80)==0)){


RS232TXStr ((unsigned char *)"\r\n Key=8");
}
olddata[0] = readdata[0];

if (olddata[1]!= readdata[1]) {
if(((olddata[1] & 0x01)!=0)&& ((readdata[1]& 0x01)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=9");
}
if(((olddata[1] & 0x02)!=0)&& ((readdata[1]& 0x02)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=0");
}
if(((olddata[1] & 0x04)!=0)&& ((readdata[1]& 0x04)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=*");
}
if(((olddata[1] & 0x08)!=0)&& ((readdata[1]& 0x08)==0)){
RS232TXStr ((unsigned char *)"\r\n Key=#");
}

olddata[1] = readdata[1];
}
}
counter++;

71

}
}

Pentru nceput, este nevoie de declararea a 4 variabile, olddata n care se va stoca


starea tastaturii nainte de a se face o modificare (a se apasa un buton), readdata n care
se va stoca noua stare a tastaturii i o variabil counter necesar pentru a introduce o
mica ntrziere ntre momentele de timp la care este apasat tastatura.
In olddata se va reine iniial valoara 0xFF (toi pinii=1, deci nici un buton al tastaturii
apsat). Se intr ntr-o bucla infinit. Funcia RS232_CLI_Process() controleaz interfa a CLI
(command line interface-interfaa prin care va comunica calculatorul cu placua) prin RS232
(serial). Se citete byte-ul transmis prin tastatur, dup care ncepe algoritmul de
detective a tastei apsate, care nu este altceva dect o niruire de interogri de tip if.
Pentru a explica mai bine acest algoritm, voi lua exemplul tastei 1. n figura 3.4 se
observ c tasta 1 este legat la pinul 4 al PCA9555 ce corespunde I0_0. In figura 2.31. se
observa c dac bitul corespunztor I0_0 ia valoarea 1, registrul va avea valoarea 0x01,
asadar se compar valoarea cititp cu 0x01, iar daca cele 2 sunt egale, n linia de comand
va aparea 1. Acelai algoritm se aplic pentru toate tastele, cu meniunea c tastele 9 ,
0 ,* ,# se leag la registrul de intrare 1.
Diferena dintre cei 2 algoritmi de citire a tastaturii este evideniat n figura 4.5.

72

Concluzii
n electronica modern se ncearc pe ct posibil miniaturizarea componentelor, a sistemelor i
simplificarea comunicrii ntre ele pe ct posibil. Magistrala I2C realizeaz, pe ct posibil, aceast
miniaturizare, prin reducerea la minimum a firelor de comunicaie, prin implementarea de protocoalelor
de arbitraj de magistral, prin implementarea de software reutilizabil.
Pentru aceast lucrare am folosit un microcontroller de la Freescale K10DX256 i dou periferice
compatibile I2C de care am legat o tastatur i nite leduri, urmnd ca pe viitor s se adauge i alte
periferice.
Aadar, alegerea magistralei I2C pentru aplicaia mea a fost una oportuna, ea respectnd cerinele de
sistem i de comunicare. S-a dovedit a fi o magistral simpl, mi-a uurat munca din punct de vedere al
PCB-ului (a simplificat interconexiunile) i lasa loc pentru dezvoltri importante n viitor, dat fiind
simplitatea eliminrii sau adugarii de noi dispozitive compatibile pe aceasta.
ntru ct platforma funcioneaz bine, pe viitor se va ncerca conectarea la magistral a unui display,
un PanelPilot SGD35M i a unui encoder, prin a crui rotire s se fixeze mai uor o tensiune de
referin. Se va apela la modurile de vitez ale magistralei, i este posibil chiar s se adauge nc un
master pentru performane sporite.
De asemenea, dac circuitul de ansamblu (simulatorul din figura 3.10) se va comporta conform
ateptrilor, se va ncerca ncapsularea acestuia prin realizarea unei plci similare cu cea programat n
acest proiect, plac ce va realiza funciile simulatorului. Acea plac va comunica cu componentele
ataate tot prin I2C, i va folosi, cel mai probabil, tot un microcontroller din familia K10, datorit
performanelor sale dovedite.
Acesta (simulatorul) va fi folosit n viitor pentru simularea stabilizrii naltei tensiuni de pe
acceleratorul Tandem de la Institutul de Fizic i Inginerie Nuclear Horia Hulubei, pentru ca, dac
testele o vor permite, acesta s nlocuiasc sistemele de stailizare actuale.

73

74

Bibliografie
[1]http://paginas.fe.up.pt/~ee00013/microPCI/files/I2C/Philips%20Semiconductors%20I2C
%20Handbook.pdf accesat la 1.12.2013;
[2] THE I2C-BUS SPECIFICATION VERSION 2.1 JANUARY 2000
http://i2c2p.twibright.com/spec/i2c.pdf accesat la 1.1.2014;
[3] PCA9555 datasheet
http://www.nxp.com/documents/data_sheet/PCA9555.pdf accesat la 1.03.2014;
[4] PCA 9553 datasheet
http://www.nxp.com/documents/data_sheet/PCA9553.pdf accesat la 1.03.2014;
[5] http://mcuoneclipse.com/2012/11/07/jtagswd-debugging-with-the-frdm-kl25z-board/ accesat la
23.06.2014;
[6] D.V.Mosu, D.G.Ghita, S.Dobrescu, T.Sava, Gh.Cata-Danil, A new slit stabilization system for the
beam energy at the Bucharest tandem Van de Graaff accelerator, 2012;
[7] http://en.wikipedia.org/wiki/I%C2%B2C accesat la data 1.03.2014;
[8] http://www.i2c-bus.org/ accesat la data 1.04.2014;
[9] http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html accesat la data 1.02.2014;
[10] http://www.nxp.com/documents/application_note/AN10216.pdf accesat la data 1.03.2014;
[11] http://www.nxp.com/documents/user_manual/UM10204.pdf accesat la data 1.12.2013.

75

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