Tutorial protocollo bus I2C, interfaccia con applicazioni

Prova Il Nostro Strumento Per Eliminare I Problemi





Al giorno d'oggi i protocolli svolgono un ruolo essenziale nel progettazione di sistemi embedded . Senza passare ai protocolli, se si vogliono espandere le funzionalità periferiche del microcontrollore, la complessità e il consumo energetico aumenteranno. Sono disponibili diversi tipi di protocolli bus come USART, SPI, CAN, Protocollo bus I2C , ecc., che vengono utilizzati per trasferire i dati tra due sistemi.

Protocollo I2C

Cos'è il bus I2C?




La trasmissione e la ricezione delle informazioni tra due o più di due dispositivi richiedono un percorso di comunicazione denominato sistema bus. Un bus I2C è un bus seriale bidirezionale a due fili utilizzato per trasportare i dati tra i circuiti integrati. L'I2C sta per 'Inter Integrated Circuit'. È stato introdotto per la prima volta dai semiconduttori Philips nel 1982. Il bus I2C è costituito da tre velocità di trasferimento dati: modalità standard, modalità veloce e modalità alta velocità. Il bus I2C supporta dispositivi con spazio di indirizzi a 7 bit e 10 bit e il suo funzionamento differisce a basse tensioni.

Protocollo bus I2c

Protocollo bus I2c



Linee di segnale I2C

Linee di segnale I2C

Linee di segnale I2C

L'I2C è un protocollo di bus seriale costituito da due linee di segnale come le linee SCL e SDL che vengono utilizzate per comunicare con i dispositivi. SCL sta per una 'linea di clock seriale' e questo segnale è sempre pilotato dal 'dispositivo master'. SDL sta per 'serial data line' e questo segnale è pilotato dalle periferiche master o I2C. Entrambe queste linee SCL e SDL sono in stato di drenaggio aperto quando non c'è trasferimento tra le periferiche I2C.

Uscite a drenaggio aperto


L'open-drain è il concetto per transistor FET in cui il terminale di pozzo del transistore è aperto. I pin SDL e SCL del dispositivo master sono progettati con i transistor in stato aperto, quindi il trasferimento dei dati è possibile solo quando questi transistor sono condotti. Quindi, queste linee o terminali di drenaggio sono collegati a resistenze pull-up complete a VCC per la modalità di conduzione.

Interfacce I2C

Molti i dispositivi slave sono interfacciati al microcontrollore con l'aiuto del bus I2C tramite IC del cambio di livello I2C per il trasferimento delle informazioni tra di loro. Il protocollo I2C utilizzato per collegare un massimo di 128 dispositivi che sono tutti collegati per comunicare con le linee SCL e SDL dell'unità master nonché con i dispositivi slave. Supporta la comunicazione Multimaster, il che significa che due master vengono utilizzati per comunicare i dispositivi esterni.

Velocità di trasferimento dati I2C

Il protocollo I2C opera tre modalità come: modalità veloce, modalità alta velocità e modalità standard in cui la velocità dei dati in modalità standard varia da 0Hz a 100Hz, ei dati in modalità veloce possono essere trasferiti con velocità da 0Hz a 400 KHz e la modalità alta velocità con 10 Da KHz a 100 KHz. I dati a 9 bit vengono inviati per ogni trasferimento in cui 8 bit vengono inviati dal trasmettitore MSB a LSB, e il 9 ° bit è un bit di riconoscimento inviato dal ricevitore.

Velocità di trasferimento dati I2C

Velocità di trasferimento dati I2C

Comunicazione I2C

Il protocollo bus I2C è più comunemente utilizzato nelle comunicazioni master e slave in cui il master è chiamato 'microcontrollore' e lo slave è chiamato altri dispositivi come ADC, EEPROM, DAC e dispositivi simili nel sistema embedded. Il numero di dispositivi slave è collegato al dispositivo master con l'aiuto del bus I2C, in cui ogni slave è costituito da un indirizzo univoco per comunicarlo. I seguenti passaggi vengono utilizzati per comunicare il dispositivo master allo slave:

Passo 1: Innanzitutto, il dispositivo master emette una condizione di avvio per informare tutti i dispositivi slave in modo che ascoltino sulla linea dati seriale.

Passo 2: Il dispositivo master invia l'indirizzo del dispositivo slave di destinazione che viene confrontato con gli indirizzi di tutti i dispositivi slave collegati alle linee SCL e SDL. Se l'indirizzo di qualcuno corrisponde, viene selezionato quel dispositivo e tutti i dispositivi rimanenti vengono scollegati dalle linee SCL e SDL.

Step3: Il dispositivo slave con un indirizzo corrispondente ricevuto dal master, risponde con un riconoscimento al master, dopodiché viene stabilita la comunicazione tra i dispositivi master e slave sul bus dati.

Step4: Sia il master che lo slave ricevono e trasmettono i dati a seconda che la comunicazione sia in lettura o in scrittura.

Step5: Quindi, il master può trasmettere 8 bit di dati al ricevitore che risponde con un riconoscimento di 1 bit.

