Sommario:

Apri gli occhi! Analizzatore logico: 21 passaggi
Apri gli occhi! Analizzatore logico: 21 passaggi

Video: Apri gli occhi! Analizzatore logico: 21 passaggi

Video: Apri gli occhi! Analizzatore logico: 21 passaggi
Video: Progettazione strutture in Xlam - 21 Maggio 2020 2024, Dicembre
Anonim
Image
Image
Assemblea
Assemblea

L'analizzatore logico facilita la visualizzazione del treno di impulsi, che sono i bit che viaggiano in una linea di comunicazione. Pertanto, apre gli occhi per identificare un possibile problema. Perché questo è importante? È uno strumento di sviluppo e rilevamento dei guasti molto efficiente che può farti risparmiare tempo. In questo video di oggi, valuteremo l'importanza dell'analizzatore logico, osserveremo alcuni protocolli di pratiche comuni durante l'utilizzo di questo dispositivo ed esemplificheremo un errore di rilevamento senza l'ausilio di un analizzatore logico.

In questo video ho utilizzato un modello relativamente economico (circa 35 dollari) ed efficiente, con interfaccia grafica e software gratuito.

Passaggio 1: assemblaggio

Passaggio 2: funzionalità utilizzate - Server

Funzionalità utilizzate - Server
Funzionalità utilizzate - Server

• Ponticelli per i collegamenti

• 2 Arduino (abbiamo usato 2 Mega Arduino 2560)

• Analizzatore logico (usiamo Saleae)

• Cavi di connessione USB per Arduino e analizzatore.

• Oscilloscopio (opzionale)

• Scheda prototipi

Passaggio 3: circuito utilizzato

Circuito utilizzato
Circuito utilizzato

Qui abbiamo lo schema, che mostra il monitoraggio di tre pin: TX0, SDA e SCL. Abbiamo due Arduino: un master e uno slave.

Passaggio 4: codice sorgente: Master

Nel Setup, includeremo la libreria per la comunicazione i2c. Siamo entrati nella rete come Master e inizializzato seriale 0. Nel Loop, abbiamo richiesto byte di dati slave per la comunicazione con il nostro Arduino numero 8, come abbiamo definito nell'esempio. Stampiamo in seriale, che verrà valutato con l'analizzatore logico, i byte ricevuti.

#include //inclui a biblioteca para comunicação I2C void setup() { Wire.begin(); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin(115200); // inicia a serial 0 } void loop() { Wire.requestFrom(8, 6);// requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available()) { // enquanto hover bytes para receber… char c = Wire.read(); // recebe cada byte e armazena como caracter Serial.print(c); // envia o carattere pela serial (na verdade vai para o buffer) } delay(500); //aguarda meio secondo }

Passaggio 5: codice sorgente: slave

In questo codice slave, includo nuovamente la libreria per la comunicazione i2c. Entro nella rete come slave con l'indirizzo 8. Registriamo l'evento di richiesta e lo associamo alla funzione "richiesta". Non devi fare nulla sul loop, basta dare un ritardo di 0,1 secondi.

Infine, abbiamo la funzione di richiesta che verrà eseguita quando si verifica l'evento di richiesta da parte del Master, che è stato registrato in Setup. Rispondiamo, infine, con un messaggio di 6 byte.

#include //include una biblioteca per la comunicazione I2C void setup() { Wire.begin(8); // entra na rede come escravo com endereço 8 Wire.onRequest(requestEvent); // registra l'evento di richiesta // associa la funzione requestEvent } void loop() { delay(100); //não faz nada no loop, apenas aguarda 0, 1 secondo } //função que será executada quando ocorrer o evento de requisição pelo mestre //foi registrada come evento no setup void requestEvent() { Wire.write("teste "); // rispondi con un messaggio di 6 byte }

Passaggio 6: Analizzatore: Hardware

Analizzatore: Hardware
Analizzatore: Hardware

Frequenza di campionamento fino a: 24 MHz

Logica: da 5 V a 5,25 V

Soglia di basso livello 0,8 V

Soglia di alto livello 2.0 V

Impedenza di ingresso di circa 1 Mohm o più

Passaggio 7: installazione del software Saleae

Installazione del software Saleae
Installazione del software Saleae

Il programma che riceve i dati catturati dall'analizzatore logico e decodifica i bit può essere scaricato al seguente link:

Passaggio 8: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Mostro qui l'interfaccia, che mi è piaciuta particolarmente perché era pulita.

Passaggio 9: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Ecco alcune opzioni di configurazione:

• Cliccando sul nome del canale, possiamo cambiarlo.

• Possiamo determinare se uno dei canali fungerà da trigger per l'acquisizione e la forma di rilevamento.

• Facendo clic e tenendo premuto il numero del canale, è possibile modificare la propria posizione nell'elenco.

• Cliccando sull'ingranaggio possiamo configurare la visualizzazione del canale, espandendo…

• … o nascondere il canale. Nasconderemo tutti i canali che non useremo.

Passaggio 10: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Cliccando sulle frecce del pulsante "Start", ci sono le opzioni di Sampling Rate e durata della registrazione.

