Pubblico di destinazione
Questo articolo presuppone che il lettore abbia familiarità con i circuiti e la terminologia dell'elettronica di base.
Introduzione
Lo scopo di questo articolo è familiarizzare il lettore con le basi del bus di comunicazione I2C, compreso il modo in cui è configurato, le sue proprietà fisiche e dove e perché viene spesso utilizzato.
.
I2C
I2C è normalmente pronunciato "I-due-C", sebbene a volte sia anche scritto come IIC (e pronunciato "I-I-C") o IC (pronunciato "I-quadrato-C"). L'acronimo sta per Inter-Integrated-Circuit. È un tipo di bus seriale per computer e protocollo di comunicazione introdotto per la prima volta sul mercato da Philips Semiconductor nel 1982.
I2C è un modo per consentire a più dispositivi elettronici (il più delle volte circuiti integrati periferici a bassa velocità) di comunicare tra loro su una singola coppia di fili. Questi cavi sono anche chiamati linee dati o bus. Il primo di questi bus è la linea dati ed è chiamato SDA (S erial DA ta) e l'altro bus è l'orologio, o SCL (S erial CL ock) linea. Poiché tutti i dispositivi su qualsiasi circuito I2C sono collegati a queste due linee per comunicare, la maggior parte dei dispositivi compatibili con I2C ha pin etichettati SDA e SCL, nonché pin VIN e GND per le connessioni positive e di massa.
.
Tipico schema I2C/con licenza CC BY-SA 3.0
.
Sia l'orologio che i bus dati sono linee di scarico aperte. Affinché il bus funzioni correttamente, è necessario collegare una resistenza tra ciascuna linea e l'alimentazione di tensione positiva del circuito (denominata anche Vcc). Le dimensioni di queste resistenze possono variare, da 1 kΩ fino a 47 kΩ, ma devono essere presenti tra il bus e l'ALTA tensione del sistema. Se non sono presenti, tutte le linee verranno abbassate e il bus I2C non funzionerà. Fortunatamente, è necessaria solo una coppia di resistori (uno per ogni linea) per l'intero sistema, non una coppia per ogni dispositivo, che potrebbe diventare rapidamente disordinato con molti dispositivi.
A questi bus possono essere collegati diversi dispositivi (chiamati anche nodi). Infatti, il numero di dispositivi che possono essere praticamente collegati a qualsiasi circuito I2C è normalmente limitato solo dallo spazio, dalla capacità intrinseca delle linee e dagli indirizzi dei dispositivi collegati. La maggior parte degli esperti concorda sul fatto che questo limite è di circa 1008 dispositivi.
Esistono due tipi di dispositivi nelle comunicazioni I2C:master e slave. Nella maggior parte delle implementazioni del protocollo è presente un dispositivo master collegato a molti slave. È possibile avere più di un master che comunica con vari dispositivi slave e altri master, ma questa forma è meno comune ed è un po' oltre lo scopo di questa introduzione. Molti dispositivi I2C possono essere configurati come master o slave, a seconda dei risultati di sistema desiderati. Il nodo master è l'unico dispositivo che controlla la linea dell'orologio (SCL) ed è l'unico dispositivo che può avviare un trasferimento di dati. I nodi slave sono limitati all'ascolto e alla risposta alle chiamate dal nodo master. Ogni nodo, incluso il master, ha un indirizzo univoco (normalmente a 7 bit) che lo identifica sulla rete I2C. In alcuni casi l'indirizzo può avere una lunghezza di 10 bit, consentendo più di 128 dispositivi diversi, ma questa non è una configurazione normale.
Durante il funzionamento di un sistema I2C, il nodo master invia comandi e richieste sulla linea dati. Questi segnali hanno una lunghezza di 8 bit, vengono avviati solo quando la linea di clock è ALTA e vengono avviati con una particolare sequenza di "avvio" e terminati con una particolare sequenza di "arresto". La sequenza di avvio avverte tutti i nodi slave collegati che una richiesta di trasferimento dati è imminente. La sequenza successiva che il master invia è l'indirizzo dello slave con cui vuole comunicare. Il nodo slave nominato risponde quindi al master, a partire dal successivo segnale di clock HIGH, e gli altri slave tornano in attesa per la chiamata del loro indirizzo.
L'ottavo bit inviato con il comando, dopo l'indirizzo del dispositivo a 7 bit, è un semplice bit di lettura/scrittura. Indica al dispositivo indirizzato se il dispositivo master leggerà o scriverà su di esso. Ciò consente al dispositivo ricevente di preparare i dati da inviare o di prepararsi a ricevere i dati lungo la linea SDA al successivo segnale di clock HIGH.
La velocità di clock (e i trasferimenti di segnale associati) sulla maggior parte dei circuiti I2C normalmente rientra tra le comunicazioni seriali e le velocità SPI, tra 100 kHz e 400 kHz. I2C è comunemente usato nei sistemi in cui semplicità, basso costo e bassa potenza sono più importanti della velocità. Alcune di queste applicazioni includono convertitori da analogico a digitale, display LCD, orologi in tempo reale e molti sensori diversi come barometri, bussole e persino ricevitori GPS.
I2C è un protocollo di comunicazione molto utile, sebbene possa essere applicabile solo a un numero limitato di applicazioni. È ideale per piccole impostazioni a basso consumo energetico e, di conseguenza, ha trovato un seguito tra molti hobbisti, che lo utilizzano per interfacciare sensori e controlli con dispositivi embedded e microcontrollori come Arduino e Raspberry Pi. Due dei pin GPIO di Pi sono preimpostati per interfacciarsi con i dispositivi che utilizzano il protocollo e la libreria di cavi Arduino consente le comunicazioni con i dispositivi I2C. L'apprendimento e l'utilizzo di I2C possono estendere in modo significativo il kit di strumenti di un hobbista quando si tratta di creare progetti.
Atlantic.Net
Atlantic.net offre hosting VPS e servizi di hosting gestito che includono un livello di servizi gestiti business-essential ai tuoi pacchetti di hosting. Contattaci oggi per ulteriori informazioni.