Panoramica e vantaggi del bus I2C
Sviluppato da Philips negli anni '80, I2C (in alternativa I2C) è diventato uno dei protocolli di comunicazione seriale più comunemente usati in elettronica. I2C facilita la comunicazione tra componenti elettronici o integrati circuiti, se i componenti sono sullo stesso PCB o collegato con un cavo.

Che cos'è il protocollo I2C?
I2C è un protocollo di comunicazione seriale che richiede solo due linee di segnale. È stato progettato per la comunicazione tra chip su un circuito stampato (PCB). I2C è stato originariamente progettato per 100 Kbps comunicazione. Tuttavia, nel corso degli anni sono state sviluppate modalità di trasmissione dati più veloci per raggiungere velocità fino a 3,4 Mbit.
La caratteristica fondamentale di I2C è la capacità di avere molti componenti su un singolo bus di comunicazione con solo due fili, il che rende I2C perfetto per applicazioni semplici. Il protocollo I2C è stato stabilito come standard ufficiale, consentendo la retrocompatibilità tra le implementazioni I2C.
Segnali I2C
Il protocollo I2C utilizza due linee di segnale bidirezionali per comunicare con i dispositivi sul bus di comunicazione. I due segnali utilizzati sono:
- Linea dati seriale (SDL)
- Serial Data Clock (SDC)
Il motivo per cui I2C può utilizzare solo due segnali per comunicare con diverse periferiche è nel modo in cui viene gestita la comunicazione lungo il bus. Ogni comunicazione I2C inizia con un 7-po (o 10-bit) che richiama l'indirizzo della periferica.
Ciò consente a più dispositivi sul bus I2C di svolgere il ruolo di dispositivo principale in base alle esigenze del sistema. Per prevenire le collisioni di comunicazione, il protocollo I2C include capacità di arbitraggio e rilevamento delle collisioni, che consentono una comunicazione fluida lungo il bus.
Benefici di I2C
Come protocollo di comunicazione, I2C presenta i seguenti vantaggi:
- Velocità di trasmissione dati flessibili.
- Comunicazione a distanza più lunga di SPI.
- Ogni dispositivo sul bus è indirizzabile in modo indipendente.
- I dispositivi hanno una semplice relazione primaria/secondaria.
- Richiede solo due linee di segnale.
- È in grado di gestire più comunicazioni primarie fornendo arbitraggio e rilevamento delle collisioni di comunicazione.
Limitazioni di I2C
Con tutti questi vantaggi, I2C ha anche alcune limitazioni che potrebbero dover essere progettate intorno. Le limitazioni più importanti di I2C includono:
- Poiché per l'indirizzamento dei dispositivi sono disponibili solo 7 bit (o 10 bit), i dispositivi sullo stesso bus possono condividere lo stesso indirizzo. Alcuni dispositivi possono configurare gli ultimi bit dell'indirizzo, ma ciò impone una limitazione dei dispositivi sullo stesso bus.
- Sono disponibili solo poche velocità di comunicazione limitate e molti dispositivi non supportano la trasmissione a velocità più elevate. È necessario un supporto parziale per ciascuna velocità sul bus per impedire ai dispositivi più lenti di rilevare trasmissioni parziali che potrebbero causare problemi operativi.
- La natura condivisa del bus I2C può comportare il blocco dell'intero bus quando un singolo dispositivo sul bus smette di funzionare. Spegnere e riaccendere il bus può ripristinare il corretto funzionamento.
- Poiché i dispositivi impostano la propria velocità di comunicazione, i dispositivi operativi più lenti possono ritardare il funzionamento dei dispositivi più veloci.
- I2C assorbe più energia di altri bus di comunicazione seriale a causa della topologia open-drain delle linee di comunicazione.
- Le limitazioni del bus I2C in genere limitano il numero di dispositivi su un bus a circa una dozzina.
Applicazioni I2C
I2C è un'ottima opzione per le applicazioni che richiedono un'implementazione semplice e a basso costo piuttosto che un'alta velocità. Ad esempio, gli usi comuni del protocollo di comunicazione I2C includono:
- Lettura di alcuni circuiti integrati di memoria.
- Accesso a DAC e ADC.
- Trasmissione e controllo delle azioni dirette dall'utente.
- Lettura dei sensori hardware.
- Comunicazione con più microcontrollori.