Iic Platforma Pentru Tandem

download Iic Platforma Pentru Tandem

of 72

description

I2C prezentation and description of functional platform using the interface

Transcript of Iic Platforma Pentru Tandem

Cuprins

Introducere.....11Capitolul 1. Conceptul de magistral IC................131.1 Beneficii ale designerului.......151.2 Beneficii producator...161.3 Introducere n conceptul de interfa I2C ....161.4. De ce am ales comunicarea I2C pentru aceast lucrare?..................................................................17Capitolul 2. Conceptul de magistral I2C...........................................................................................192.1 Caracteristici generale....202.2 Transferul unui bit..212.3 Valabilitatea datelor ..212.4 Condiii de START i STOP..222.5. Transferul datelor..22 2.5.1 Formatul byte-ului ...22 2.5.2 Acknowledge...232.6 Arbitrarea i generarea clock-ului. ...24 2.6.1 Sincronizarea semnalelor de clock....24 2.6.2 Arbitrarea .242.7. Formatul cu adrese pe 7 bii...262.8 Adresarea pe 7 bii.282.9 Definirea biilor din primul octet...282.10 Adresa de apel general. ...302.11 Byte de START ...322.12.Extensii ale modului standard pe magistrala I2C.. .32 2.12.1 FAST-MODE ..33 2.12.2 Hs-MODE (mod de high-speed)...342.13 Transfer de mare vitez ..342.14 Formatul transferului de date serial n modul HS (high-speed). 362.15 Trecerea de la modul Fast/Standard la modul HS i invers.382.16 Dispozitive de mod High-speed la modurile de vitez mai mici....382.17 Moduri de vitez mixt pe un sistem de magistrala serial .392.18 Modul de transfer fast sau standard ntr-un sistem cu viteze mixte...............................................412.19 Transferul de mare vitez ntr-un sistem cu viteze mixte................................................................412.20 Cerine de timp pentru legtur dintr-un system cu viteze mixte....................................................422.21.Conexiuni electrice ale dispozitivelor I2C legate la magistral.......................................................422.22 .PCA9555 ........................................................................................................................................44 2.22.1. Descriere generala...............................................................................................................44 2.22.3 Schema bloc....44. 2.22.2 Specificaii.......442.23 PCA9553 ........................................................................................................................................46 2.23.1 Descriere general.........................................................................................................46 2.23.2 Specificaii. ...................................................................................................................47 2.23.3 Schema bloc a PCA9553............................................................................................. 47Capitolul 3.Partea hardware.49Capitolul 4. Partea software..................................................................................................................574.1 Structura programului....584.2 Funcia de delay (ntarziere) ..594.3 Funcia de iniializarre a magistralei..................................................................................................594.4 Funcia de trimitere a unui byte (octet)..............................................................................................594.5 Funcia de primire a unui byte. 624.6 Funcia de scriere. 634.7 Funcia de citire.................................................................................................................................66Concluzii.....73Bibliografie.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.

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 inter-IC. 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.

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.

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 on-chip. 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. 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 productorCircuitele 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. 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 I2C1.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.

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.

TermenDescriere

TransmitorDispozitivul care trimite date pe magistral.

ReceptorDispozitivul care primete date de pe magistral.

MasterDispozitivul care initiaz un transfer, genereaz semnalale de ceas si ncheie un transfer.

SclavDispozitivul adresat unui master.

Multi-masterMai mult de un master poate ncerca s preia controlul asupra magistralei n acelai timp, far s corupa mesajul.

ArbitrareProcedura 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.

SincronizareProcedura 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.

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 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).

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, microcontrollerelecare 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 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 AcknowledgeTransferul 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. 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 clockToate 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 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. 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.

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 acknowledge-ului, 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).

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.

Tabelul 2.

Adresa dispozitivului SLAVEBit-ul de R/W (read/write)Descriere

0000 0000Adres de apel general.

0000 0001Byte-ul de START.

0000 001XAdrese de CBUS.

0000 010XRezervat pentru diferite formate de magistral.

0000 011XRezervat pentru dezvoltri viitoare.

0000 1XXXCodul pentru master n modul Hs (high-speed).

1111 1XXXRezervata pentru desvoltri viitoare.

1111 0XXXAdresare 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).

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).

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 master-transmitor.

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 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: 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 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 bi-directionala 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. 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.

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 not-acqnowledge (A), dup care a maestrul ctigtor rmne activ. Codul master indic altor dispozitive 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. 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 spike-urilor 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.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 VDD2n 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 ntreConfiguraia magistralei seriale

HS + Fast + StandardHS + FastHS + StandardFast + Standard

HS HS0-3.4 Mbit/s0-3.4 Mbit/s0-3.4 Mbit/s-

HS Fast0-100 kbit/s0-400 kbit/s--

HS Standard0-100 kbit/s-0-100 kbit/s-

Fast Standard0-100 kbit/s--0-100 kbit/s

Fast Fast0-100 kbit/s0-400 kbit/s-0-100 kbit/s

Standard Standard0-100 kbit/s-0-100 kbit/s0-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: 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 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.

2.22 .PCA9555 2.22.1. Descriere generalaPCA9555 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. 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.

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 PCA95532.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 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.

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

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.

Capitolul 3.Partea hardwareSchema 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 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.

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.

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. 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.

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.

Componentele simulatorului acceleratorului sunt ilustrate n figura 3.10.

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.

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).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