Tutorial I2C

Trasmettere e ricevere le informazioni passo dopo passo in serie rispetto agli impulsi di clock è chiamato protocollo I2C. È un protocollo inter-sistema ea breve distanza, il che significa che viene utilizzato all'interno del circuito stampato per comunicare i dispositivi master e slave.

Nozioni di base sul protocollo I2C

In generale, il sistema bus I2C è costituito da due fili che vengono utilizzati facilmente per espandere le funzionalità delle periferiche di ingresso e uscita come ADC, EEROM e RTC e altri componenti di base per realizzare un sistema la cui complessità sia molto minore.

Esempio: Poiché il microcontrollore 8051 non ha un ADC integrato, quindi, se vogliamo interfacciare qualsiasi sensore analogico al microcontrollore 8051, dobbiamo utilizzare dispositivi ADC come ADC0804-1 canale ADC, ADC0808- 8 canali ADC, ecc. Usando questi ADC, possiamo interfacciare i sensori analogici al microcontrollore.

Senza utilizzare il protocollo per espandere le funzionalità di I / O di qualsiasi microcontrollore o processore, possiamo passare al dispositivo 8255 ICit a 8 pin. Il Il microcontrollore 8051 è un microcontrollore a 40 pin utilizzando l'IC 8255, possiamo espandere le 3 porte I / O con 8 pin in ciascuna porta. Utilizzando tutti i dispositivi come RTC, ADC, EEPROM, timer, ecc. - per espandere i circuiti periferici - vengono aumentati anche la complessità, il costo, il consumo energetico e le dimensioni del prodotto.

Per superare questo problema, entra in gioco il concetto di protocollo per ridurre la complessità dell'hardware e il consumo energetico. Possiamo espandere un numero maggiore di funzionalità, come periferiche I / 0, ADC, T / C e dispositivi di memoria fino a 128 dispositivi utilizzando questo protocollo I2C.
Terminologia utilizzata nei protocolli I2C

Trasmettitore: Il dispositivo che invia i dati al bus è chiamato trasmettitore.

Ricevitore: Il dispositivo che riceve i dati dal bus è chiamato ricevitore.

Maestro: Il dispositivo che avvia i trasferimenti per generare segnali di clock e terminare un trasferimento è chiamato master.

Schiavo: Il dispositivo indirizzato da un master è chiamato slave.

Multimaster: Più di un master può tentare di controllare il bus contemporaneamente senza danneggiare il messaggio è chiamato Multimaster.

Arbitrato: Procedura per garantire che, se più di un master tenta contemporaneamente di controllare il bus, solo uno è autorizzato a farlo, il messaggio vincente non viene danneggiato.

Sincronizzazione: La procedura per sincronizzare i singoli di clock di due o più dispositivi è chiamata sincronizzazione.

Sequenza dei comandi di base I2C

  1. Condizione bit di avvio
  2. Condizione bit di stop
  3. Condizione di riconoscimento
  4. Operazione di scrittura da master a slave
  5. Leggere Operazione da slave a master

Condizione bit di avvio e arresto

Quando il master (microcontrollore) desidera parlare con un dispositivo slave (ad esempio ADC), inizia la comunicazione emettendo una condizione di avvio sul bus I2C, quindi emette una condizione di arresto. I livelli logici di avvio e arresto I2C sono mostrati in figura.

La condizione di avvio I2C definisce come una transizione da alto a basso della linea SDA mentre la linea SCL è alta. Una condizione di arresto I2C si verifica quando la linea SDA passa da bassa ad alta mentre la linea SCL è alta.

Il master I2C genera sempre le condizioni S e P. Una volta che il master I2C avvia una condizione di START, il bus I2c viene considerato in stato occupato.

Condizione bit di avvio e arresto

Condizione bit di avvio e arresto

Programmazione:

Condizione di inizio:

