GNU/Linux >> Linux Esercitazione >  >> Linux

Che cos'è I2C (circuito inter-integrato)?

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.


Linux
  1. Che cos'è un utente Linux?

  2. Che cos'è un amministratore di sistema?

  3. Cosa fa "lc_all=c"?

  4. Cos'è il RAID?

  5. Cos'è un file .so.2?

Cos'è l'SFTP?

Come trovare quali dispositivi sono collegati alla rete in Linux

Cosa sta arrivando in GNOME 42?

Cos'è l'analfabetismo digitale?

Cos'è Termux su Android?

Cos'è un file .sh?