Sei sulla pagina 1di 2

I²C, acronimo di Inter Integrated Circuit (pronuncia i-quadro-ci o i-due-ci), un sistema di

comunicazione seriale bifilare utilizzato tra circuiti integrati.


Il classico bus I²C è composto da almeno un master ed uno slave (letteralmente "capo, padrone" e
"sottoposto, schiavo").
La situazione più frequente vede un singolo master e più slave; possono tuttavia essere usate
architetture multimaster e multislave in sistemi più complessi.
Il bus è stato sviluppato dalla Philips [1] nel 1982 e dopo la realizzazione di centinaia di
componenti e sistemi negli anni '80, nel 1992 è stato rilasciata la prima versione del protocollo [2]
che ha subìto diversi aggiornamenti ed ha generato bus simili, uno dei quali (SMBUS) per motivi
squisitamente commerciali, di brevetto Intel, nel 1995.
Di fatto i due standard si assomigliano in molti aspetti quali l'arbitrazione del bus (cioè la scelta nel
caso di più possibili master di quale dispositivo debba assumere questa funzione di controllo del
bus), l'alta impedenza (3state) in condizione di rilascio bus, il sistema di indirizzamento ed il
protocollo ACK/NACK (vi sono però differenze da tenere presenti.[3]).

Dettagli [modifica]

Esempio di dispositivi collegati mediante I2C bus (due microcontrollori: uno con la funzione di
master ed uno di slave, un ADC ed un DAC). Notare la presenza dei resistori Rp di pull-up. Non è
indicata la linea comune di riferimento (indispensabile)
Il protocollo hardware dell'I2C richiede due linee seriali di comunicazione:
• SDA (Serial DAta line) per i dati
• SCL (Serial Clock Line) per il clock (per la presenza di questo segnale l'I2C è un bus
sincrono)
Va aggiunta una connessione di riferimento detta, talvolta impropriamente, GND (non visualizzata
in figura) e una linea di alimentazione Vdd a cui sono connessi i resistori di pull-up che può anche
non essere condivisa da tutti i dispositivi (le tensioni tipiche usate sono +5 V o +3,3 V anche se
sono ammesse tensioni più basse o più alte). Esistono esempi di architetture più complete[5].

Temporizzazione dei segnali [modifica]

Esempio di trasferimento dati:


S è lo START bit (la linea SDA viene forzata bassa dal master mentre il clock SCL è a livello logico
alto). Segue, quando SCL è basso il settaggio del primo bit B1 (in blu) la commutazione di SCL
indica che il dato è stabile e può essere letto (verde). La stessa procedura prosegue fino all'ultimo
bit BN. La transazione termina con lo STOP bit (P) in giallo in cui SDA viene commutato da basso
ad alto quando SCL è alto
.
L'I2C ha 7 bit di indirizzo (B1 è il bit più significativo, B7 il meno significativo) e quindi 128
possibili indirizzi diversi (detti nodi). Di questi però 16 sono riservati quindi i dispositivi che
possono essere collegati sullo stesso bus sono al massimo 112. Le velocità di trasmissione nel modo
standard sono di 100 kbit/s e 10 kbit/s velocità del low-speed mode ma nulla impedisce di scendere
a velocità più basse.
Revisioni del I2C hanno introdotto dispositivi con velocità di 400 kbit/s (detto fast mode e 3,4
Mbit/s detto High Speed mode). Anche le possibilità di indirizzamento di dispositivi sono state
ampliate a 10 bit.
Il massimo numero di nodi oltre ad essere limitato dal numero di indirizzi possibili diversi è
limitato dalle capacità parassite introdotte da ciascun dispositivo. La capacità totale presentata da
SDA e da SCL deve essere limitata a 400 pF (i resistori di pull-up dovranno essere dimensionati su
questo dato, cioè la massima capacità dovuta alla somma dei dispositivi connessi, oltre al limite
della corrente che ogni dispositivo può assorbire al livello logico basso).

Potrebbero piacerti anche