sbit SDA = P1 ^ 7 // inizializza i pin SDA e SCL del microcontrollore //
sbit SCL = P1 ^ 6
void delay (unsigned int)
void main ()
{
SDA = 1 // elaborazione dei dati //
SCL = 1 // il clock è alto //
ritardo()
SDA = 0 // ha inviato i dati //
ritardo()
SCL = 0 // il segnale di clock è basso //
}
Ritardo vuoto (int p)
{
unsignedinta, b
Per (a = 0a<255a++) //delay function//
Per (b = 0b}

Condizione di STOP:

void main ()
{
SDA = 0 // Interrompi l'elaborazione dei dati //
SCL = 1 // il clock è alto //
ritardo()
SDA = 1 // Interrotto //
ritardo()
SCL = 0 // il segnale di clock è basso //
}
Ritardo vuoto (int p)
{
unsignedinta, b
Per (a = 0a<255a++) //delay function//
Per (b = 0b}

Condizione di riconoscimento (ACK) e di non riconoscimento (NCK)

Ogni byte trasmesso sul bus I2C è seguito da una condizione di riconoscimento dal ricevitore, il che significa che, dopo che il master tira SCL basso per completare la trasmissione di 8 bit, l'SDA sarà abbassato dal ricevitore al master. Se, dopo che la trasmissione del ricevitore non tira, la linea SDA LOW è considerata una condizione NCK.

Riconoscimento (ACK)

Riconoscimento (ACK)

Programmazione

Riconoscimento
void main ()
{
SDA = 0 // La linea SDA diventa bassa //
SCL = 1 // il clock va dal più alto al più basso //
ritardo (100)
SCL = 0
}
Nessun riconoscimento:
void main ()
{
SDA = 1 // La linea SDA diventa alta //
SCL = 1 // il clock va dal più alto al più basso //
ritardo (100)
SCL = 0
}

Operazione di scrittura da master a slave

Il protocollo I2C trasferisce i dati sotto forma di pacchetti o byte. Ogni byte è seguito da un bit di riconoscimento.

Formato di trasferimento dati

Formato di trasferimento dati

Formato di trasferimento dati

Inizio: In primo luogo, la sequenza di trasferimento dati avviata dal master che genera la condizione di avvio.

Indirizzo a 7 bit: Dopo di che il master invia l'indirizzo dello slave in due formati a 8 bit invece di un singolo indirizzo a 16 bit.

R / W: Se il bit di lettura e scrittura è alto, viene eseguita l'operazione di scrittura.

ALAS: Se l'operazione di scrittura viene eseguita nel dispositivo slave, il ricevitore invia l'ACK a 1 bit al microcontrollore.

Fermare: Dopo il completamento dell'operazione di scrittura nel dispositivo slave, il microcontrollore invia la condizione di arresto al dispositivo slave.

Programmazione

Scrivi operazione

voidwrite (carattere non firmato d)
{
Carattere senza segno k, j = 0x80
Per (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
ritardo (4)
SCL = 0
}
SDA = 1
SCL = 1
ritardo (2)
c = SDA
ritardo (2)
SCL = 0
}

Operazione di lettura da master a slave

I dati vengono riletti dal dispositivo slave sotto forma di bit o byte: leggere prima il bit più significativo e leggere per ultimo il bit meno significativo.

Il formato di lettura dei dati

Formato di lettura dei dati

Formato di lettura dei dati

Inizio: In primo luogo, la sequenza di trasferimento dei dati viene avviata dal master che genera la condizione di avvio.

Indirizzo a 7 bit: Dopo di che il master invia l'indirizzo dello slave in due formati a 8 bit invece di un singolo indirizzo a 16 bit.

R / W: Se il bit di lettura e scrittura è basso, viene eseguita l'operazione di lettura.

ALAS: Se l'operazione di scrittura viene eseguita nel dispositivo slave, il ricevitore invia l'ACK a 1 bit al microcontrollore.

Fermare: Dopo il completamento dell'operazione di scrittura nel dispositivo slave, il microcontrollore invia la condizione di arresto al dispositivo slave.

Programmazione

Void read ()
{
Carattere senza segno j, z = 0x00, q = 0x80
SDA = 1
per (j = 0j<8j++)
{
SCL = 1
ritardo (100)
flag = SDA
if (flag == 1)
q)
q = q >> 1
ritardo (100)
SCL = 0

Esempio pratico di interfaccia tra l'ADC e il microcontrollore 8051

L'ADC è un dispositivo che viene utilizzato per convertire i dati analogici in forma di digitale e da digitale ad analogico. Il microcontrollore 8051 non ha un ADC integrato, quindi dobbiamo aggiungere esternamente tramite il protocollo I2C. Il PCF8591 è basato su I2C analogico al digitale e convertitore da digitale ad analogico. Questo dispositivo può supportare un massimo di 4 canali di ingresso analogici insieme a tensioni da 2,5 a 6 V.

Uscite analogiche

Le uscite analogiche si presentano sotto forma di tensioni. Ad esempio, il sensore analogico 5V fornisce una logica di uscita da 0,01 V a 5 V.
Il valore digitale massimo di 5v è = 256.
Il valore di 2.5v è = 123 in base al valore di tensione massima.

La formula dell'uscita analogica è:

La formula delle uscite digitali:

Interfacciamento dell

Interfacciamento dell'ADC con il microcontrollore 8051

La figura sopra mostra il trasferimento dei dati utilizzando il protocollo I2C dal dispositivo ADC al microcontrollore 8051. I pin ADC di SCL e SDA sono collegati ai pin 1.7 e 1.6 del microcontrollore per stabilire la comunicazione tra di loro. Quando il sensore fornisce valori analogici all'ADC, si converte in digitale e trasferisce i dati al microcontrollore tramite il protocollo I2C.

Si tratta del tutorial sul protocollo bus I2C con programmi appropriati. Ci auguriamo che il contenuto fornito offra un concetto pratico di interfacciare diversi dispositivi con microcontrollori utilizzando la comunicazione I2C. Se hai qualche dubbio sulla procedura di interfacciamento di questo protocollo, puoi contattarci commentando di seguito.