Domande sull'intervista I2C, dovresti saperlo

Domande sull'intervista I2C, dovresti saperlo

In questo articolo, ho cercato di raccogliere le domande dell'intervista I2C che possono porre il tuo intervistatore. Ho già scritto un articolo sul protocollo I2C se non hai visto questo articolo, dovresti leggere questo articolo prima di iniziare questa domanda e risposta.



Cos'è la comunicazione I2C?

I2C è un protocollo di comunicazione seriale. Fornisce un buon supporto ai dispositivi lenti, ad esempio EEPROM, ADC, I2C LCD e RTC ecc. Non viene utilizzato solo con la singola scheda ma anche con gli altri componenti esterni che sono collegati alle schede tramite i cavi.

I2C è fondamentalmente un protocollo di comunicazione a due fili. Utilizza solo due fili per la comunicazione. In cui un filo viene utilizzato per i dati (SDA) e un altro filo viene utilizzato per l'orologio (SCL).

In I2C entrambi i bus sono bidirezionali, il che significa che il master è in grado di inviare e ricevere i dati dallo slave. Il bus di clock è controllato dal master ma in alcune situazioni lo slave è anche in grado di sopprimere il segnale di clock, ma ne parleremo più avanti.

Inoltre, nelle varie architetture di controllo viene utilizzato un bus I2C, ad esempio SMBus (System Management Bus), PMBus (Power Management Bus), IPMI (Intelligent Platform Management Interface) ecc.

Cosa significa I2C?

Circuito interintegrato

Quanti cavi sono necessari per la comunicazione I2C?

In I2C sono necessari solo due bus per la comunicazione, il bus dati seriale (SDA) e il bus orologio seriale (SCL).

I2C è half-duplex o full-duplex?

semiduplex

I2C è comunicazione sincrona o asincrona?

I2C è comunicazione sincrona

Spiega il livello fisico del protocollo I2C

I2C è puro protocollo di comunicazione master e slave, può essere multi-master o multi-slave ma generalmente vediamo un singolo master nella comunicazione I2C. In I2C vengono utilizzati solo due fili per la comunicazione, uno è il bus dati (SDA) e il secondo è il bus orologio (CLK).

Tutti gli slave e i master sono collegati con lo stesso bus dati e clock, qui la cosa importante è ricordare che questi bus sono collegati tra loro utilizzando la configurazione WIRE-AND che viene eseguita mettendo entrambi i pin in open drain. La configurazione wire-AND consente in I2C di collegare più nodi al bus senza cortocircuiti dovuti alla contesa del segnale.

L'open-drain consente al master e allo slave di portare la linea in basso e rilasciarla in uno stato di alta impedenza. Quindi, in quella situazione, quando il master e lo slave rilasciano il bus, è necessaria una resistenza di pull per tirare la linea in alto. Il valore del resistore di pull-up è molto importante dal punto di vista della progettazione del sistema I2C perché il valore errato del resistore di pull-up può portare alla perdita del segnale.

Nota: Sappiamo che il protocollo di comunicazione I2c supporta più master e più slave, ma la maggior parte dei progetti di sistema include un solo master.

Se vuoi imparare da zero STM32, dovresti seguire questo corso "Mastering Microcontroller with Embedded Driver Development". Il corso contiene lezioni video di 18,5 ore lunghezza che copre tutti gli argomenti come lo sviluppo di microcontrollori e driver periferici per STM32 GPIO, I2C, SPI, USART utilizzando Embedded C.

Iscriviti al corso

Spiega il funzionamento e la struttura del protocollo I2C

I2C è un protocollo di comunicazione da chip a chip. In I2C, la comunicazione viene sempre avviata dal master. Quando il master vuole comunicare con lo slave, asserisce un bit di inizio seguito dall'indirizzo dello slave con bit di lettura/scrittura.

