Bus I²C (circuito integrato)
All'inizio degli anni '80 Philips ha sviluppato il bus dati seriale I2C per controllare facilmente i diversi chip di un televisore . L'I2C è progettato come un bus master-slave. Un trasferimento di dati viene sempre avviato da un master, lo slave a cui viene indirizzato un indirizzo reagisce. Grazie al suo concetto semplice e all'implementazione di successo, l'I2C è diventato uno standard. Oggi più di 1.000 circuiti integrati di oltre 50 produttori utilizzano la tecnologia I2C.
Come funziona il bus I2C
Il protocollo di comunicazione I²C utilizza solo due linee bidirezionali open-collector o open-drain, la Serial Data Line (SDA) e la Serial Clock Line (SCL), che vengono tirate su con delle resistenze. Tradizionalmente, le tensioni tipiche utilizzate erano +5 V o +3,3 V; tuttavia, recentemente sono diventate più comuni +2,5 V, +1,8 V e +1,2 V.
Esempio di implementazione I2C
Indipendentemente dal numero di unità slave collegate al bus I2C, solo due segnali sono collegati a tutte. Di conseguenza, c'è un sovraccarico aggiuntivo in quanto è necessario un meccanismo di indirizzamento per consentire all'unità master di comunicare con una particolare unità slave.
Poiché la comunicazione avviene su due soli fili, tutte le unità devono avere un indirizzo univoco che le identifichi sul bus. I dispositivi slave hanno un indirizzo predefinito, ma i bit inferiori dell'indirizzo possono essere assegnati per consentire la presenza di più dispositivi sullo stesso bus.
L'avvento dell'Internet delle cose ("IOT"), unito al basso numero di pin della comunicazione seriale I2C, ha portato a una rinascita dell'uso dell'I2C. le applicazioni più comuni sono la gestione dei dati seriali, tra cui il trasferimento di dati seriali da e verso i sensori, la programmazione di EEPROM e il recupero dei dati dei sensori in fase di polling/ricezione.
Teoria del funzionamento
I2C ha un protocollo master/slave. Il master avvia la comunicazione. La sequenza degli eventi è la seguente:
L'unità master emette una condizione di avvio. Questa condizione istruisce tutti i dispositivi slave a cercare istruzioni sulla linea dati seriale.
Il dispositivo master invia l'indirizzo del dispositivo slave di destinazione e un flag di lettura/scrittura.
Il dispositivo slave con l'indirizzo corrispondente risponde con un segnale di conferma.
La comunicazione continua tra il master e lo slave sul bus dati. Sia il master che lo slave possono ricevere o inviare dati, a seconda che si tratti di una comunicazione in lettura o in scrittura. Il mittente invia dati a 8 bit al destinatario, che risponde con un segnale di conferma a 1 bit.
Quando la comunicazione è completa, il master emette una condizione di stop che indica che tutto è finito.
Protocollo di comunicazione I2C
Dato che ci sono solo due fili, questo protocollo include l'overhead aggiuntivo di un meccanismo di indirizzamento e di un meccanismo di riconoscimento
Caratteristiche
I2C ha molte caratteristiche importanti che vale la pena menzionare. Supporta diverse velocità di trasmissione dei dati: Modalità standard (100 kbps), modalità veloce (400 kbps), modalità veloce plus, modalità ad alta velocità (3,4 Mbit/s) e modalità ultra veloce (5,0 Mbit/s) della comunicazione I2C.
Altre funzioni includono:
- Rilevamento delle collisioni integrato
- indirizzamento a 10 bit
- Supporto multi-master
- Trasmissione dati (chiamata generale).
Vantaggi e svantaggi
Poiché sono necessari solo due fili, l'I2C è adatto alle schede con molti dispositivi collegati al bus. Questo aiuta a ridurre il costo e la complessità del circuito quando si aggiungono altri dispositivi al sistema.
A causa della presenza di due soli fili, c'è un'ulteriore complessità nella gestione dell'overhead di indirizzamento e riconoscimento. Questo può essere inefficiente in configurazioni semplici e si può preferire un'interfaccia di connessione diretta come l'SPI.
panoramica degli strumenti di sviluppo I2C
Confronto tra modelli I2C | ||||
---|---|---|---|---|
Codice prodotto | TP240141 | TP500110 | TP500110 | TP320121 |
Protocolli supportati | I2C | I2C | I2C | I2C, MDIO, SPI-Singolo I/O |
Funzione | Scheda host master/slave | Scheda host master/slave | Scheda host master/slave | Monitoraggio del bus in tempo reale |
Velocità di clock del master | 800 kHz | 1 MHz | 3.4 MHz | 24 MHz |
Velocità di clock slave | 800 kHz | 1 MHz | 3.4 MHz | 24 MHz |
Selezione chip/slave | 1 | N/D | N/D | Selezione slave del monitor 1 |
Capacità slave | <=6 | Avanzato | Ultra | N.D.T |
Livello di tensione (V) | 3.3-5V | 0.9-3,45 V, 5 V | 0.9-3,45 V, 5 V | 3.3-5V |
Potenza target | 5 V, 30mA disponibile | 2 indipendenti, 1 programmabile, (0,9-3,45 V), 1 commutabile (3,3-5V) 200mA disponibili | 2 indipendenti, 1 programmabile, (0,9-3,45 V), 1 commutabile (3,3-5V) 200mA disponibile | 5 V, 30mA disponibile |
Connessione | USB a piena velocità | USB ad alta velocità, Ethernet | USB ad alta velocità, Ethernet | USB ad alta velocità |