Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Meseria se fura, ingineria se invata.Telecomunicatii, comunicatiile la distanta, Retele de, telefonie, VOIP, TV, satelit



Aeronautica Comunicatii Constructii Electronica Navigatie Pompieri
Tehnica mecanica

Comunicatii


Index » inginerie » Comunicatii
Proiect la disciplina Comunicatii de date


Proiect la disciplina Comunicatii de date




Proiect la disciplina Comunicatii de date

1 Tema proiectului

Se considera o structura hardware constind din doua sisteme de dezvoltare echipate cu microcontrolere de tip 80C552. Acest tip de microcontroler integreaza in cip facilitatile hardware necesare pentru a comunica pe o magistrala seriala in standard I2C. Acest hardware are structura unui automat cu stari finite, exploatabil prin intermediul unor registre ale microcontrolerului. Modul de exploatare este descris pe larg in paragraful 2.




Sistemele de dezvoltare dispun de o tastatura numerica simpla, cu 12 taste si de un afisaj cu cristale lichide. In paragraful 3 se dau indicatii de programare.

Se cere sa se lege intre ele doua sisteme. Unul, notat A, care functioneaza ca master, si unul, notat B, care functioneaza ca sclav. Pentru fiecare dintre sisteme se va scrie un program in limbaj C, pentru urmatoarea aplicatie.

Atunci cind se apasa o tasta numerica a sistemul A, acesta va trimite codul ASCII al numarului catre sistemul B.

Sistemul B va afisa caracterul receptionat, va incrementa modulo 10 numarul corespunzator si va trimite in retur, catre sistemul A, codul ASCII al acestui numar.

Sistemul A va afisa numarul al carui cod a fost primit.

In cazul depistarii unei erori ambele sisteme vor afisa caracterul asterisc, iar sistemul B va trimite in retur acest caracter.

2 Interfata seriala I2C a microcontrolerului 80C552

2.1 Preliminarii

Interfata seriala I2C (notata SIO1) permite conectarea microcontrolerului 80C552 la o magistrala I2C care utilizeaza doar doua linii, SDA (linia de date) si SCL (linia de ceas), pentru transferul informatiei intre dispozitivele conectate la magistrala. Principalele caracteristici ale acesteia sint :

transfer bidirectional intre dispozitive master si slave

magistrala multimaster, fara un master central

arbitrare pentru tentativa de acces simultan la magistrala a mai multor dispozitive master

sincronizarea ceasului, care permite comunicarea dispozitivelor cu diferite rate de transfer

Conectarea interfetei interne la magistrala externa I2C se face prin doi pini de port (P1.6/SCL si P1.7/SDA). Acesti pini corespund unor linii bidirectionale, care pot functiona atit ca intrari, cit si ca iesiri. Unitatea centrala se interfateaza cu SIO1 prin intermediul a patru registre de tip SFR (Special Function Register)

S1CON - registru de control

S1STA - registru de stare

S1DAT - registru de date

S1ADR - registru pentru adresa slave.

In figura 1 este prezentata configuratia unei magistrale I2C, iar in figura 2 este prezentat un transfer de date pe magistrala.

In functie de bitul de directie R/W, sint posibile doua tipuri de transferuri de date :

Transfer de date de la un master transmitator la un slave receptor. Primul octet transmis de master este adresa sistemului slave. Urmeaza un numar de octeti de date, slave-ul returnind un bit de confirmare ("acknowledge bit" - ACK) dupa fiecare octet receptionat.

Transfer de date de la un slave transmitator la un master receptor. Primul octet (adresa slave) este transmis de master, dupa care slave-ul returneaza un bit de confirmare. Urmeaza un numar de octeti de date trimisi de slave catre master. Dupa fiecare octet receptionat, masterul trimite un bit de confirmare, cu exceptia ultimului octet, cind trimite un bit "not acknowledge" (NOT_ACK) pentru a comanda incheierea transferului.


Fig.1. Configuratia unei magistrale I2C

Fig. 1. Configuratia magistralei I2C


Fig 2. Transferul de date pe magistrala I2C