Per qualche motivo, se il software rileva che la tariffa non può essere mantenuta, verrà visualizzato un messaggio e automaticamente la tariffa verrà ridotta fino al raggiungimento di un valore funzionale.

Passaggio 11: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Includeremo anche gli analizzatori di protocollo. Innanzitutto è l'I2C, seguendo le definizioni della libreria WIRE, e associando correttamente i canali. Infine, introdurremo l'analizzatore al seriale asincrono. Dobbiamo stare attenti a configurare correttamente i parametri in base all'assieme.

Passaggio 12: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Nella scheda "Protocolli decodificati", dovremmo controllare quali analizzatori di protocollo sono abilitati. Lì, i dati appariranno. Nella scheda "Annotazioni", possiamo aggiungere alcuni dei risultati per una migliore visualizzazione. Basta fare clic sull'icona "aggiungi misurazione".

Passaggio 13: Cattura: Panoramica

Cattura: Panoramica
Cattura: Panoramica

Nella schermata di acquisizione, il programma visualizza il treno di impulsi di dati di SDA, SCL e TX0.

Passaggio 14: Acquisizione: risultato dell'analisi del protocollo

Cattura: risultato dell'analisi del protocollo
Cattura: risultato dell'analisi del protocollo

Qui vediamo il risultato della cattura. Nella scheda "Protocolli decodificati", abbiamo:

• La richiesta del server per lo slave con id 8.

• La risposta dello slave, sei caratteri: "t", "e", "s", "t", "e" e uno spazio.

• Ciascuno è seguito da un bit ACK (Acknowledge) che indica la corretta ricezione del byte, ad eccezione del carattere spazio NACK (Not Acknowledge).

• Successivamente, vediamo il risultato della decodifica della seriale TX0, che indica i caratteri ricevuti e inviati al terminale seriale Arduino IDE.

Passaggio 15: Acquisizione: Canale 0 e Dati (SDA)

Cattura: Canale 0 e Dati (SDA)
Cattura: Canale 0 e Dati (SDA)

In questa immagine abbiamo il treno di impulsi della linea SDA. Notare che ogni byte trasmesso può essere visualizzato.

Passaggio 16: Cattura: Canale 1 e Orologio (SCL)

Cattura: Canale 1 e Orologio (SCL)
Cattura: Canale 1 e Orologio (SCL)

Ora, abbiamo qui il treno di impulsi della linea SCL. Puoi verificare maggiori dettagli semplicemente posizionando il mouse sul segnale, come vedi nell'immagine. Possiamo vedere che la frequenza di clock era a 100 kHz.

Passaggio 17: Cattura: Canale 2 e seriale (TX0)

Cattura: Canale 2 e Seriale (TX0)
Cattura: Canale 2 e Seriale (TX0)

Per quanto riguarda il treno di impulsi della linea TX0, possiamo vedere il bit di Start e i punti di framing di ogni bit. Abbiamo un byte che rappresenta il carattere "e".

Passaggio 18: configurazione dell'ambiente per i nostri test

Configurazione dell'ambiente per i nostri test
Configurazione dell'ambiente per i nostri test

Qui abbiamo diverse opzioni per leggere i dati.

Passaggio 19: Acquisizione: oscilloscopio e analizzatore

Cattura: oscilloscopio e analizzatore
Cattura: oscilloscopio e analizzatore

Guarda qui lo schermo che ho catturato dal mio oscilloscopio. Il segnale dell'analizzatore logico rappresenta solo i rilevamenti alti e bassi, ma non rappresenta la qualità del segnale. Questo può essere osservato al meglio su un oscilloscopio.

Passaggio 20: Acquisizione: osservazione di un errore (esempio di errore seriale)

Acquisizione: osservazione di un errore (esempio di errore seriale)
Acquisizione: osservazione di un errore (esempio di errore seriale)

Ora, mostrerò un esempio di un errore seriale, che mi è realmente accaduto. Ero con un modem GPRS, del tipo usato su un telefono cellulare, la scheda SIM, cercando di connettermi all'ESP32. Ma semplicemente non si è connesso. Ho quindi controllato l'alimentazione, il cablaggio e ho cambiato la scheda. Ho fatto tutto, ma niente ha risolto. Ho deciso di fare un'analisi logica: ho scoperto che il segnale ESP su UART 115200 ha iniziato a non corrispondere. Cioè, l'ESP32 stava riproducendo quello che dovrebbe essere 115, 200 a una velocità diversa da questa.

Questo errore, che è stato identificato dal parser, è stato visualizzato con una X in rosso. Nella mia comprensione, il programma dice che il punto che ha una tale punta è mezzo spostato nel tempo. Con l'aumentare di questo cambiamento, potrebbe arrivare un momento in cui tutto non corrisponderà, in modo che le informazioni non raggiungano l'altro lato. Di solito arriva, ma la SIM800 è sensibile e se non è esatta, l'informazione non arriva dall'altra parte.

Non so se è una cosa che capita spesso o meno, ma a me è successo, e quindi ho deciso di affrontare questo argomento qui. Allora cosa ho fatto? Ho rallentato. Se metti 9, 600, 19, 200, fino a 38, 400, funziona, cosa che non si verifica con 115, 200.

Passaggio 21: scaricare i file

PDF

IO NO

Consigliato: