Sunteți pe pagina 1din 16

Proiect la disciplina Comunicaii de date

1. Tema proiectului
Se consider o structur hardware constnd din dou sisteme de dezvoltare echipate cu
microcontrolere de tip 80C552. Acest tip de microcontroler integreaz n cip facilitile
hardware necesare pentru a comunica pe o magistral serial n standard I2C. Acest hardware
are structura unui automat cu stri finite, exploatabil prin intermediul unor registre ale
microcontrolerului. Modul de exploatare este descris pe larg n paragraful 2.
Se cere s se lege ntre ele dou sisteme, unul care funcioneaz ca master i unul care
funcioneaz ca sclav. Pentru fiecare dintre sisteme se va scrie un program, n limbaj C, care
s permit comunicaia ntre cele dou sisteme astfel:
1. La nceputul rulrii aplicaiei (dup reset), fiecare modul iniializeaz interfaa
I2C.
2. Dup iniializare, sistemul master intr n modul transmitor i transmite ctre
sclav dou iruri de octei. Aceste iruri snt preluate din memorie, unde se
presupune c au fost declarate prin program, ca constante. Sistemul sclav va
recepiona aceste iruri de octei i le va memora ntr-un buffer. Transmisia celor
dou iruri se va face ca o operaie indivizibil, prin generarea unui start repetat
dup transmiterea primului ir.
3. Dup terminarea transmisiei de ctre master, acesta va trece n mod receptor, iar
sclavul va trece n mod transmitor. Acum sistemul sclav va transmite dou iruri
de octei, iar sistemul master le va recepiona, deasemenea cu start repetat.
Apariia unei erori de magistral va avea ca efect abandonarea operaiei curente (de
transmitere, respectiv de recepie) i ncercarea de reluare a ei. Deoarece n sistem exist un
singur master, apariia unei stri de pierdere a arbitrrii va fi tratat la fel ca o eroare.
Deasemenea, absena semnalului de acknoledge de la sclav va fi tratat ca eroare. ncercarea
de repetare a transferului se va face de trei ori, dup care se va aborta ntreaga sesiune de
comunicaie.
n paragraful 3 se dau indicaii de programare.

2. Interfaa serial I2C a microcontrolerului 80C552


2.1 Preliminarii
Interfaa serial I2C (notat SIO1) permite conectarea microcontrolerului 80C552 la o
magistral I2C care utilizeaz doar dou linii, SDA (linia de date) i SCL (linia de ceas),
pentru transferul informaiei ntre dispozitivele conectate la magistral. Principalele
caracteristici ale acesteia snt :
transfer bidirecional ntre dispozitive master i sclav
magistral multimaster, fr un master central
arbitrare pentru tentativa de acces simultan la magistral a mai multor dispozitive master
sincronizarea ceasului, care permite comunicarea dispozitivelor cu diferite rate de transfer
Conectarea interfeei interne la magistrala externa I2C se face prin doi pini de port
(P1.6/SCL i P1.7/SDA). Aceti pini corespund unor linii bidirecionale, care pot funciona
att ca intrri, ct i ca ieiri. Unitatea central se interfaeaz cu SIO1 prin intermediul a patru
registre de tip numite generic SFR (Special Function Register)
S1CON - registru de control

S1STA - registru de stare


S1DAT - registru de date
S1ADR - registru de adres (n modul sclav).
n figura 1. este prezentat configuraia unei magistrale I2C, iar n figura 2. este
prezentat un transfer de date pe magistral.
n funcie de bitul de direcie R/W\, snt posibile dou tipuri de transferuri de date :
1. Transfer de date de la un master transmitor la un sclav receptor. Primul octet transmis
de master este adresa sistemului sclav. Urmeaz un numr de octei de date, sclavul
returnnd un bit de confirmare (acknowledge bit - ACK) dupa fiecare octet recepionat.
2. Transfer de date de la un sclav transmitor la un master receptor. Primul octet (adresa
sclavului) este transmis de master, dupa care sclavul returneaza un bit de confirmare.
Urmeaz un numr de octei de date trimii de sclav ctre master. Dup fiecare octet
recepionat, masterul trimite un bit de confirmare, cu excepia ultimului octet, cnd trimite
un bit not acknowledge (NOT_ACK) pentru a comanda ncheierea transferului.
VDD
R