Masterul este intotdeauna cel care initiaza un transfer pe magistrala, indiferent de sensul transferului. El genereaza impulsurile de ceas, pe linia SCL, si conditiile de START (S), STOP (P) sau START repetat, pe linia SDA. O conditie de START repetat incheie un transfer, dar masterul nu cedeaza magistrala, ci o pastreaza si pentru urmatorul trasnsfer.

2.2 Moduri de lucru

Interfata SIO1 poate opera in patru moduri:

Modul master transmitator

Primul octet transmis de master contine adresa de slave (pe 7 biti) si bitul de sens al transferului R/W=0 (se transmite W). Notam acest octet SLA+W. Urmeaza un numar de octeti de date, slave-ul returnind bitul ACK dupa fiecare octet receptionat. START si STOP indica inceputul si sfirsitul unui transfer.

Modul master receptor

Primul octet transmis de master contine adresa de slave (pe 7 biti) si bitul de sens al transferului R/W=1 (se transmite R). Notam acest octet SLA+R. Urmeaza un numar de octeti de date transmisi de slave, masterul returnind bitul ACK dupa fiecare octet receptionat. START si STOP indica inceputul si sfirsitul unui transfer.

Modul slave receptor

Primul octet receptionat este SLA+W. Daca adresa receptionata coincide cu cea proprie, slave-ul intra in legatura cu master-ul, receptioneaza octetii de date transmisi de acesta si returneaza un ACK dupa fiecare octet. START si STOP sint recunoscuti ca inceput si sfirsit de transfer.

Modul slave transmitator

Primul octet receptionat este SLA+R. Daca adresa receptionata coincide cu cea proprie, slave-ul intra in legatura cu masterul, transmite octetii de date iar masterul returneaza un ACK dupa fiecare octet. START si STOP sint recunoscuti ca inceput si sfirsit de transfer.

2.3 Registrele de lucru

Registrul de control S1CON

Structura registrului S1CON este urmatoarea.

S1CON

CR2

ENS1

STA

STO

SI

AA

CR1

CR0

unde :

CR2, CR1, CR0 - stabilesc rata de transfer (se inscriu doar in modul master)

ENS1 - bitul de validare al interfetei SIO1

STA - bitul de START

STO - bitul de STOP

SI - fanionul de intrerupere

AA - fanionul de confirmare

ENS1 este bitul de validare SIO1.

Daca ENS1=0, iesirile SDA si SCL sint in starea de inalta impedanta, iar intrarile corespunzatoare sint ignorate. Pentru modul slave, SIO1 este in starea "neadresabil" si bitul STO (S1CON.4) este fortat la "0".

Daca ENS1=1, SIO1 este validata.

ENS1 nu trebuie folosit pentru a decupla temporar SIO1 de la magistrala, deoarece cind ENS1 este resetat, starea interfetei este pierduta ( in acest scop se poate utiliza bitul AA-S1CON.2 )

STA este bitul de START

Daca STA este setat pentru a intra in modul master, SIO1 testeaza starea magistralei I2C si genereaza o conditie de START cind magistrala este libera. Daca STA este setat cind SIO1 este deja in modul master, se transmite o conditie de START repetat.

Daca STA este resetat nu se va genera o conditie de START sau START repetat.

STO este bitul de STOP

Daca STO este setat cind SIO1 este in modul master, va fi transmisa pe magistrala I2C o conditie de STOP dupa care bitul STO va fi resetat prin hard.

Daca STO este resetat nu va fi generata o conditie de STOP.

SI este fanionul de intrerupere

Daca SI este setat si intreruperea SIO1 este validata, se genereaza o intrerupere atunci cind se schomba starea interfetei. Bitul SI este setat la intrarea in una din cele 25 de stari (din 26 posibile) ale interfetei. Singura stare in care nu se seteaza SI este F8H, stare care indica de fapt ca nu exista inca nici o informatie utila.

Fanionul SI trebuie resetat prin program.

Daca SI este resetat nu se genereaza intrerupere.

