Tutorials - Elettronica

 
 

I2C



Architetture basate su I2C

Da quanto detto finora, si evidenzia che I2C ha potenzialità notevoli per la creazione di sistemi articolati, con gestioni basate su messaggi, con possibilità di auto configurazione, hot swap, remote management, shutdown, restart e power control per la gestione intelligente di piattaforme hardware negli ambiti più svariati. Ad esempio:

 


PRO  I2C

  • Richiede solo due pin e due linee fisiche
  • La selezione dei dispositivi non richiede chip select, ma indirizzi inviati sul bus
  • Protocollo con handshake (condizioni) per controllare il flusso dei dati, lo stato delle periferiche e gli errori di trasmissione
  • Struttura multi-Master
  • Facile aggiunta di dispositivi, semplicemente "appesi" al bus
  • Clock sincrono ai dati e quindi che non richiede elevata precisione
  • Ampia disponibilità di accessori come buffer, multiplexer, remoters che consento di elaborare bus con topologie e funzioni molto complesse

CONTRO I2C

  • Trasmissione in half-duplex, appesantita dalla necessità di trasmettere indirizzi e dalle condizioni 
  • Trasferimento limitato ad 8 bit
  • Bus con consumo anche sensibile, causato dai pull-up
  • Velocità di trasmissione non elevata (400 kHz tipico) 
  • I dispositivi sono piuttosto complessi per supportare il protocollo
  • I segnali sono bidirezionali: buffering e separazione galvanica sono meno semplici che nel caso di linee mono direzionali

Per un confronto con SPI:

  SPI I2C Note
Topografia master + slave multi master + slave I2C è un protocollo multi-Master nativo
Conduttori 3-4 (+n) 2

I2C richiede solo due conduttori, qualsiasi sia il numero delle periferiche

Trasmissione full duplex half duplex

SPI usa linee separate per trasmissione e ricezione e consente clock di frequenza maggiore

Velocità di trasmissione alta medio-bassa
Periferiche utili limitate molte

In I2C la quantità di Slave collegabili dipende dalla disponibilità di indirizzi

Selezione delle periferiche chip select indirizzi
Protocollo semplice complesso

I2C utilizza pacchetti con priorità, sistemi di arbitraggio del bus, indirizzi di selezione delle periferiche, ecc.

Emulabile software facilmente non semplice

SPI non ha un protocollo vero e proprio e si presta bene all' emulazione softwarei anche su microcontroller privi di moduli dedicati alla comunicazione sincrona

Gestione del clock solo dal Master da ogni Master La linea di clock di I2C è bidirezionale
Buffering delle linee semplice complesso SPI ha linee mono direzionali. 
I2C ha linee bi direzionali
Isolamento galvanico

Come abbiamo visto, un tipico modulo di comunicazione seriale sincrona integrato in un microcontroller non è una opzione trascurabile, ma un elemento di grande utilità nella gestione delle comunicazioni sincrone; seppure esse siano emulabili da software, il modulo dedicato consente operazioni più semplici, gestioni sia in polling che in interrupt (indispensabili queste per applicazioni ad alta velocità o con più task attive) oltre alla possibilità di modificare con semplici comandi il modo di funzionamento e ottenere risultati che sarebbero assai difficili da ottenere da una emulazione.
Questa utilità è più evidente per I2C, che presenta maggiori problematiche a causa del protocollo più complesso, ma anche in SPI offre soluzioni che una emulazione sarebbero quanto mai complicate, come il full duplex.

Si deve considerare però, che un modulo può gestire un solo modo di comunicazione per volta, dato che, in generale, fa capo agli stessi pin di I/O e che i due bus non sono compatibili tra di loro. Quindi, dovendo disporre di una comunicazione I2C e SPI contemporaneamente, occorrerà scegliere un microcontroller con due o più moduli integrati. Anche se potrà essere fattibile a volte utilizzare il modulo integrato per I2C ed emulare SPI via software. 

In tutti i casi, la scelta di uno o dell' altro dipenderà in modo significativo dalle periferiche che si devono collegare, anche se attualmente il mercato offre una scelta molto ampia per cui si trovano sia in SPI che in I2C molte funzioni analoghe.
Inoltre  sarà scelto in tutti i casi in cui si voglia implementare un bus con prestazioni quali auto configurazione, hot swap, remote management, shutdown, restart, power control e, in generale, funzioni che il semplice protocollo di SPI non è in grado di supportare.


Copyright © afg. Tutti i diritti riservati.
Aggiornato il 11/01/12.