Dopo aver affermato il bit di inizio, tutti gli slave entrano in modalità di attenzione. Se l'indirizzo trasmesso corrisponde a uno qualsiasi degli slave sul bus, lo slave invia al master un bit di RICONOSCIMENTO (ACK).

Dopo aver ottenuto il bit ACK, il master avvia la comunicazione. Se non vi è alcuno slave il cui indirizzo corrisponda all'indirizzo trasmesso, il master ha ricevuto un bit di NOT-ACKNOWLEDGEMENT (NACK), in quella situazione il master asserisce il bit di stop per interrompere la comunicazione o asserisce un bit di avvio ripetuto sulla linea per una nuova comunicazione.

Quando inviamo o riceviamo i byte in i2c, otteniamo sempre un bit NACK o un bit ACK dopo che ogni byte dei dati è stato trasferito durante la comunicazione.

In I2C, viene sempre trasmesso un bit su ogni clock. Un byte che viene trasmesso in I2C potrebbe essere un indirizzo del dispositivo, l'indirizzo del registro o dati che vengono scritti o letti dallo slave.

In I2C, la linea SDA è sempre stabile durante la fase di clock alto, fatta eccezione per la condizione di avvio, la condizione di arresto e la condizione di avvio ripetuto. La linea SDA cambia stato solo durante la fase di clock basso.

Guarda l'immagine qui sotto,

Bit di inizio: Avvia la comunicazione

Stop bit: Interrompi la comunicazione.



Che cos'è il bit START e il bit STOP?

Condizione iniziale:

Lo stato predefinito della linea SDA e SCL è alto. Un master afferma la condizione di avvio sulla linea per avviare la comunicazione. Una transizione da alto a basso della linea SDA mentre la linea SCL è alta chiamata condizione START. La condizione di START è sempre asserita dal master. Il bus I2C viene considerato occupato dopo l'asserzione del bit START.

Condizione di arresto:

La condizione di STOP viene asserita dal master per interrompere la comunicazione. Una transizione da basso ad alto della linea SDA mentre la linea SCL è alta chiamata condizione STOP. La condizione di STOP è sempre asserita dal master. Il bus I2C è considerato libero dopo l'asserzione del bit di STOP.

Nota:una condizione START e STOP sempre affermata dal master.

Nota:puoi anche vedere Domande del colloquio c integrate

Qual ​​è la condizione di avvio ripetuto?

La condizione di avvio ripetuto è simile alla condizione di START ma entrambe sono diverse l'una dall'altra. L'avvio ripetuto viene affermato dal master prima della condizione di arresto (quando il bus non è inattivo).

Una condizione di partenza ripetuta viene asserita dal master quando non vuole perdere il controllo del bus. L'avvio ripetuto è vantaggioso per il master quando vuole avviare una nuova comunicazione senza affermare la condizione di arresto.

Nota:l'avvio ripetuto è vantaggioso quando più di un master è connesso al bus I2c.

Qual ​​è la velocità standard del bus in I2C?

Ci sono le seguenti modalità di velocità in I2C

                      MODALITÀ                         VELOCITÀ
                     Modalità standard                      100 kbit/s
                       Modalità rapida                      400 kbit/s
                     Fast-mode Plus                      1 Mbit/s
                     Modalità ad alta velocità                      3,4 Mbit/s

Qual ​​è il fattore limitante relativo al numero di dispositivi che possono essere collegati al bus I²C?

Dipende dalla capacità totale.

Chi invia il bit di inizio?

In I2C il master invia il bit di inizio.

Qual ​​è la lunghezza massima del bus I2C?

Dipende dal carico del bus (capacità) e dalla velocità. Fondamentalmente I2C non è progettato per le lunghe distanze. È limitato a pochi metri. Per la modalità veloce e il pullup del resistore, la capacità dovrebbe essere inferiore a 200 pF, secondo il documento NXP "UM10204.pdf". Quindi, se il tuo cavo è di 20 pF/25 cm e hai altri 80 pF di dispersione e capacità di ingresso, sei limitato a 1,5 m di lunghezza del cavo. Ma è solo un'ipotesi approssimativa. Può variare in scenari reali.