Intreruperea SIO1 se valideaza, respectiv invalideaza, in cadrul general al programarii sistemului de intreruperi al microcontrolerului. Daca intreruperea este invalidata, starea fanionului SI trebuie testata prin interogare software de catre aplicatie. Acesta este modul in care se va lucra la acest proiect. In acest mod de lucru, bitul SI este setat de catre hardware, atunci cind se schimba starea interfetei si va fi resetat prin software pentru a semnala ca se initiaza trecerea in alta stare.

AA este fanionul de confirmare

Daca fanionul AA este setat se va returna un bit ACK (nivel "low" pe linia SDA) atunci cind :

slave-ul receptioneaza propria adresa

slave-ul receptioneaza adresa generala ("general call") daca bitul GC=1 (S1ADR.0)

un octet de date a fost receptionat in timp ce SIO1 este in modul master receptor sau slave receptor.

Daca fanionul AA este resetat se va returna un bit NOT_ACK (nivel "high" pe linia SDA) atunci cind un octet de date a fost receptionat in timp ce SIO1 este in modul master receptor sau slave receptor.

CR0, CR1 si CR2 stabilesc frecventa semnalului SCL (rata de transfer pe linia seriala)

Cei trei biti au semnificatie doar in modul master, deoarece in modul slave SIO1 se sincronizeaza cu ceasul generat de master.

Tabelul urmator prezinta ratele de transfer pentru frecventele de oscilatie de 6MHz, 12MHz si 16MHz.

CR2

CR1

CR0

Frecventa biti ( kHz ) la Fosc

6 MHz

12 MHz

16 MHz

0

0

0

0

1

1

1

0

0

1

1

0

0

1

0

1

0

1

0

1

0

23

27

31

37

6.25

50

100

47

54

63

75

12.5

100

-

63

71

83

100

17

-

-

Registrul de stare S1STA

Este un registru SFR pe 8 biti, care poate fi doar citit. Cei mai semnificativi 5 biti contin codul binar al starii in care se afla SIO1, iar cei mai putin semnificativi 3 biti sint zero. Exista 26 de stari posibile ale circuitului (din care una, codificata F8H nu contine informatii relevante). La intrarea in oricare din celelalte 25 de stari, bitul SI este setat.

Registrul de adresa S1ADR

Este un registru SFR pe 8 biti care poate fi citit sau inscris. Continutul sau este fara importanta cind SIO1 este in modul master. In modul slave cei 7 biti mai semnificativi trebuie incarcati cu adresa proprie a microcontrolerului.

Daca bitul cel mai putin semnificativ, notat GC este setat, microcontrolerul va recunoaste pe linga adresa proprie si o adresa generala, codofocata cu 0.

Registrul de date S1DAT

Este un registru SFR pe 8 biti si contine octetul de date care va fi transmis sau care tocmai a fost receptionat pe linia seriala. Data ramine stabila in acest registru atit timp cit SIO1 este intr-o stare definita si bitul SI este setat.

2.4 Descrierea modurilor de lucru

Descrierea transferurilor de date in fiecare din modurile de lucru utilizeaza urmatoarele notatii :

S conditia de START

SLA adresa slave pe 7 biti

R bitul de sens pentru citire de la slave (nivel "high" pe linia SDA)

W bitul de sens pentru scriere la slave (nivel "low" pe linia SDA)

A bitul ACK (nivel "low" pe linia SDA)

A bitul NOT_ACK (nivel "high" pe linia SDA)

DATA octetul de date

P conditia de STOP

ADR_GEN adresa generala

SLV_N_ADR modul SLAVE neadresabil

2.4.1 Modul Master Transmitator

Diagrama de functionare in modul master transmitator este prezentata in figura 3, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 1.

In acest mod, un numar de octeti de date sint transmisi de la un master transmitator catre un slave receptor. Inainte de intrarea in acest mod, S1CON trebuie initializat astfel :

bitul ENS1=1 pentru validarea SIO1

bitii STA, STO, SI trebuie resetati