R
SDA
SC L

P1.7

P1.6

Alte
dispozitive

8xC552

Alte
dispozitive

Fig.1. Configuratia unei magistrale I2C


Fig. 1. Configuraia magistralei I2C

Semnal ACK
de la Receptor

Conditia de STO P

SDA

S
MSB

R/W
Adresa SLAVE

Bit
directie

SCL
S

9
ACK

Conditia de
START

3-8

9
ACK

Se repeta daca sunt transferati


mai multi octeti

Fig 2. Transferul de date pe magistrala I2C

P/S

Masterul este ntotdeauna cel care iniiaz un transfer pe magistral, indiferent de sensul
transferului. El genereaz impulsurile de ceas, pe linia SCL, i condiiile de START (S),
STOP (P) sau START repetat, pe linia SDA. O condiie de START repetat ncheie un
transfer, dar masterul nu cedeaz magistrala, ci o pstreaz i pentru urmtorul trasnsfer.
2.2 Moduri de lucru
Interfaa SIO1 poate opera n patru moduri:
Modul master transmitor
Primul octet transmis de master conine adresa de sclav (pe 7 bii) i bitul de sens al
transferului R/W\=0 (se transmite W). Notm acest octet SLA+W. Urmeaz un numr de
octei de date, sclavul returnnd bitul ACK dup fiecare octet recepionat. START i STOP
indic nceputul i sfritul unui transfer.
Modul master receptor
Primul octet transmis de master contine adresa de sclav (pe 7 bii) i bitul de sens al
transferului R/W\=1 (se transmite R). Notm acest octet SLA+R. Urmeaz un numr de octei
de date transmii de sclav, masterul returnnd bitul ACK dup fiecare octet recepionat.
START i STOP indic inceputul i sfritul unui transfer.
Modul sclav receptor
Primul octet recepionat este SLA+W. Dac adresa recepionat coincide cu cea
proprie, sclavul intr n legatur cu masterul, recepioneaz octeii de date transmii de acesta
i returneaz un ACK dup fiecare octet. START i STOP snt recunoscui ca nceput i
sfrit de transfer.
Modul sclav transmitor
Primul octet recepionat este SLA+R. Dac adresa recepionat coincide cu cea
proprie, sclavul intr n legtura cu masterul, transmite octeii de date iar masterul returneaza
un ACK dup fiecare octet. START i STOP snt recunoscui ca nceput i sfrit de transfer.
2.3 Registrele de lucru
Registrul de control S1CON
Structura registrului S1CON este urmtoarea.
S1CON
CR2

ENS1

STA

STO

SI

AA

CR1

unde :
CR2, CR1, CR0 - stabilesc rata de transfer (se nscriu doar n modul master)
ENS1 - bitul de validare al interfeei SIO1
STA - bitul de START
STO - bitul de STOP
SI - fanionul de ntrerupere/polling
AA - fanionul de confirmare

CR0

ENS1 este bitul de validare SIO1.