Quanti tipi di strutture di indirizzamento ci sono in I2C?

In questo momento due indirizzamenti supportati da I2C, 7 bit e 10 bit.

È possibile avere più master in I2C?

Sì I2C supporta più master e più slave.




Cos'è un arbitrato bus?

L'arbitrato è richiesto nel caso di un multi-master, dove più di un master si tenta di comunicare con uno slave contemporaneamente. In I2C l'arbitrato è ottenuto dalla linea SDA.

Ad esempio,
Supponiamo che due master nel bus I2C provano a comunicare con uno slave contemporaneamente, quindi affermeranno una condizione di avvio sul bus. L'orologio SCL del bus I2c sarebbe già sincronizzato dal cablaggio e dalla logica.

Nel caso sopra, tutto andrà bene fino a quando lo stato della linea SDA non sarà lo stesso di quello che guidano i padroni sull'autobus. Se un qualsiasi master vede che lo stato della linea SDA è diverso, cosa sta guidando, uscirà dalla comunicazione e perderà l'arbitrato.

Nota:il Master che sta perdendo l'arbitrato attenderà che l'autobus diventi libero.

Che cos'è l'allungamento dell'orologio I2C?

In I2c, la comunicazione può essere interrotta dall'orologio che si estende fino a mantenere la linea SCL bassa e non può continuare fino a quando la linea SCL non viene rilasciata di nuovo alta.

In I2C, lo slave è in grado di ricevere un byte di dati sulla velocità veloce ma a volte lo slave impiega più tempo nell'elaborazione dei byte ricevuti in quella situazione lo slave tira la linea SCL per mettere in pausa la transazione e dopo l'elaborazione dei byte ricevuti, ha nuovamente rilasciato la linea SCL di nuovo alta per riprendere la comunicazione.

Il clock stretching è il modo in cui lo slave guida la linea SCL, ma è il fatto che la maggior parte degli slave non guida la linea SCL

Nota: Nel protocollo di comunicazione I2c, la maggior parte dei dispositivi slave I2C non utilizza la funzione di allungamento dell'orologio, ma ogni master dovrebbe supportare l'allungamento dell'orologio.

Cos'è la sincronizzazione dell'orologio I2C?

A differenza di Rs232, I2c è una comunicazione sincrona, in cui l'orologio è sempre generato dal master e questo orologio è condiviso sia dal master che dallo slave. Nel caso di multi-master, tutti i master generano il proprio clock SCL, quindi è necessario che l'orologio di tutti i master sia sincronizzato. Nell'i2C, questa sincronizzazione dell'orologio viene eseguita tramite cablaggio e logica.

Per una migliore comprensione, prendo un esempio, in cui due padroni cercano di comunicare con uno schiavo. In tale situazione, entrambi i master generano il proprio clock, il master M1 genera clk1 e il master M2 genera clk2 e il clock che osservato sul bus è SCL.

L'orologio SCL sarebbe l'Anding (clk1 e clk2) di clk1 e clk2 e la cosa più interessante è che la logica più alta 1 della linea SCL definita dal CLK che ha la logica più bassa 1.



Quando i dati devono essere stabili per una corretta transazione bus I²C?

Quando l'orologio è alto

La sostituzione a caldo è possibile nel protocollo I2C?

Sì, l'hot swap è possibile in I2C.

È possibile aggiungere e rimuovere dispositivi mentre il sistema è in esecuzione in I2C?

Sì perché l'hot swapping è possibile nel protocollo I2C.

Quale è meglio usare I2C o SPI?

Ogni protocollo di comunicazione presenta vantaggi e svantaggi. Non puoi dire alla cieca quale è meglio SPI e I2C. SPI ha i suoi vantaggi e I2C ha i suoi vantaggi. Selezioniamo il protocollo secondo il requisito del progetto. Puoi controllare l'articolo su SPI vs I2C per maggiori dettagli.

Qual ​​è l'applicazione del protocollo I2C?

È collegato con RAM seriale, LCD, EEPROM e il suo utilizzo all'interno dei televisori.

Se uno slave sta servendo un interrupt interno, cosa farà per evitare la perdita di dati?

Lo slave allungherà l'orologio fino al completamento della manutenzione degli interrupt.

Possiamo monitorare il bus I2C?

Sì possiamo. Ci sono molti analizzatori disponibili, puoi controllare questo analizzatore “Siglent SDS1104X-E”.

Vantaggi della comunicazione I2C?

C'è un grande vantaggio del protocollo I2C che rende l'utente incapace di utilizzare il protocollo I2C in molte applicazioni.

  • È il protocollo di comunicazione sincrona, quindi non è necessario un oscillatore preciso per il master e lo slave.
  • Richiede solo due fili, uno per i dati (SDA) e l'altro per l'orologio (SCL).
  • Offre all'utente la flessibilità di selezionare la velocità di trasmissione secondo i requisiti.
  • Nel bus I2C, ogni dispositivo sul bus è indirizzabile in modo indipendente.
  • Segue le relazioni tra padrone e schiavo.
  • Ha la capacità di gestire più master e più slave sul bus I2C.
  • I2C ha alcune caratteristiche importanti come l'arbitraggio, la sincronizzazione dell'orologio e l'allungamento dell'orologio.
  • I2C fornisce funzionalità ACK/NACK (riconoscimento/non riconoscimento) che forniscono assistenza nella gestione degli errori.

Quali sono i limiti dell'interfaccia I2C?

  • Comunicazione half-duplex, quindi i dati vengono trasmessi solo in una direzione (a causa del singolo bus dati) alla volta.
  • Dato che il bus è condiviso da molti dispositivi, il debug di un bus I2C (rilevando quale dispositivo si comporta in modo anomalo) per problemi è piuttosto difficile.
  • Il bus I2C è condiviso da più dispositivi slave se qualcuno di questi slave si comporta male (tira SCL o SDA basso per un tempo indefinito) il bus andrà in stallo. Non avverranno ulteriori comunicazioni.
  • I2C utilizza il pull-up resistivo per il suo bus. Limitazione della velocità del bus.
  • La velocità del bus dipende direttamente dalla capacità del bus, il che significa che tracce bus I2C più lunghe limiteranno la velocità del bus.

Qual ​​è la differenza tra SPI e I2C (I2C vs SPI)?

Puoi vedere questo articolo, Differenza tra I2c e SPI

Domande per te:

  • Che cos'è il blocco (o l'attesa) e lo sblocco del protocollo I2c? Come potresti progettare il protocollo di sblocco I2c per il tuo sistema.
  • I2C è Edge Trigger o Level Trigger?
  • In I2c due slave hanno lo stesso indirizzo?
  • In che modo il master indicherà che si tratta di indirizzo/dati? In che modo sarà intimo per lo schiavo che leggerà/scriverà?
  • Qual ​​è il livello di tensione per 0 e 1 in I2C?
  • Come può uno slave inviare i dati al Master in I2C mentre il master sta comunicando con un altro slave?

Post consigliato

  • Comprensione del protocollo I2C.
  • Protocollo SPI vs I2C.
  • Interfaccia EEPROM con microcontrollore PIC – Basato su I2C.
  • Interfaccia RTC DS1307 con microcontrollore PIC.
  • Interfaccia EEPROM con microcontrollore 8051 – Basato su I2C.
  • 100 domande del colloquio C incorporate.
  • Domande dell'intervista 100 C.
  • Domande sul colloquio I2C
  • Domande di intervista sugli operatori bit per bit in C
  • Domande sull'intervista C++.
  • 10 domande sull'allocazione dinamica della memoria.
  • Gestione dei file in C.
  • Puntatore in C.
  • Specificatori di formato C.