Pag 79
-Appendice E:
Protocollo di comunicazione
Inter-Integrated Circuit
Il bus I2C è stato originariamente ideato da Philips per permettere a due o più integrati una comunicazione seriale utilizzando il minimo numero di linee di collegamento.
Il protocollo I2C utilizza un bus seriale bidirezionale composto dalle seguenti linee di connessione:
• SDA (serial data line);
• SCL (serial clock line);
L’interazione tra i dispositivi si realizza attraverso una relazione di tipo MASTER/SLAVE degli stessi. Ad ogni dispositivo Slave è associato un particolare indirizzo.
Si suppone che un integrato (IC1), voglia comunicare con un secondo dispositivo (IC2) e che entrambi siano collegati ad un bus I2C, si osserva che:
1. inizialmente IC1 attende che il bus considerato sia libero (ovvero SDA ed SCL sono entrambe a livello alto);
2. IC1 invia un messaggio di START per informare tutti gli altri dispositivi, collegati al medesimo bus, dell’occupazione dello stesso;
3. tutte le periferiche connesse al canale di comunicazione considerato attendono di conoscere l’indirizzo dell’integrato che deve ricevere o trasmettere dati ad IC1; 4. SCL trasporta il segnale di clock che costituisce il reference time per tutti i
dispositivi connessi al bus I2C, ovvero il tempo in cui ogni bit dati è valido e può essere utilizzato;
5. IC1 invia, sul canale di comunicazione, l’indirizzo binario unico di IC2 in forma seriale;
6. IC1 invia un bit (Read/Write), sul bus, per imporre ad IC2 di trasmettere oppure ricevere dati;
Pag 80
-7. IC2 risponde con un messaggio di tipo ACK ad IC1 per informare quest’ultimo che è pronto a trasmettere/ricevere dati;
8. si vuole sottolineare che IC1 è un IC MASTER, in quanto essi sono gli unici dispositivi in grado di imporre la trasmissione/ricezione dati alle altre periferiche, connesse al canale di comunicazione, dette SLAVE;
9. l’IC trasmittente invia, attraverso il bus I2C, parole da 8 bit ciascuna;
10.l’IC ricevente trasmette un messaggio ACK per informare l’IC trasmittente della corretta ricezione di ogni singola parola;
11.quando il trasferimento dati è concluso, IC1 (ovvero il dispositivo che ha occupato il bus) deve liberare il canale di comunicazione con un messaggio detto di STOP;
Figura 4-15 Sequenza di comunicazione su bus Inter-Integrated Circuit
In figura 4-7 è riportata una sequenza di comunicazione tra due dispositivi connessi ad un bus I2C, in particolare:
•S è il segnale di start;
• lo Slave address è l’indirizzo del dispositivo SLAVE con cui il MASTER vuole comunicare;
• con A si indicano i vari ACK (risposta ad ogni parola da otto bit ricevuta);
• R/W è il messaggio con cui il dispositivo MASTER impone al dispositivo SLAVE di trasmettere oppure ricevere dati sul canale di comunicazione;
• P rappresenta il segnale di STOP.
Si riportano nel seguito alcuni aspetti hardware riguardanti il bus I2C:
•quando un dato o un indirizzo è trasferito sulla linea SDA, questa è abilitata a cambiare livello di tensione solo quando SCL è ad un livello basso;
Pag 81
-• soltanto i segnali di START e di STOP violano la precedente regola;
Figura 4-16 condizioni di START e STOP ed invio dati
•possono comunicare tra loro solo due dispositivi per volta;
•lo SLAVE può sia trasmettere che ricevere dati;
•il bus I2C è MULTI-MASTER, ovvero ha la capacità di ospitare più dispositivi MASTER;
•le due linee (SDA, SCL) del bus sono mantenute a livello alto attraverso l’uso di resistenze di pull-up;
•tutti i dispositivi sono connessi ad un CMOS open-drain che costituisce lo stadio di pilotaggio.
Si evidenzia il fatto che per la realizzazione del nostro sistema è stato utilizzato un solo MASTER per poter ovviare all’aumento della complessità.