bitul AA poate fi setat sau resetat; daca AA = 0 SIO1 nu va recunoaste propria adresa sau adresa generala in cazul in care un alt dispozitiv devine master pe magistrala (de fapt SIO1 nu poate intra in acest caz in modul slave)

bitii CR0, CR1, CR2 sint pozitionati pentru rata de transfer dorita

Intrarea in modul master se poate face acum prin setarea STA. SIO1 va testa magistrala I2C si va genera un START (S) imediat ce aceasta devine libera. Cind START este generat, bitul SI este setat si se intra in starea 08H (vezi tabelul 1) in care trebuie incarcat registrul S1DAT cu adresa slave-ului si bitul de sens (SLA+W). Bitul SI trebuie resetat pentru ca transferul sa continue.

Cind SLA+W a fost transmis si bitul ACK a fost receptionat, bitul SI este setat din nou, prin hardware, si un numar de stari in S1STA sint posibile. Acestea sint 18H, 20H sau 38H pentru modul master si 68H, 78H sau B0H daca modul slave a fost validat (bitul AA = 1).

Dupa un START repetat (starea 10H), SIO1 poate comuta in modul master receptor incarcind registrul S1DAT cu SLA+R.

2.4.2. Modul Master Receptor

Diagrama de functionare in modul master receptor este prezentata in figura 4, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 2.

In acest mod, un numar de octeti de date sint receptionati de un master receptor de la un slave transmitator.

Initializarea transferului se face la fel ca in modul master transmitator.

Cind START este generat, bitul SI este setat si se intra in starea 08H (vezi tabelul 2) in care trebuie incarcat registrul S1DAT cu adresa slave-ului si bitul de sens (SLA+R). Bitul SI trebuie resetat pentru ca transferul sa continue.

Cind SLA+R a fost transmis si bitul ACK a fost receptionat, bitul SI este setat din nou si un numar de stari in S1STA sint posibile. Acestea sint 40H, 48H sau 38H pentru modul master si 68H, 78H sau B0H daca modul slave a fost validat (bitul AA = 1).

Dupa un START repetat (starea 10H), SIO1 poate comuta in modul master transmitator incarcind registrul S1DAT cu SLA+W.

2.4.3. Modul Slave Receptor

Diagrama de functionare in modul slave receptor este prezentata in figura 5, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 3.

In acest mod, un numar de octeti de date sint receptionati de la un master transmitator.

Initializarea transferului se face prin incarcarea S1ADR si S1CON astfel:

S1ADR se incarca pe cei 7 biti mai semnificativi cu adresa la care va raspunde cind va fi adresat de un master, iar daca bitul mai putin semnificativ GC este setat, slave-ul va raspunde si la adresa generala (00H - adresa de selectie pentru toate modulele slave). Daca GC = 0 adresa generala este ignorata.

S1CON trebuie initializat astfel :

bitul ENS1 =1 pentru validarea SIO1

bitii STA, STO, SI sint resetati

bitul AA trebuie setat pentru ca SIO1 sa recunoasca propria adresa sau adresa generala

bitii CR0, CR1, CR2 nu au importanta in modul slave

Dupa ce S1ADR si S1CON au fost initializati, SIO1 ramine in asteptare pina cind este adresat prin octetul SLA+W de un master transmitator. In continuare bitul SI este setat si un numar de stari sint posibile (codul lor este in registrul S1STA). In modul slave receptor se poate ajunge si din modul master daca SIO1 pierde arbitrarea pentru acces la magistrala (vezi starile 68H si 78H).

Daca bitul AA este resetat in timpul unui transfer, SIO1 va returna un bit NOT_ACK dupa urmatorul octet de date; in continuare SIO1 nu isi va mai recunoaste propria adresa sau adresa generala. Totusi, magistrala este monitorizata si revenirea la recunoasterea adreselor poate fi facuta prin setarea bitului AA (bitul AA poate fi deci folosit pentru izolarea temporara de magistrala).

2.4.4. Modul Slave Transmitator

Diagrama de functionare in modul slave transmitator este prezentata in figura 6, iar descrierea starilor posibile ale SIO1 este prezentata in tabelul 4.

