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.
|