Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in...

14
na_Bus I 2 C 1 Corso introduttivo sui microcontrollori A. S. 2007 – 2008 Il Bus I 2 C Vedi anche: BUS I 2 C di Mauro Laurenti [http://www.Laurtec.com] Nicola Amoroso [email protected] http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/ http://www.mrscuole.net/anxapic/

Transcript of Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in...

Page 1: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 1

Corso introduttivo sui microcontrollori

A. S. 2007 – 2008

Il Bus I2CVedi anche: BUS I2C di Mauro Laurenti [http://www.Laurtec.com]

Nicola [email protected]

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 2: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 2

Il Bus I2CIl bus I2C permette una alta velocità di comunicazione in standard seriale, con due solelinee, tra più periferiche; il protocollo di comunicazione è stato introdotto dalla Philipsnel 1980 per superare le difficoltà inerenti all'utilizzo di bus paralleli per lacomunicazione tra un'unità di controllo e le varie periferiche.

Un notevole vantaggio dei dispositivi che fanno uso del bus I2C è quello della lorosemplicità d'uso. Infatti tutte le regole del protocollo che bisogna rispettare per unacorretta comunicazione vengono gestite a livello hardware, dunque il progettista non sideve preoccupare di nulla.Nel corso degli anni il protocollo ha subito vari aggiornamenti verso velocità dicomunicazione più elevate, comunque tutte le modifiche apportate hanno rispettato lacompatibilità dall’alto verso il basso, cioè sistemi dell’ultima generazione possonosempre comunicare con quelli precedenti.

La prima versione del bus I2C permette di trasmettere fino a 100Kbit/s (modalità standard).Questa velocità è stata successivamente portata a 400Kbit/s (modalità veloce).Nel 1998 la velocità è stata incrementata fino a 3.4Mbit/s (modalità ad alta velocità).Non necessariamente gli integrati prodotti devono rispettare la modalità ad alta velocità.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 3: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 3

Il Bus I2C

Le periferiche che fanno uso del bus I2C per comunicare con un'unità di controllo sono:memorie, real time clock calendar (PCF8583, DS1302), LCD, potenziometri digitali,convertitori A/D, periferiche generiche per estendere il numero degli ingressi o delleuscite (PCF8574), sensori di temperatura, controllori audio, etc… .

Un altro vantaggio di questo collegamento è quello di poter aggiungere o togliere delleperiferiche dal bus senza influenzare il resto del circuito. Questo si traduce in una facilescalabilità verso l'alto sistema, ovvero si può modificare un sistema aggiungendo nuovecaratteristiche senza dover modificare l'hardware; naturalmente il sw deve essere ingrado di riconoscere nuove perifieriche.

La possibilità di poter collegare più periferiche sullo stesso bus è permesso anche dal bus CAN.Quest'ultimo protocollo è stato ideato e introdotto da BOSCH per operare in ambienti particolarmenterumorosi e in cui si debba raggiungere un elevato grado di sicurezza nella trasmissione dati.Per tali ragioni il CAN bus è ormai accettato come standard in ambito automobilistico, per mettere incomunicazione i vari dispositivi elettronici che sempre più frequentemente vengono installati a bordo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 4: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 4

Il Bus I2CIl Bus I2C è un Bus seriale bidirezionale, solo due (più il segnale di massa GND) sono lelinee di comunicazione che permettono i collegamenti tra i moduli o integrati differenticollegati sullo stesso Bus. Queste due linee prendono il nome di SDA (Serial Data) e SCL(Serial CLock).La linea SDA permette il trasferimento di dati (formato 8 bit), la linea SCL implementala sincronizzazione (temporizzazione) della trasmissione; entrambe le linee devonoessere connesse mediante resistenze di pull-up al positivo (+Vcc – 5 V) di alimentazione.Pur essendoci più periferiche collegate sullo stesso bus, la comunicazione avvienesempre tra due dispositivi per volta e la trasmissione dei dati può avvenire soloquando il bus è pronto (not Busy) per la comunicazione.

Chi trasmette i dati è il trasmettitore (Tx), chi invece li riceve è il ricevitore (Rx);entrambe le posizioni sono intercambiabili per fasi diverse di trasmissione cioè, untrasmettitore può divenire ricevitore e un ricevitore può essere trasmettitore.

Nella transazione è ben definito il device che inizia e termina la comunicazione, viene chiamatoMASTER (Padrone); il device che invece può solo ricevere o trasmettere è invece lo SLAVE(Schiavo).

Non tutte le periferiche possono essere MASTER del Bus I2C (E’ragionevole che un µC lo sia)Sullo stesso Bus possono esserci più MASTER, ma deve essere attivo uno solo per volta.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 5: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 5

Il Bus I2COgni periferica inserita nel bus possiede un indirizzo che la individua in modounivoco. Questo indirizzo può essere fissato dal produttore in sede di fabbricazioneo parzialmente fissato dal progettista.L'indirizzo è costituito da 7 bit nelle versioni standard o da 10 bit nelle versioni estese.Nel caso di indirizzamento a 7 bit si avrebbe potenzialmente la possibilità diindirizzare 128 periferiche mentre nel caso di 10 bit si avrebbe la possibilità diindirizzare fino a 1024 periferiche. Il numero di periferiche ora citate non sonocomunque raggiungibili dal momento che alcuni indirizzi, sono riservati per funzionispeciali.Su un bus non possono essere presenti due integrati dello stesso tipo con lostesso indirizzo.Se proprio si dovesse avere la necessità di inserire due integrati dello stesso tiposul medesimo Bus , o comunque due periferiche con il medesimo indirizzo, è necessariodividere il bus in due parti, questo può, per esempio, essere ottenuto con appositiintegrati-device tipo il PCA9544 della Philips.

Un limite sul numero di device connessi sulla linea è rappresentato dalla capacità totale della linea che non devesuperare i 400 pF altrimenti non è possibile rispettare le velocità limite di trasmissione sulla linea. Il valore dellacapacità totale di linea dipende dal numero di device connessi e dalla lunghezza totale della linea stessa.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 6: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 6

Il Bus I2CAbbiamo già accennato in precedenza che lelinee SDA e SCL devono essere implementatecon uscite “open-drain” o “open-collector”mediante una resistenza di pull-up collegata trala linea e Vcc .SDA e SCL quando non sono utilizzate nellatrasmissione, sono sempre a livello alto.

Valori tipici per le resistenze di pull-up sonocompresi tra 1,2 KΩ e 10 KΩ. Il primo valore èutilizzato per bus medio-veloci (400 Kb/s eoltre) mentre il secondo valore è utilizzato perbus standard (100 Kb/s); in genere si utilizzanovalori resistivi intermedi tra questi due valorilimite a seconda della velocità del bus.

Pull-Up Resistor

Il valore corretto per le resistenze di pull-up dipende comunque oltre che dalla velocitàdi trasmissione anche dalla capacità totale della linea in quanto aumentando questovalore aumenta anche il tempo di risposta (costante di tempo gruppo R-C) nellatransizione H→L del segnale.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 7: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 7

Il Bus I2CCenni sul protocollo di comunicazione

Le linee del bus sono due, la linea SCL fondamentalmente gestisce la temporizzazionedella trasmissione, la linea SDA rappresenta il collegamento per il trasferimento dati.

Ogni bit viene trasferito per ogni impulso di clock.

I dati sulla linea SDA devono restare stabili quando l’impulso sulla linea di clock(SCL) è alto, in questo caso cambiamenti di livello (transizioni) sulla linea SDAvengono interpretati come segnali di controllo.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 8: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 8

Il Bus I2CCenni sul protocollo di comunicazione: condizioni di START e STOP

Entrambe le linee del bus SDA e SCL sono a livello alto (H) quando il bus non è occupato.

Una transizione High to Low [H → L] sulla lineaSDA, quando la linea SCL è High [H], definiscela condizione di START della trasmissione

Una transizione Low to High [L → H] sulla lineaSDA, quando la linea SCL è High [H], definiscela condizione di STOP della trasmissione

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 9: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 9

Il Bus I2CCenni sul protocollo di comunicazione: configurazione del sistema

Una periferica che “genera l’informazione” è il trasmettitore [Tx]; una periferica che“riceve l’informazione” è il ricevitore [Rx].

La periferica che controlla (mediante la temporizzazione) la trasmissione è il MASTER;la periferica che dialoga ed è controllata dal MASTER è lo SLAVE.

Vi sono periferiche che possono essere sia MASTER che SLAVE (es.microControllori) e vi sono periferiche che possono funzionare solo da SLAVE (es.memorie eeprom).

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 10: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 10

Il Bus I2CCenni sul protocollo di comunicazione: indirizzo del device con cui si vuol comunicare

Prima di trasmettere qualsiasi “data” sul bus bisogna definire la periferica con cui si vuol colloquiare.L’indirizzo della periferica viene inviato dal MASTER dopo la transizione di START.Il formato dell’indirizzo può essere sia a 7 bit che a 10 bit, per semplicità consideriamo ilformato a 7 bit.I 7 bit dell'indirizzo vengono inviati dal bit più significativo al bit meno significativo. In coda a questoindirizzo viene aggiunto un bit per segnalare se il Master vuole intraprendere, con la periferica individuatada tale indirizzo, una comunicazione di scrittura o di lettura.

periferica di indirizzo 0xC0

“C0” per scrittura sulla periferica

“C1” per lettura dalla periferica

1 1 0 0 0 0 0 0

1 1 0 0 0 0 0 1

In particolare se tale bit è 0 vuol dire che il Master vuolescrivere sulla periferica, se il bit è 1 vuol dire che il Mastervuole leggere della periferica.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 11: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 11

Il Bus I2CCenni sul protocollo di comunicazione: indirizzo del device con cui si vuol comunicare

L'invio dell'indirizzo a 7 bit e della modalità del colloquio (lettura/scrittura), avviene grazie ad ottotransizioni H → L della linea SCL. Al nono impulso della linea SCL il Master si aspetta una rispostadi un bit da parte della periferica che ha chiamato .La risposta della periferica chiamata consiste nel mantenere a livello basso la linea SDA, per ladurata di un ciclo SCL. In gergo si dice che il Master attende l'Acknowledge da parte dellaperiferica chiamata.

Una sola periferica risponderà alla chiamata del Master

Qualora la periferica non sia presente il Master libera il bus permettendo ad eventualialtri Master di prenderne il controllo.

Dopo l'avvenuto riconoscimento, avviene lo scambio dei dati verso la periferica, nelcaso di scrittura, o dalla periferica al Master, in caso di lettura. In unacomunicazione si possono avere sia fasi di scrittura che di lettura.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 12: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 12

Il Bus I2CCenni sul protocollo di comunicazione: acknowledge (riconoscimento)

I bytes scambiati tra il trasmettitore e il ricevitore possono essere illimitati tra una condizione diSTART e una di STOP di una trasmissione.Ogni byte trasmesso deve essere seguito da un bit di “riconoscimento” (acknowledge) da partedella periferica che ha ricevuto il byte.

Se lo SLAVE sta inviando un byte al MASTER [lettura] si aspetta che quest'ultimo invii unbit di “riconoscimento” dopo aver ricevuto il byte; nel caso di ultimo byte di lettura ilsegnale di “riconoscimento” non viene generato dal MASTER, la linea SDA viene lasciato alivello H e chi trasmette non invia più dati in modo tale che il MASTER può generare lacondizione di STOP cioè, fine trasmissone.

La mancanza dell'Acknowledge determina un errore di comunicazione

In particolare se il MASTERinvia un byte allo SLAVE siaspetta, dopo l'ottavo bit,un bit basso sulla linea SDA.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 13: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 13

Il Bus I2CCenni sul protocollo di comunicazione: le fasi della comunicazione

MASTER Tx in scrittura (multipla) dopo aver scritto la “prima” locazione di memoria, nel “device” SLAVE Rx indirizzato, da cui iniziare

S Condizione di START

P Condizione di STOP

A questo punto MASTER Txdiviene MASTER Rx mentreSLAVE Rx diviene SLAVE Tx

Dopo aver letto l’ultimo byte il MASTER lascia a livello “H” la linea SDA in modo che lo SLAVE non “invia” nuovi dati e

il MASTER può definire la condizione di STOP

S Condizione di START

P Condizione di STOP

MASTER in lettura (multipla) dopo aver scritto la “prima” locazione di memoria, nel “device “ indirizzato, da cui iniziare a leggere i dati

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

Page 14: Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard seriale, con due sole linee, tra più periferiche; il protocollo di comunicazione

na_Bus I2C 14

Il Bus I2CCenni sul protocollo di comunicazione: le fasi della comunicazione

MASTER Rx in lettura (multipla) dal “device” SLAVE Tx indirizzato. La lettura“inizia” dalla prima locazione di memoria dello SLAVE

S Condizione di START

P Condizione di STOP

Dopo aver letto l’ultimo byte il MASTER Rxlascia a livello “H” la linea SDA in modo che lo SLAVE Tx non “invia” nuovi dati e il MASTER

può definire la condizione di STOP

=> => => => => ConclusioniLe potenzialità dell'interfaccia I2C consistono nel fatto di poter disporre di una larga varietà di dispositivi chepossiedono al loro interno l'hardware necessario per la gestione automatica del protocollo. Unicacomplicazione potrebbe essere la gestione dell'hardware da parte del microcontrollore.Per poter utilizzare l'hardware I2C interno al microcontrollore, è comunque necessaria una fase diinizializzazione, le procedure che si realizzano, possono poi essere riutilizzate in altre applicazioni, passandoper questo problema una sola volta.Per i microcontrollori della Microchip è presente il tool gratuito Maestro, che mette a disposizione ungran numero di funzioni, gia definite, utilizzabili in questo e in altri casi.Nel caso si programmi i microcontrollori con linguaggi ad alto livello, si hanno generalmente già disponibili lefunzioni per la gestione del bus I2C.

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/

http://www.mrscuole.net/anxapic/