In acest mod, un numar de octeti de date sint transmisi catre un master receptor.

Initializarea transferului se face prin incarcarea S1ADR si S1CON la fel ca in cazul slave receptor.

Dupa ce S1ADR si S1CON au fost initializati, SIO1 ramine in asteptare pina cind este adresat prin octetul SLA+R de un master receptor. In continuare bitul SI este setat si un numar de stari sint posibile (codul lor este in registrul S1STA). In modul slave transmitator se poate ajunge si din modul master daca SIO1 pierde arbitrarea pentru acces la magistrala (vezi starea B0H).

Daca bitul AA este resetat in timpul unui transfer, SIO1 va transmite un ultim octet de date dupa care va intra in una din starile C0H sau C8H. In continuare SIO1 nu isi va mai recunoaste propria adresa sau adresa generala ignorind masterul daca acesta continua transferul (masterul va receptiona in acest caz valoarea "1" pe linia seriala). Totusi, magistrala este monitorizata si revenirea la recunoasterea adreselor poate fi facuta prin setarea bitului AA.

2.5 Stari nedefinite

Exista doua coduri in registrul S1STA care nu corespund la stari fizice ale SIO1 :

S1STA = F8H - codul indica faptul ca nu exista informatii relevante deoarece bitul SI nu a fost inca setat; acest caz apare la trecerea intre celelalte stari sau cind SIO1 nu este implicat intr-un transfer.

S1STA = 00H - codul indica prezenta unei erori de magistrala intr-un transfer serial (de exemplu o conditie de START sau STOP intr-o pozitie ilegala, perturbatii externe etc). Cind apare o astfel de eroare bitul SI este setat. Pentru revenirea in functionare normala bitul STO trebuie setat si SI resetat, SIO1 intrind astfel in modul slave "neadresabil" (stare fizica definita).

3. Indicatii de programare

Intr-o aplicatie, lucrul cu interfata seriala I2C ( SIO1 ) se poate realiza, in principiu, in doua moduri :

prin interogare ("polling") cu intreruperea seriala SIO1 invalidata. In acest caz, se testeaza prin program bitul SI pentru a detecta momentul in care interfata ajunge intr-o stare definita (codul starii se citeste din registrul S1STA).

prin intreruperi. In acest caz programatorul trebuie sa scrie o subrutina de tratare a intreruperii la care se ajunge automat (prin mecanisme hardware) atunci cind bitul de intrerupere SI este setat.

In principiu, un program pentru interfata seriala I2C ar trebui sa cuprinda o functie de initializare a interfetei, cite o functie pentru implementarea fiecarui mod de lucru si o functie de intrerupere (daca se lucreaza cu intreruperi).

Functia de initializare trebuie sa realizeze programarea S1CON (validare, rata de transfer, etc).

Functia care implementeaza un mod de lucru trebuie sa realizeze un automat secvential cu un numar finit de stari. Ea va cuprinde o bucla de asteptare, in care se testeaza fanionul SI pina cind acesta este setat prin hardware, eveniment ce indica trecerea intr-o noua stare. In continuare, actiunea intreprinsa depinde de codul starii curente din S1STA.

Functia de tratare a intreruperii trebuie sa realizeze, in principiu, aceleasi actiuni prezentate anterior, adica implementarea modurilor de lucru, cu diferenta ca nu se mai face testarea bitului SI, deoarece aceasta functie este apelata automat atunci cind se schimba starea si SI este setat.

Sistemele pe care se va implementa aceasta aplicatie sint concepute in principal ca platformre de dezvoltare si testare a aplicatiilor. Aceasta inseamna ca dispun de resurse mai mari decit ale unui sistem dedicat (embedded) dar mai mici decit ale unui calculator PC.

De regula, astfel de aplicatii de dezvolta, la nivel software, pe un calculator PC pe care ruleaza un crosscompilator. Acesta genereaza cod obiect care va fi transportat, de obicei printr-o cale de comunicatie seriala (RS232), pe sistemul tinta.