Daca ENS1=0, ieirile SDA i SCL snt n starea de nalt impedan, iar intrrile
corespunzatoare snt ignorate. Pentru modul sclav, SIO1 este n starea neadresabil i bitul
STO (S1CON.4) este forat la 0.
Dac ENS1=1, SIO1 este validat.
ENS1 nu trebuie folosit pentru a decupla temporar SIO1 de la magistral, deoarece cnd
ENS1 este resetat, starea interfeei este pierdut ( n acest scop se poate utiliza bitul AAS1CON.2 )
STA este bitul de START
Dac STA este setat pentru a intra n modul master, SIO1 testeaz starea magistralei
I2C i genereaz o condiie de START cnd magistrala este liber. Daca STA este setat cnd
SIO1 este deja n modul master, se transmite o condiie de START repetat.
Daca STA este resetat nu se va genera o condiie de START sau START repetat.
STO este bitul de STOP
Daca STO este setat cnd SIO1 este n modul master, va fi transmis pe magistrala I2C
o condiie de STOP dup care bitul STO va fi resetat prin hard.
Daca STO este resetat nu va fi generat o conditie de STOP.
SI este fanionul de ntrerupere/polling
a) Cazul de lucru cu ntruperi.
ntreruperea SIO1 se valideaz, respectiv invalideaz, n cadrul general al programrii
sistemului de ntreruperi al microcontrolerului. Dac utilizatorul dorete s foloseasc modul
de lucru cu ntreruperi, el va trebui s seteze un fanion specific. n acest caz, la schimbarea
strii interfeei SIO1 se va seta fanionul SI i, concomitent, se va genera o cerere de
ntrerupere. Bitul SI este setat la intrarea n una din cele 25 de stri (din 26 posibile) ale
interfeei. Singura stare n care nu se seteaza SI este F8H, stare care indic de fapt c nu
exista nc nici o informaie util. Fanionul SI trebuie resetat prin program.
b) Cazul de lucru prin polling
Dac ntreruperea este invalidat, starea fanionului SI trebuie testat prin interogare
software de ctre aplicaie. Acesta este modul n care se va lucra la acest proiect. n acest
mod de lucru, bitul SI este setat de ctre hardware atunci cnd se schimb starea interfeei i
va fi resetat prin software pentru a semnala c se iniiaz trecerea n alt stare.
AA este fanionul de confirmare
Dac fanionul AA este setat se va returna un bit ACK (nivel low pe linia SDA) atunci
cnd :
- sclavul recepioneaz propria adres
- sclavul recepioneaz adresa general (general call) dac bitul GC=1 (S1ADR.0)
- un octet de date a fost recepionat n timp ce SIO1 este n modul master receptor sau sclav
receptor.
Daca fanionul AA este resetat se va returna un bit NOT_ACK (nivel high pe linia
SDA) atunci cnd un octet de date a fost recepionat n timp ce SIO1 este n modul master
receptor sau sclav receptor.
CR0, CR1 i CR2 stabilesc frecvena semnalului SCL (rata de transfer pe linia serial)
Cei trei bii au semnificaie doar n modul master, deoarece n modul sclav SIO1 se
sincronizeaz cu ceasul generat de master.

Tabelul urmtor prezint ratele de transfer pentru frecvenele de oscilaie de 6MHz, 12MHz
i 16MHz.
Frecventa biti ( kHz ) la Fosc
CR2
CR1
CR0
6 MHz
12 MHz
16 MHz
0
0
0
23
47
63
0
0
1
27
54
71
0
1
0
31
63
83
0
1
1
37
75
100
1
0
0
6.25
12.5
17
1
0
1
50
100
1
1
0
100
Registrul de stare S1STA
Este un registru SFR pe 8 bii, care poate fi doar citit. Cei mai semnificativi 5 bii
conin codul binar al strii n care se afl SIO1, iar cei mai puin semnificativi 3 bii snt zero.
Exist 26 de stri posibile ale circuitului (din care una, codificat F8H, nu conine informaii
relevante). La intrarea n oricare din celelalte 25 de stari, bitul SI este setat.
Registrul de adres S1ADR
Este un registru SFR pe 8 bii care poate fi citit sau nscris. Coninutul sau este fr
importan cnd SIO1 este n modul master. n modul sclav cei 7 bii mai semnificativi
trebuie ncrcai cu adresa proprie a microcontrolerului.
Dac bitul cel mai puin semnificativ, notat GC este setat, microcontrolerul va
recunoate pe lnga adresa proprie i o adres general, codat cu 0.
Registrul de date S1DAT
Este un registru SFR pe 8 bii i conine octetul de date care va fi transmis sau care
tocmai a fost recepionat pe linia serial. Data ramne stabil n acest registru att timp ct
SIO1 este ntr-o stare definit i bitul SI este setat.

