I2C-Protocol-header

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.

Beispiel_fuer_implentation_I2C_Bus

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.

i2c-protocol

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

Aardvark-I2C-Host-adapter-small
Adattatore I2C/SPI Aardvark

Promira I2C/SPI/eSPI Plattform
Promira I2C livello 1

Promira I2C/SPI/eSPI Plattform
Promira I2C livello 2

beagle i2c/spi protocol analyzer small
Analizzatore di protocollo Beagle I2C/SPI

Codice prodottoTP240141TP500110TP500110TP320121
Protocolli supportatiI2CI2CI2CI2C, MDIO,
SPI-Singolo I/O
FunzioneScheda host master/slaveScheda host master/slaveScheda host master/slaveMonitoraggio del bus in tempo reale
Velocità di clock del master800 kHz1 MHz3.4 MHz24 MHz
Velocità di clock slave800 kHz1 MHz3.4 MHz24 MHz
Selezione chip/slave1N/DN/DSelezione slave del monitor 1
Capacità slave<=6AvanzatoUltraN.D.T
Livello di tensione (V)3.3-5V0.9-3,45 V, 5 V0.9-3,45 V, 5 V3.3-5V
Potenza target5 V, 30mA disponibile2 indipendenti, 1 programmabile, (0,9-3,45 V), 1 commutabile (3,3-5V) 200mA disponibili2 indipendenti, 1 programmabile, (0,9-3,45 V), 1 commutabile (3,3-5V) 200mA disponibile5 V, 30mA disponibile
ConnessioneUSB a piena velocitàUSB ad alta velocità, EthernetUSB ad alta velocità, EthernetUSB ad alta velocità