Compilatorul C pentru microcontrolerul 80552 recunoaste numele registrelor SFR si ale bitilor din aceste registre. Ele sint asimilate unor variabile predefinite si pot aparea in expresii si in instructii de atribuire. De exemplu

x = S1STA; sau

while(~SI); sau

SI = 1;

sint instructii valide.

Pentru interfata cu dispozitivele de intrare-iesire presupunem ca sint disponibile doua functii de biblioteca care au urmatoarele prototipuri:

unsigned char citeste(void);

void scrie(unsigned char);

Prima functie citeste starea tastaturii si returneaza un cod ASCII, daca este apasata o tasta, respectiv valoarea 0, daca nu este apasata nici o tasta. Exista 12 taste care au insemnele 0,1,2,3,4,5,6,7,8,9,*,#, respectiv codurile ASCII 0x30, 0x31, 0x32 etc.

A doua functie afiseaza un caracter pe un dispozitiv de afisare cu cristale lichide.






Fig.3. Diagrama starilor in modul master transmitator

Tabelul 1. Descrierea starilor in modul Master Transmitator

COD STARE

STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1

RASPUNS APLICATIE SOFT

URMATOAREA ACTIUNE A INTERFETEI SIO1

S1DAT

S1CON

STA

STO

SI

AA

08H

START a fost transmis

Incarca SLA+W

X

X

SLA+W va fi transmis

ACK va fi receptionat

10H

START REP. a fost transmis

Incarca SLA+W

Incarca SLA+R

X

X

X

X

Identic anterior

SLA+W va fi transmis

SIO1 va comuta in modul MST/REC

18H

SLA+W a fost transmis; ACK a fost receptionat

Incarca DATA

Nu

Nu

Nu

X

X

X

X

DATA va fi transmisa

ACK va fi receptionat

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters

20H

SLA+W a fost transmis; NOT_ACK a fost receptionat

Incarca DATA

Nu

Nu

Nu

X

X

X

X

DATA va fi transmisa

ACK va fi receptionat

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters

28H

DATA din S1DAT a fost transmisa; ACK a fost receptionat

Incarca DATA

Nu

Nu

Nu

X

X

X

X

DATA va fi transmisa

ACK va fi receptionat

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters

30H

DATA din S1DAT a fost transmisa; NOT_ACK a fost receptionat

Incarca DATA

Nu

Nu

Nu

X

X

X

X

DATA va fi transmisa

ACK va fi receptionat

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters

38H

Arbitrare pierduta in SLA+R/W sau octetii de date

Nu

Nu

X

X

Magistrala I2C va fi cedata

SIO1 va intra in modul "slave" neadresabil

START va fi transmis cind magistrala devine libera


Fig.4. Diagrama starilor in modul master receptor

Tabelul 2. Descrierea starilor in modul Master Receptor

COD STARE

STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1

RASPUNS APLICATIE SOFT

URMATOAREA ACTIUNE A INTERFETEI SIO1

S1DAT

S1CON

STA

STO

SI

AA

08H

START a fost transmis

Incarca SLA+R

X

X

SLA+R va fi transmis

ACK va fi receptionat

10H

START REP. a fost transmis

Incarca SLA+R

Incarca SLA+W

X

X



X

X

Identic anterior

SLA+W va fi transmis

SIO1 va comuta in modul MST/TRX

38H

Arbitrare pierduta in NOT_ACK

Nu

Nu

X

X

Magistrala I2C va fi cedata

SIO1 va intra in modul "slave"

START va fi transmis cind magistrala devine libera

40H

SLA+R a fost transmis; ACK a fost receptionat

Nu

Nu

DATA a fost receptionata

NOT_ACK va fi returnat

DATA a fost receptionata

ACK va fi returnat

48H

SLA+R a fost transmis; NOT_ACK a fost receptionat

Nu

Nu

Nu

X

X

X

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters

50H

DATA a fost receptionata; ACK a fost returnat

Citeste DATA

Citeste DATA

DATA a fost receptionata

NOT_ACK va fi returnat

DATA a fost receptionata

ACK va fi returnat

58H

