resultsUrl="https://www.strumentazioneelettronica.it/risultati-ricerca/"

L'uso dei bus seriali per interconnettere diversi circuiti integrati o sottosistemi è sempre più diffuso nei sistemi elettronici moderni, ma ciò crea dei nuovi problemi e necessità di misura, in particolare per l'impostazione del trigger.

Vediamo qualche esempio legato al relativamente semplice bus I2C qualora volessimo analizzarne il comportamento con i moderni oscilloscopi digitali.

 

Dal bus parallelo al bus seriale

Facendo un passo indietro, ricordiamo che nelle architettura di bus parallelo, ogni segnale ha il suo percorso fisico sulla scheda. Per esempio, in un tipico sistema di controllo che collega microprocessore e periferiche potrebbero esserci 16 linee di indirizzo, 16 linee per i dati, una linea per il clock e qualche altra linea per i segnali di controllo.

I valori degli indirizzi e dei dati sul bus parallelo vengono trasferiti nello stesso momento su tutte le linee in parallelo e ciò rende relativamente semplice impostare il trigger legato all'evento che ci interessa utilizzando le modalità di trigger State o Pattern presenti comunemente sugli analizzatori logici, sugli oscilloscopi digitali o sugli oscilloscopi per segnali misti.
L'acquisizione contemporanea di tutte le linee del bus rende anche relativamente semplice capire al volo la relazione tra i dati che sono stati catturati.

Il discorso si complica passando ai bus seriali, nei quali i dati da trasferire sono invece codificati e concentrati in poche (anche una sola) linee sulla scheda, che trasportano in sequenza le informazioni relative a indirizzi, dati, clock e segnali di controllo.

Quindi, anche con uno dei bus seriali più semplici, come l'I2C, usato molto spesso per collegare i circuiti integrati di una scheda, è davvero difficile interpretare le informazioni partendo dal segnale acquisito sull'oscilloscopio, ed è ancora più difficile impostare un trigger su un evento (per esempio sull'avvio di una scrittura in memoria), in quanto il segnale acquisito dallo strumento trasporta in sequenza vari segnali con una codifica ben definita, ma non certo banale.

Nel caso del bus I2C,  i segnali di clock e di informazione sono separati, per cui si può quantomeno usare il segnale di clock come riferimento.
Però, bisogna comunque scoprire l'inizio del messaggio (quando il segnale dati va basso mentre il clock è alto) e ricostruire manualmente la sequenza di bit per poi risalire al messaggio informativo che viene trasportato sul bus (per esempio, una lettura o una scrittura a un indirizzo di memoria).

Con altri bus la situazione può essere ancora più complicata, sia perché talvolta esiste un unico conduttore che trasporta tutto, incluso il clock, sia perché il protocollo è ben più complesso in quanto supporta moltissimi tipi di transizione.

0902_decodifica_e_trigger_i2cQui a fianco è riportato un classico segnale del bus I2C dove si osserva il segnale di clock (traccia SCL gialla) e il segnale dati (traccia SDA viola) acquisito con un moderno oscilloscopio digitale.

In questo caso di tratta di uno strumento intelligente di produzione Agilent , cioè dotato di funzioni specifiche per i bus seriali che è in grado di interpretare per noi automaticamente cosa sia questa transazione sul bus, visualizzando sotto la traccia in formato alfanumerico gli eventi di rilievo, come per esempio l'inizio della trama, gli indirizzi di scrittura (in azzurro), i dati (in bianco), gli indirizzi di lettura (in giallo) e così via.


Ben più importante, un oscilloscopio dotato di funzioni intelligenti per bus seriali specifici, permette di impostare trigger su tali condizioni in modo molto semplice e intuitivo, selezionandolo da menu e maschere di configurazione.

Un esempio di debug sul bus I2C

Consideriamo a titolo di esempio un sistema digitale per il controllo della ventilazione a velocità variabile comprendente un microcontrollore collegato a un memoria Eeprom, due sensori di temperatura e un convertitore D/A mediante il bus seriale I2C.

Si sospetta che il controllore non stia funzionando bene perché le letture dei sensori di temperatura, che hanno rispettivamente l'indirizzo 18 e 19 sul bus I2C, non appaiono corrette.

Impostiamo il trigger con un oscilloscopio intelligente capace di interpretare i segnali I2C, in questo caso un modello Tektronix, cercando l'evento di scrittura sul bus all'indirizzo 18, corrispondente all'operazione di interrogazione da parte del controllore della temperatura corrente del primo sensore.

Debug bus I2CIn questo caso il canale 1 dell'oscilloscopio (giallo) è collegato al segnale di clock del bus e il canale 2 (ciano) al segnale dati.

Automaticamente l'oscilloscopio ci mostra sulle traccia viola in basso la decodifica del bus, evidenziando le informazioni e gli eventi specifici definiti dal protocollo I2C.

La parte superiore del display mostra l'intera traccia acquisita, dominata da un lungo tempo di inattività e da una raffica di eventi concentrati sulla quale abbiamo effettuato lo zoom.

Osservando i dettagli delle forme d'onda decodificate si osserva che l'oscilloscopio è effettivamente scattato in occasione del trigger impostato sulla scrittura dell'indirizzo 18 (parte in basso a sinistra della traccia).
Infatti, il controllore ha tentato ben due volte l'operazione, ma non ha ricevuto il corrispondente segnale di riconoscimento dal destinatario (ACK), il che è segnalato dal simbolo in rosso visualizzato dall'oscilloscopio.

Indagando sulla scheda si è poi scoperto che in effetti un piedino del sensore di temperatura non era ben collegato e questo era il motivo delle difficoltà di comunicazione che impediva al controllore di prendere le decisioni corrette in quanto non riusciva da acquisire i valori della temperatura corrente.

Grazie alle funzionalità di trigger di un oscilloscopio che comprende il protocollo del bus I2C, siamo riusciti a isolare il problema in tempi brevi, che visto con le solo acquisizioni analogico avrebbe richiesto certamente molto più tempo per la sua ricostruzione.

Sul mercato esistono molti strumenti capaci di analizzare il protocollo ed eseguire il trigger sui bus seriale.
Il più delle volte, si tratta di funzionalità opzionali da acquistare a parte per gli oscilloscopi digitali.

Mentre per le capacità di analisi del segnale le varie funzionalità offerte dai diversi costruttori tendono ad assomigliarsi, differendo sostanzialmente per l'interfaccia utente, che può essere più o meno amichevole a seconda delle abitudini personali, notevoli possono essere le differenze per quanto riguarda le funzionalità di trigger.

Alcuni modelli di oscilloscopi possono sono dotate di trigger sui bus seriali di tipo software, altri invece hanno anche un proprio hardware dedicato specifico per i bus. In linea di massima, gli strumenti dotati di sistemi di trigger hardware specifici offrono qualche opzione in più e sono anche più veloci nell'identificare l'evento ricercato.

 

 

Categoria: Misure Digitali

Newsletter Settimanali

iscriviti-gratis

Seguici su:

Segui Strumentazione su Google Plus Segui Strumentazione su FacebookSegui Strumentazione su TwitterSegui Strumentazione su LinkedInicona-posta_48Ricevi il feed dei Nuovi Prodotti

Fiere e seminari

L'esperto risponde

Hai un dubbio su come effettuare una misura o su come utilizzare un strumento?
Chiedi a un esperto del settore!
Risponderà alla tua domanda che sarà pubblicata nella sezione FAQ.

Rimani aggiornato

email Iscriviti alle nostre newsletter per rimanere aggiornato sulle novità



Strumentazione Elettronica su Facebook