2.4 Descrierea modurilor de lucru


Descrierea transferurilor de date n fiecare din modurile de lucru utilizeaz
urmtoarele notaii :
S
condiia de START
SLA
adresa sclavului pe 7 bii
R
bitul de sens pentru citire de la sclav (nivel high pe linia SDA)
W
bitul de sens pentru scriere la sclav (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
condiia de STOP
ADR_GEN
adresa general
SLV_N_ADR
modul sclav neadresabil

2.4.1 Modul Master Transmitor


Diagrama de funcionare n modul master transmitator este prezentata n figura 3, iar
descrierea strilor posibile ale SIO1 este prezentat n tabelul 1.
n acest mod un numr de octei de date snt transmii de la un master transmitor
ctre un sclav receptor. nainte de intrarea n acest mod, S1CON trebuie iniializat astfel :
- bitul ENS1=1 pentru validarea SIO1
- biii STA, STO, SI trebuie resetai
- bitul AA poate fi setat sau resetat; dac AA = 0, SIO1 nu va recunoate propria adres,
sau adresa general, n cazul n care un alt dispozitiv devine master pe magistrala. Practic,
SIO1 nu poate trece n acest caz din modul master n modul sclav.
- Biii CR0, CR1, CR2 trebuie pozitionai pentru rata de transfer dorit
Intrarea n modul master se poate face acum prin setarea STA. SIO1 va testa magistrala
2
I C i va genera un START (S) imediat ce aceasta devine liber. Cnd START este generat,
bitul SI este setat i se intr n starea 08H (vezi tabelul 1) n care trebuie ncrcat registrul
S1DAT cu adresa sclavului i bitul de sens (SLA+W). Bitul SI trebuie resetat pentru ca
transferul s continue.
Cnd SLA+W a fost transmis i bitul ACK a fost receptionat, bitul SI este setat din nou, prin
hardware, i un numr de stri n S1STA snt posibile. Acestea snt 18H, 20H sau 38H pentru
modul master i 68H, 78H sau B0H dac modul sclav a fost validat (bitul AA = 1).
Dup un START repetat (starea 10H), SIO1 poate comuta n modul master receptor ncrcnd
registrul S1DAT cu SLA+R.
2.4.2. Modul Master Receptor
Diagrama de funcionare n modul master receptor este prezentat n figura 4, iar
descrierea strilor posibile ale SIO1 este prezentat n tabelul 2.
n acest mod, un numar de octei de date snt recepionati de un master receptor de la
un sclav transmiator. Iniializarea transferului se face la fel ca n modul master transmitor.
Cnd START este generat, bitul SI este setat i se intr n starea 08H (vezi tabelul 2)
n care trebuie ncrcat registrul S1DAT cu adresa sclavului i bitul de sens (SLA+R). Bitul
SI trebuie resetat pentru ca transferul s continue.
Cnd SLA+R a fost transmis i bitul ACK a fost recepionat, bitul SI este setat din nou i un
numr de stri n S1STA snt posibile. Acestea snt 40H, 48H sau 38H pentru modul master i
68H, 78H sau B0H dac modul sclav a fost validat (bitul AA = 1).
Dup un START repetat (starea 10H), SIO1 poate comuta n modul master transmitor
ncrcnd registrul S1DAT cu SLA+W.

2.4.3. Modul Sclav Receptor


Diagrama de functionare n modul sclav receptor este prezentata n figura 5, iar
descrierea strilor posibile ale SIO1 este prezentat n tabelul 3.
n acest mod, un numr de octei de date snt recepionai de la un master transmitor.
Iniializarea transferului se face prin ncrcarea S1ADR i S1CON astfel:
S1ADR se ncarc pe cei 7 bii mai semnificativi cu adresa la care va rspunde cnd va fi
adresat de un master, iar dac bitul mai puin semnificativ GC este setat, sclavul va rspunde
i la adresa general (00H adresa de selecie pentru toate modulele sclav). Daca GC = 0
adresa general este ignorat.

S1CON trebuie iniializat astfel :


- bitul ENS1 =1 pentru validarea SIO1
- biii STA, STO, SI trebuie resetai
- bitul AA trebuie setat pentru ca SIO1 s recunoasc propria adres sau adresa general
- bitii CR0, CR1, CR2 nu au importan n modul sclav
Dup ce S1ADR i S1CON au fost iniializai, SIO1 rmne n ateptare pn cnd este
adresat prin octetul SLA+W de un master transmitor. n continuare bitul SI este setat i un
numr de stri snt posibile (codul lor este n registrul S1STA). n modul sclav receptor se
poate ajunge i din modul master dac SIO1 pierde arbitrarea pentru acces la magistral (vezi
starile 68H i 78H).
Dac bitul AA este resetat n timpul unui transfer, SIO1 va returna un bit NOT_ACK
dup urmtorul octet de date; n continuare SIO1 nu i va mai recunoate propria adres sau
adresa general. Totui, magistrala este monitorizat i revenirea la recunoaterea adreselor
poate fi fcut prin setarea bitului AA (bitul AA poate fi, deci, folosit pentru izolarea
temporar de magistral).
2.4.4. Modul Sclav Transmitor
Diagrama de funcionare n modul sclav transmitor este prezentat n figura 6, iar
descrierea starilor posibile ale SIO1 este prezentata n tabelul 4.
n acest mod, un numr de octei de date snt transmii ctre un master receptor.
Iniializarea transferului se face prin incrcarea S1ADR i S1CON la fel ca n cazul
sclav receptor.
Dup ce S1ADR i S1CON au fost iniializai, SIO1 rmne n ateptare pn cnd este
adresat prin octetul SLA+R de un master receptor. n continuare bitul SI este setat i un
numr de stri snt posibile (codul lor este n registrul S1STA). n modul sclav transmitor se
poate ajunge i din modul master dac SIO1 pierde arbitrarea pentru acces la magistral (vezi
starea B0H).
Dac bitul AA este resetat n timpul unui transfer, SIO1 va transmite un ultim octet de
date dup care va intra n una din strile C0H sau C8H. n continuare SIO1 nu i va mai
recunoate propria adres, sau adresa general, ignornd masterul dac acesta continu
transferul (masterul va recepiona n acest caz valoarea 1 pe linia serial). Totui,
magistrala este monitorizat i revenirea la recunoaterea adreselor poate fi fcut prin
setarea bitului AA.
2.5 Stri nedefinite
Exist dou coduri n registrul S1STA care nu corespund la stri fizice ale SIO1:
S1STA = F8H - codul indic faptul c nu exist informaii relevante deoarece bitul SI
nu a fost nc setat; acest caz apare la trecerea ntre celelalte stri sau cnd SIO1 nu este
implicat ntr-un transfer.
S1STA = 00H - codul indic prezena unei erori de magistral ntr-un transfer serial
(de exemplu o condiie de START sau STOP ntr-o poziie ilegala, perturbaii externe etc).
Cnd apare o astfel de eroare bitul SI este setat. Pentru revenirea n funcionare normal bitul
STO trebuie setat i SI resetat, SIO1 intrnd astfel n modul sclav neadresabil (stare fizic
definit).

3. Indicaii de programare
ntr-o aplicaie, lucrul cu interfaa serial I2C ( SIO1 ) se poate realiza, n principiu, n
dou moduri :
prin interogare (polling) cu ntreruperea serial SIO1 invalidat. n acest caz se testeaz
prin program bitul SI pentru a detecta momentul n care interfaa ajunge ntr-o stare definit
(codul strii se citete din registrul S1STA).
prin ntreruperi. n acest caz programatorul trebuie s scrie o subrutin de tratare a
ntreruperii la care se ajunge automat (prin mecanisme hardware) atunci cnd bitul SI este
setat.
n principiu, un program pentru interfaa serial I2C ar trebui s cuprind o funcie de
iniializare a interfeei, cte o funcie pentru implementarea fiecrui mod de lucru i o funcie de
ntrerupere (dac se lucreaz cu ntreruperi).
Funcia de iniializare trebuie s realizeze programarea S1CON (validare, rata de
transfer, etc).
Funcia care implementeaz un mod de lucru trebuie s realizeze un automat secvenial
cu un numr finit de stri. Ea va cuprinde o bucl de ateptare, n care se testeaz fanionul SI
pn cnd acesta este setat prin hardware, eveniment ce indic trecerea ntr-o nou stare. n
continuare, aciunea ntreprins depinde de codul strii curente din S1STA.
Funcia de tratare a ntreruperii trebuie s realizeze, n principiu, aceleai aciuni
prezentate anterior, adic implementarea modurilor de lucru, cu diferena c nu se mai face
testarea bitului SI, deoarece aceast funcie este apelat automat atunci cnd se schimb starea i
SI este setat.
De regul, aplicaiile pentru microcontrolere se dezvolt, la nivel software, pe un
calculator PC pe care ruleaz un crosscompilator. Acesta genereaz cod obiect care va fi
transportat pe sistemul int, fie printr-o cale de comunicaie serial (RS232), fie prin
nscriere n EPROM.
Compilatorul C pentru microcontrolerul 80552 recunoate numele registrelor SFR i
ale biilor din aceste registre. Ele snt asimilate unor variabile predefinite i pot aprea n
expresii i n instrucii de atribuire. De exemplu:
x = S1STA; sau
while(~SI); sau
SI = 1;
snt instrucii valide.

SLA

08H

DATA

18H

28H

Urmatorul transfer incepe

SLA

cu un START REPETAT
10H

NOT_ACK receptionat dupa

A/

adresa slave
20H

NOT_ACK receptionat dupa

A/

octet de date

La modul
MST/REC

30H

Arbitrare pierduta in timpul


adresei slave sau octet de date

A sau
A/

Alti MST
continua

38H

Arbitrare pierduta si adresare

in continuare ca SLAVE
68H

A sau
A/

Alti MST
continua

38H

Alti MST
continua

78H

80H

La starile corespunzatoare
in modul SLAVE

De la MASTER la SLAVE

De la SLAVE la MASTER

Fig.3. Diagrama strilor n modul master transmitor

SLA

08H

DATA
DATA

40H

50H

DATA

A/

58H

Urmatorul transfer incepe

SLA

cu un START REPETAT
10H

NOT_ACK receptionat dupa

A/

adresa slave
La modul
MST/TRX

48H

Arbitrare pierduta in timpul


adresei slave sau bit ACK

A sau
A/

Alti MST
continua

38H

Arbitrare pierduta si adresare

in continuare ca SLAVE
68H

Alti MST
continua

38H

Alti MST
continua

78H

80H

La starile corespunzatoare
in modul SLAVE

De la MASTER la SLAVE

De la SLAVE la MASTER

Fig.4. Diagrama strilor n modul master receptor

SLA

DATA

60H

DATA

80H

Ultimul octet receptionat

P sau
S

80H

A 0H

A/

P sau
S

este NO T_ACK
88H

Arbitrare pierduta ca
MASTER si adresare
ca SLAVE

A/

68H

Receptie adresa
generala (ADR_GEN)

Adresa
generala

70H

DATA

90H

Ultimul octet receptionat


este NO T_ACK

DATA

P sau
S

90H

A 0H

A/

P sau
S

98H

Arbitrare pierduta ca MASTER


si adresare ca SLAVE prin
ADR_GEN

78H

De la MASTER la SLAVE

De la SLAVE la MASTER

Fig.5. Diagrama strilor n modul Sclav Receptor

SLA

08H

A 8h

Arbitrare pierduta ca MASTER si

DATA
DATA

DATA

B8H

A/

P sau
S

C 0H

adresare in continuare ca SLAVE


B0H

A
Ultimul octet de date transmis
Comuta in modul SLAVE neadresabil
( bitul AA in S1CON este "0" )
De la MASTER la SLAVE

De la SLAVE la MASTER

Fig.6. Diagrama strilor n modul Sclav Transmitor

C 8H

Toti bitii P sau


sunt "1"
S

Tabelul 1. Descrierea strilor n modul Master Transmitor


COD
STARE
08H
10H

18H

20H

28H

30H

38H

STAREA
MAGISTRALEI I2C
SI A INTERFETEI
SIO1
START a fost
transmis
START REP. a fost
transmis

SLA+W a fost
transmis; ACK a
fost receptionat

SLA+W a fost
transmis;
NOT_ACK a fost
receptionat

DATA din S1DAT a


fost transmisa;
ACK a fost
receptionat

DATA din S1DAT a


fost transmisa;
NOT_ACK a fost
receptionat

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

RASPUNS APLICATIE SOFT


S1CON
S1DAT
STA STO
SI
AA
Incarca
SLA+W
Incarca
SLA+W
Incarca
SLA+R

Incarca
DATA
Nu
Nu

1
0

0
1

0
0

X
X

Nu

Incarca
DATA
Nu
Nu

1
0

0
1

0
0

X
X

Nu

Incarca
DATA
Nu
Nu

1
0

0
1

0
0

X
X

Nu

Incarca
DATA
Nu
Nu

1
0

0
1

0
0

X
X

Nu

Nu

Nu

URMATOAREA ACTIUNE A
INTERFETEI SIO1
SLA+W va fi transmis
ACK va fi receptionat
Identic anterior
SLA+W va fi transmis
SIO1 va comuta in modul
MST/REC
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
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
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
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
Magistrala I2C va fi cedata
SIO1 va intra in modul sclav
neadresabil
START va fi transmis cind
magistrala devine libera

Tabelul 2. Descrierea strilor n modul Master Receptor


COD
STARE
08H
10H

STAREA
MAGISTRALEI I2C
SI A INTERFETEI
SIO1
START a fost
transmis
START REP. a fost
transmis

Incarca
SLA+R
Incarca
SLA+R
Incarca
SLA+W

Nu

Nu
Nu

1
0

0
0

0
0

X
0

Nu

SLA+R a fost
transmis;
NOT_ACK a fost
receptionat

Nu
Nu

1
0

0
1

0
0

X
X

Nu

DATA a fost
receptionata; ACK
a fost returnat

Citeste
DATA
Citeste
DATA
Citeste
DATA
Citeste
DATA
Citeste
DATA

38H

Arbitrare pierduta
in NOT_ACK

40H

SLA+R a fost
transmis; ACK a
fost receptionat

48H

50H

58H

RASPUNS APLICATIE SOFT


S1CON
S1DAT
STA STO
SI
AA

DATA a fost
receptionata;
NOT_ACK a fost
returnat

URMATOAREA ACTIUNE A
INTERFETEI SIO1
SLA+R va fi transmis
ACK va fi receptionat
Identic anterior
SLA+W va fi transmis
SIO1 va comuta in modul
MST/TRX
Magistrala I2C va fi cedata
SIO1 va intra in modul sclav
START va fi transmis cind
magistrala devine libera
DATA a fost receptionata
NOT_ACK va fi returnat
DATA a fost receptionata
ACK va fi returnat
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
DATA a fost receptionata
NOT_ACK va fi returnat
DATA a fost receptionata
ACK va fi returnat
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

Tabelul 3. Descrierea strilor n modul Sclav Receptor


COD
STARE
60H

68H

70H

78H

80H

88H

90H

STAREA
MAGISTRALEI I2C
SI A INTERFETEI
SIO1
SLA+W proprie a
fost receptionata;
ACK a fost
returnat
Arbitrare pierduta
in SLA+R/W ca
master; SLA+W
proprie a fost
receptionta; ACK
returnat
ADR_GEN a fost
receptionata; ACK
a fost returnat
Arbitrare pierduta
in SLA+R/W ca
master; ADR_GEN
a fost receptionta;
ACK returnat
Anterior adresat
cu SLA proprie;
DATA a fost
receptionata; ACK
a fost returnat
Anterior adresat
cu SLA proprie;
DATA a fost
receptionata;
NOT_ACK a fost
returnat

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

RASPUNS APLICATIE SOFT


S1CON
S1DAT
STA STO
SI
AA

URMATOAREA ACTIUNE A
INTERFETEI SIO1

Nu

DATA va fi receptionata
NOT_ACK va fi returnat
DATA va fi receptionata
ACK va fi returnat
DATA va fi receptionata
NOT_ACK va fi returnat
DATA va fi receptionata
ACK va fi returnat

Nu

Nu

Nu

Nu

Nu

Nu

Nu

Citeste
DATA
Citeste
DATA

Citeste
DATA

Comuta in modul
SLV_N_ADR; nu recunoaste
SLA proprie sau ADR_GEN

Citeste
DATA

Citeste
DATA

Citeste
DATA

Citeste
DATA
Citeste
DATA

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
DATA va fi receptionata si
NOT_ACK va fi returnat
DATA va fi receptionata si
ACK va fi returnat

DATA va fi receptionata
NOT_ACK va fi returnat
DATA va fi receptionata
ACK va fi returnat
DATA va fi receptionata
NOT_ACK va fi returnat
DATA va fi receptionata
ACK va fi returnat

si
si
si
si

si
si
si
si

DATA va fi receptionata si
NOT_ACK va fi returnat
DATA va fi receptionata si
ACK va fi returnat

98H

A0H

Anterior adresat
cu ADR_GEN;
DATA a fost
receptionata;
NOT_ACK a fost
returnat
STOP sau START
REP. au fost
receptionati

Identic cu
starea
88H

0
0
1
1

0
0
0
0

0
0
0
0

0
1
0
1

Identic cu starea 88H

Nu
Nu
Nu
Nu

0
0
1
1

0
0
0
0

0
0
0
0

0
1
0
1

Identic cu starea 88H

Tabelul 4. Descrierea strilor n modul Sclav Transmitor


COD
STARE
A8H

B0H

B8H

C0H

C8H

STAREA
MAGISTRALEI I2C
SI A INTERFETEI
SIO1
SLA+R proprie a
fost receptionata;
ACK a fost
returnat
Arbitrare pierduta
in SLA+R/W ca
master; SLA+R
proprie a fost
receptionta; ACK
returnat
DATA in S1DAT a
fost transmisa;
ACK a fost
receptionat
DATA in S1DAT a
fost transmisa;
NOT_ACK a fost
receptionat

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

RASPUNS APLICATIE SOFT


S1CON
S1DAT
STA STO
SI
AA
Citeste
DATA
Citeste
DATA
Citeste
DATA
Citeste
DATA

Citeste
DATA
Citeste
DATA
Nu

Nu

Nu

Nu

Nu
Nu
Nu
Nu

0
0
1
1

0
0
0
0

0
0
0
0

0
1
0
1

URMATOAREA ACTIUNE A
INTERFETEI SIO1
Ultima DATA va fi transmisa
si ACK va fi receptionat
DATA va fi transmisa si ACK
va fi receptionat
Ultima DATA va fi transmisa
si ACK va fi receptionat
DATA va fi transmisa si ACK
va fi receptionat

Ultima DATA va fi transmisa


si ACK va fi receptionat
DATA va fi transmisa si ACK
va fi receptionat
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
Identic cu starea C0H

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