DATA a fost receptionata; NOT_ACK a fost returnat

Citeste DATA

Citeste DATA

Citeste

DATA

X

X

X

START REP. va fi transmis

STOP va fi transmis

Fanionul STO va fi sters

STOP urmat de un START vor fi transmise

Fanionul STO va fi sters


Fig.5. Diagrama starilor in modul Slave Receptor

Tabelul 3. Descrierea starilor in modul Slave Receptor

COD STARE

STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1

RASPUNS APLICATIE SOFT

URMATOAREA ACTIUNE A INTERFETEI SIO1

S1DAT

S1CON

STA

STO

SI

AA

60H

SLA+W proprie a fost receptionata; ACK a fost returnat

Nu

Nu

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

68H

Arbitrare pierduta in SLA+R/W ca master; SLA+W proprie a fost receptionta; ACK returnat

Nu

Nu

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

70H

ADR_GEN a fost receptionata; ACK a fost returnat

Nu

Nu

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

78H

Arbitrare pierduta in SLA+R/W ca master; ADR_GEN a fost receptionta; ACK returnat

Nu

Nu

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

80H

Anterior adresat cu SLA proprie; DATA a fost receptionata; ACK a fost returnat

Citeste DATA

Citeste DATA

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

88H

Anterior adresat cu SLA proprie; DATA a fost receptionata; NOT_ACK a fost returnat

Citeste DATA

Citeste DATA

Citeste DATA

Citeste DATA



Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie    sau ADR_GEN

Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1

Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN

START va fi generat cind magistrala devine libera

Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1

START va fi generat cind magistrala devine libera

90H

Anterior adresat cu ADR_GEN; DATA a fost receptionata; ACK a fost returnat

Citeste DATA

Citeste DATA

X

X

DATA va fi receptionata si NOT_ACK va fi returnat

DATA va fi receptionata si ACK va fi returnat

98H

Anterior adresat cu ADR_GEN; DATA a fost receptionata; NOT_ACK a fost returnat

Identic cu starea 88H

Identic cu starea 88H

A0H

STOP sau START REP. au fost receptionati

Nu

Nu

Nu

Nu

Identic cu starea 88H


Fig.5. Diagrama starilor in modul Slave Transmitator

Tabelul 4. Descrierea starilor in modul Slave Transmitator

COD STARE

STAREA MAGISTRALEI I2C SI A INTERFETEI SIO1

RASPUNS APLICATIE SOFT

URMATOAREA ACTIUNE A INTERFETEI SIO1

S1DAT

S1CON

STA

STO

SI

AA

A8H

SLA+R proprie a fost receptionata; ACK a fost returnat

Citeste

DATA

Citeste

DATA

X

X

Ultima DATA va fi transmisa si ACK va fi receptionat

DATA va fi transmisa si ACK va fi receptionat

B0H

Arbitrare pierduta in SLA+R/W ca master; SLA+R proprie a fost receptionta; ACK returnat

Citeste

DATA

Citeste

DATA

X

X

Ultima DATA va fi transmisa si ACK va fi receptionat

DATA va fi transmisa si ACK va fi receptionat

B8H

DATA in S1DAT a fost transmisa; ACK a fost receptionat

Citeste

DATA

Citeste

DATA

X

X

Ultima DATA va fi transmisa si ACK va fi receptionat

DATA va fi transmisa si ACK va fi receptionat

C0H

DATA in S1DAT a fost transmisa; NOT_ACK a fost receptionat

Nu

Nu

Nu

Nu

Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN

Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1

Comuta in modul SLV_N_ADR; nu recunoaste SLA proprie sau ADR_GEN

START va fi generat cind magistrala devine libera

Comuta in modul SLV_N_ADR; recunoaste SLA proprie; ADR_GEN este recunoscuta daca S1ADR.0=1

START va fi generat cind magistrala devine libera

C8H

Ultima DATA in S1DAT a fost transmisa; ACK a fost receptionat

Nu

Nu

Nu

Nu

Identic cu starea C0H







Politica de confidentialitate


Copyright © 2020 - Toate drepturile rezervate