Articles

Nozioni di base del Protocollo di Comunicazione I2C

Posted by admin

finora, abbiamo parlato di nozioni di base di comunicazione SPI e UART comunicazione, così ora andiamo nel protocollo finale di questa serie, l’Inter-Integrated Circuit, o I2C.

probabilmente Ti troverai a usare I2C, se mai costruire progetti che utilizzano i display OLED, sensori di pressione barometrica, o giroscopio/accelerometro moduli.

Introduzione alla comunicazione I2C

I2C combina le migliori caratteristiche di SPI e UART., Con I2C, puoi connettere più slave a un singolo master (come SPI) e puoi avere più master che controllano singoli o più slave. Questo è davvero utile quando si desidera avere più di un microcontrollore che registra i dati su una singola scheda di memoria o visualizza il testo su un singolo LCD.

Come la comunicazione UART, I2C utilizza solo due fili per trasmettere dati tra dispositivi:

SDA (Serial Data) – La linea per il master e slave per inviare e ricevere dati.

SCL (Serial Clock) – La linea che trasporta il segnale di clock.,

I2C è un protocollo di comunicazione seriale, quindi i dati vengono trasferiti bit per bit lungo un singolo filo (la linea SDA).

Come SPI, I2C è sincrono, quindi l’uscita dei bit viene sincronizzata al campionamento dei bit da un segnale di clock condiviso tra il master e lo slave. Il segnale di clock è sempre controllato dal master.

Come funziona I2C

Con I2C, i dati vengono trasferiti nei messaggi. I messaggi sono suddivisi in frame di dati., Ogni messaggio ha un frame di indirizzo che contiene l’indirizzo binario dello slave e uno o più frame di dati che contengono i dati trasmessi. Il messaggio include anche condizioni di avvio e arresto, bit di lettura / scrittura e bit ACK/NACK tra ciascun frame di dati:

Condizione di avvio: la linea SDA passa da un livello di alta tensione a un livello di bassa tensione prima che la linea SCL passi da alto a basso.

Condizione di arresto: la linea SDA passa da un livello di bassa tensione a un livello di alta tensione dopo che la linea SCL passa da bassa a alta.,

Address Frame: Una sequenza di 7 o 10 bit unica per ogni slave che identifica lo slave quando il master vuole parlare con esso.

Bit di lettura / scrittura: un singolo bit che specifica se il master sta inviando dati allo slave (livello di bassa tensione) o richiede dati da esso (livello di alta tensione).

Bit ACK / NACK: ogni frame in un messaggio è seguito da un bit acknowledge/no-acknowledge. Se un frame di indirizzo o di dati è stato ricevuto correttamente, un bit ACK viene restituito al mittente dal dispositivo ricevente.,

Indirizzamento

I2C non ha linee di selezione slave come SPI, quindi ha bisogno di un altro modo per far sapere allo slave che i dati vengono inviati ad esso e non ad un altro slave. Lo fa affrontando. Il frame dell’indirizzo è sempre il primo frame dopo il bit di avvio in un nuovo messaggio.

Il master invia l’indirizzo dello slave con cui vuole comunicare ad ogni slave ad esso collegato. Ogni slave confronta quindi l’indirizzo inviato dal master al proprio indirizzo. Se l’indirizzo corrisponde, invia un bit ACK a bassa tensione al master., Se l’indirizzo non corrisponde, lo slave non fa nulla e la linea SDA rimane alta.

Bit di lettura / scrittura

Il frame degli indirizzi include un singolo bit alla fine che informa lo slave se il master desidera scrivere dati su di esso o ricevere dati da esso. Se il master desidera inviare dati allo slave, il bit di lettura/scrittura è un livello di bassa tensione. Se il master richiede dati dallo slave, il bit è un livello di alta tensione.

Il frame di dati

Dopo che il master rileva il bit ACK dallo slave, il primo frame di dati è pronto per essere inviato.,

Il frame di dati è sempre lungo 8 bit e inviato prima con il bit più significativo. Ogni frame di dati viene immediatamente seguito da un bit ACK/NACK per verificare che il frame sia stato ricevuto correttamente. Il bit ACK deve essere ricevuto dal master o dallo slave (a seconda di chi sta inviando i dati) prima che il frame di dati successivo possa essere inviato.

Dopo che tutti i frame di dati sono stati inviati, il master può inviare una condizione di stop allo slave per interrompere la trasmissione., La condizione di arresto è una transizione di tensione da bassa ad alta sulla linea SDA dopo una transizione da bassa ad alta sulla linea SCL, con la linea SCL che rimane alta.

Passi di trasmissione dati I2C

1. Il master invia la condizione di avvio a ogni slave collegato passando la linea SDA da un livello di alta tensione a un livello di bassa tensione prima di passare la linea SCL da alto a basso:

2., Il master invia ad ogni slave l’indirizzo a 7 o 10 bit dello slave con cui vuole comunicare, insieme al bit di lettura / scrittura:

3. Ogni slave confronta l’indirizzo inviato dal master al proprio indirizzo. Se l’indirizzo corrisponde, lo slave restituisce un bit ACK tirando la linea SDA bassa per un bit. Se l’indirizzo del master non corrisponde all’indirizzo dello slave, lo slave lascia alta la linea SDA.

4. Il master invia o riceve il frame di dati:

5., Dopo che ogni frame di dati è stato trasferito, il dispositivo ricevente restituisce un altro bit ACK al mittente per confermare la ricezione del frame:

6. Per interrompere la trasmissione dei dati, il master invia una condizione di stop allo slave commutando SCL high prima di passare a SDA high:

Singolo Master con più Slave

Poiché I2C utilizza l’indirizzamento, è possibile controllare più slave da un singolo master. Con un indirizzo a 7 bit, sono disponibili 128 (27) indirizzi univoci., L’utilizzo di indirizzi a 10 bit è raro, ma fornisce 1.024 (210) indirizzi univoci. Per collegare più slave a un singolo master, collegarli in questo modo, con resistori pull-up da 4,7 K Ohm che collegano le linee SDA e SCL a Vcc:

Più Master con più Slave

Più master possono essere collegati a un singolo slave o più slave. Il problema con più master nello stesso sistema si verifica quando due master tentano di inviare o ricevere dati contemporaneamente sulla linea SDA., Per risolvere questo problema, ogni master deve rilevare se la linea SDA è bassa o alta prima di trasmettere un messaggio. Se la linea SDA è bassa, ciò significa che un altro master ha il controllo del bus e il master deve attendere per inviare il messaggio. Se la linea SDA è alta, è sicuro trasmettere il messaggio. Per collegare più master a più slave, utilizzare il seguente diagramma, con 4.,usare I2C per la connessione a un dispositivo particolare:

Vantaggi

  • utilizza Solo due fili
  • Supporta più master e più slave
  • ACK/NACK bit dà la conferma che ogni fotogramma è trasferito con successo
  • Hardware è meno complicato di quello con UARTs
  • Ben noto e ampiamente utilizzato il protocollo

Svantaggi

  • più Lenta velocità di trasferimento dati di SPI
  • La dimensione del frame di dati è limitato a 8 bit
  • Più complicato hardware necessario per implementare di SPI

Grazie per la lettura!, Spero che tu abbia imparato qualcosa da questa serie di articoli sui protocolli di comunicazione elettronica. Nel caso in cui non li abbiate già letti, la prima parte copre il protocollo di comunicazione SPI e la seconda parte copre la comunicazione guidata da UART.

Leave A Comment