Comunicazioni fra sistemi: superare i limiti dell’I2C

Il sistema di comunicazione I2C è ormai diventato uno standard mondiale implementato nella stragrande maggioranza degli IC. Data la versatilità, molte aziende si sono basate su questo protocollo, derivandone un bus di comunicazione da inserire nelle più varie architetture di controllo, come System Management Bus (SMBus), Power Management Bus (PMBus), Intelligent Platform Management Interface (IPMI), Display Data Channel (DDC) o Advanced Telecom Computing Architecture (ATCA). Il punto di forza dell’I2C sta nel riuscire a legare in maniera semplice ed efficiente vari progetti fra loro. Pensando a sistemi di telecomunicazione, elettronica industriale, elettronica consumer, ci si accorge che si hanno quasi sempre elementi intelligenti (di solito microcontroller), elementi general purpose come LCD, porte I/O remote, convertitori A/D D/A, e altri IC che dovranno comunicare fra loro. I2C risolve facilmente il problema tramite due semplici connessioni, e nessuna altra circuiteria esterna.

Introduzione

L’I2C è molto economico sulle linee utilizzate: ha bisogno di un bus composto da

  • SDA (Serial DAta), linea su cui viaggiano i dati
  • SCL (Serial CLock), linea su cui viaggia il clock che sincronizza tutte le operazioni

Entrambe le linee sono bidirezionali, e sono connesse ad una alimentazione tramite un resistore di pull-up, o un generatore di corrente (generalmente un transistor). L’alimentazione non ha un valore fissato, può essere decisa a posteriori in funzione dell’applicazione, in quanto i valori logici alto e basso non sono definiti da quantità prefissate, ma si interpreta 1 logico un valore di tensione superiore al 70% dell’alimentazione, e 0 logico un valore più piccolo del 30% dell’alimentazione. Quando le linee sono libere, il loro stato logico è 1 (alto).  Più device possono essere contemporaneamente connessi alle due linee, ed ognuno ha un indirizzo univoco che lo identifica. Ogni elemento collegato può operare da ricevitore di informazioni, o da trasmettitore se ne ha la capacità (gran parte degli schermi LCD possono funzionare da soli ricevitori, una memoria ad accesso casuale ha invece necessità di lavorare in entrambi i sensi). Il sistema I2C è stato costruito per essere multimaster: oltre alla direzionalità dei dati, si deve quindi anche considerare che un device può essere sia master della linea che slave. Per definizione, il master è il device che inizia la comunicazione sul bus, generando il clock necessario alla sincronizzazione (l’intero protocollo è sincrono). Data la possibilità che più elementi vogliano iniziare un trasferimento allo stesso istante (pretendendo di essere master contemporaneamente), il protocollo prevede anche un sistema di arbitraggio (tramite logica inclusa nell’interfaccia I2C) che decide automaticamente lo stato dei device in caso di conflitto. I vari device inoltre, devono essere connessi alle linee in open-drain (o open-collector), per utilizzare queste funzioni di arbitraggio. Deciso il master, in una trasmissione possono esserci 4 casi possibili:

  1. Master trasmettitore – il master genera il clock, seleziona il device a cui invierà i dati tramite il suo indirizzo, successivamente invia i dati.
  2. Master ricevente - il master genera il clock, e riceve i dati dallo slave (sincroni al master clock).
  3. Slave trasmettitore – lo slave riceve il master clock con cui si sincronizza, e invia i dati al master.
  4. Slave ricevente – lo slave riceve sia il master clock sia i dati.

La prima revisione del bus, prevedeva una trasmissione con frequenza massima di 100kbit/s; nelle revisioni successive queste prestazioni sono state migliorate, anche grazie ad architetture interne più efficienti, e ad oggi si hanno 5 categorie di trasmissione a velocità diverse, 4 bidirezionali, e 1 unidirezionale.

Bidirezionali:

  • Standard Mode (SM): trasmissione massima 100 kbit/s.
  • Fast Mode (FM): trasmissione massima 400 kbit/s.
  • Fast Mode Plus (FM+): trasmissione massima 1Mbit/s.
  • High speed Mode (HsM): trasmissione massima 3.4Mbit/s.

Unidirezionale:

  • Ultra Fast Mode (UFM): trasmissione massima 5 Mbit/s.

Per rispettare questi vincoli, si hanno dei limiti nelle lunghezze massime del bus, e anche i resistori di pull-up devono essere opportunamente dimensionati. Come si vede dalla tabella 1 (dati presentati da NXP semiconductor, sull’attuale documento ufficiale), si hanno [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2447 parole ed è riservato agli abbonati PREMIUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici PREMIUM e potrai fare il download (PDF) dell'EOS-Book e Firmware del mese. ABBONATI ORA con PAYPAL è semplice e sicuro.

Abbonati alle riviste di elettronica

2 Commenti

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 9 febbraio 2017
  2. Doc77 Doc77 13 febbraio 2017

Scrivi un commento

ESPertino è la nuova scheda per IoT compatibile ARDUINO.
Scopri come averla GRATIS!