Inhaltsverzeichnis:
- Schritt 1: Montage
- Schritt 2: Verwendete Funktionen – Server
- Schritt 3: Verwendete Schaltung
- Schritt 4: Quellcode: Master
- Schritt 5: Quellcode: Slave
- Schritt 6: Analysator: Hardware
- Schritt 7: Installation der Saleae-Software
- Schritt 8: Konfigurieren der Umgebung für unsere Tests
- Schritt 9: Konfigurieren der Umgebung für unsere Tests
- Schritt 10: Konfigurieren der Umgebung für unsere Tests
- Schritt 11: Konfigurieren der Umgebung für unsere Tests
- Schritt 12: Konfigurieren der Umgebung für unsere Tests
- Schritt 13: Aufnahme: Übersicht
- Schritt 14: Erfassen: Ergebnis der Protokollanalyse
- Schritt 15: Erfassen: Kanal 0 und Daten (SDA)
- Schritt 16: Capture: Kanal 1 und Clock (SCL)
- Schritt 17: Capture: Kanal 2 und Seriell (TX0)
- Schritt 18: Konfigurieren der Umgebung für unsere Tests
- Schritt 19: Erfassen: Oszilloskop und Analysator
- Schritt 20: Erfassen: Beobachten eines Fehlers (Beispiel für seriellen Fehler)
- Schritt 21: Laden Sie die Dateien herunter
Video: Öffne deine Augen! Logischer Analysator - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Der Logikanalysator erleichtert Ihnen die Visualisierung der Impulsfolge, bei der es sich um die Bits handelt, die in einer Kommunikationsleitung übertragen werden. So öffnet es Ihre Augen, um ein mögliches Problem zu identifizieren. Warum ist das wichtig? Es ist ein sehr effizientes Entwicklungs- und Fehlererkennungstool, mit dem Sie Zeit sparen können. In diesem heutigen Video werden wir die Bedeutung des Logikanalysators bewerten, einige Protokolle gängiger Praktiken bei der Verwendung dieses Geräts beachten und einen Erkennungsfehler ohne Hilfe eines Logikanalysators veranschaulichen.
In diesem Video habe ich ein relativ kostengünstiges (ca. 35 US-Dollar) und effizientes Modell mit einer grafischen Oberfläche und kostenloser Software verwendet.
Schritt 1: Montage
Schritt 2: Verwendete Funktionen – Server
• Jumper für Anschlüsse
• 2 Arduinos (wir haben 2 Mega Arduinos 2560 verwendet)
• Logischer Analysator (wir verwenden Saleae)
• USB-Verbindungskabel für Arduino und Analysator.
• Oszilloskop (optional)
• Protoboard
Schritt 3: Verwendete Schaltung
Hier haben wir den Schaltplan, der die Überwachung von drei Pins zeigt: TX0, SDA und SCL. Wir haben zwei Arduinos: einen Master und einen Slave.
Schritt 4: Quellcode: Master
Im Setup werden wir die Bibliothek für die i2c-Kommunikation einbinden. Wir sind als Master in das Netzwerk eingetreten und haben Serial 0 initialisiert. In der Schleife haben wir Slave-Datenbytes für die Kommunikation mit unserem Arduino Nummer 8 angefordert, wie wir im Beispiel definiert haben. Wir drucken in die Serie, die mit dem Logikanalysator ausgewertet wird, die empfangenen Bytes.
#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 houver bytes para receber… Zeichen c = Wire.read(); // recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela seriell (na verdade vai para o Puffer)} Verzögerung (500); //aguarda meio segundo}
Schritt 5: Quellcode: Slave
In diesem Slave-Code binde ich wieder die Bibliothek für die i2c-Kommunikation ein. Ich betrete das Netzwerk als Slave mit der Adresse 8. Wir registrieren das Request-Ereignis und verknüpfen es mit der Funktion "Request". Sie müssen in der Schleife nichts tun, geben Sie einfach eine Verzögerung von 0,1 Sekunden ein.
Schließlich haben wir noch die Request-Funktion, die ausgeführt wird, wenn das Request-Ereignis des Masters eintritt, das im Setup registriert wurde. Wir antworten schließlich mit einer Nachricht von 6 Bytes.
#include //eine Biblioteca für die Kommunikation einschließen I2C void setup() { Wire.begin(8); // entra na rede como escravo com endereço 8 Wire.onRequest(requestEvent); // registra oder evento de requisiçao // und assoziieren mit einem função requestEvent } void loop() { delay(100); //não faz nada no loop, apenas aguarda 0, 1 segundo } //função que será executada quando ocorrer o evento de requisição pelo mestre //foi registrada como evento no setup void requestEvent() { Wire.write("teste"); // antworte com uma mensagem de 6 bytes }
Schritt 6: Analysator: Hardware
Abtastrate bis: 24 MHz
Logik: 5 V bis 5,25 V
Low-Level-Schwelle 0,8 V
Hochpegelschwelle 2,0 V
Eingangsimpedanz von etwa 1 MOhm oder mehr
Schritt 7: Installation der Saleae-Software
Das Programm, das die vom Logikanalysator erfassten Daten empfängt und die Bits dekodiert, kann unter folgendem Link heruntergeladen werden:
Schritt 8: Konfigurieren der Umgebung für unsere Tests
Ich zeige hier die Oberfläche, die mir besonders gut gefallen hat, weil sie sauber war.
Schritt 9: Konfigurieren der Umgebung für unsere Tests
Hier einige Konfigurationsoptionen:
• Durch Klicken auf den Kanalnamen können wir ihn ändern.
• Wir können bestimmen, ob einer der Kanäle als Auslöser für die Erfassung und die Art der Erkennung dient.
• Durch Anklicken und Halten der Kanalnummer können Sie Ihre Position in der Liste ändern.
• Durch Klicken auf das Zahnrad können wir die Kanalvisualisierung konfigurieren, erweitern …
• … oder den Kanal ausblenden. Wir werden alle Kanäle ausblenden, die wir nicht verwenden.
Schritt 10: Konfigurieren der Umgebung für unsere Tests
Durch Anklicken der Pfeile des „Start“-Buttons gibt es die Optionen Sampling Rate und Dauer der Aufnahme.
Wenn die Software aus irgendeinem Grund feststellt, dass der Tarif nicht eingehalten werden kann, wird eine Meldung angezeigt und der Tarif wird automatisch reduziert, bis ein Funktionswert erreicht ist.
Schritt 11: Konfigurieren der Umgebung für unsere Tests
Wir werden auch die Protokollanalysatoren einschließen. Zuerst ist es der I2C, der den Definitionen der WIRE-Bibliothek folgt und die Kanäle richtig zuordnet. Schließlich stellen wir den Analysator asynchron seriell vor. Wir müssen darauf achten, die Parameter entsprechend der Baugruppe richtig zu konfigurieren.
Schritt 12: Konfigurieren der Umgebung für unsere Tests
Auf der Registerkarte "Dekodierte Protokolle" sollten wir überprüfen, welche Protokollanalysatoren aktiviert sind. Dort werden die Daten angezeigt. Auf der Registerkarte "Anmerkungen" können wir einige der Ergebnisse zur besseren Visualisierung hinzufügen. Klicken Sie einfach auf das Symbol "Messung hinzufügen".
Schritt 13: Aufnahme: Übersicht
Im Erfassungsbildschirm zeigt das Programm die Datenimpulsfolge von SDA, SCL und TX0 an.
Schritt 14: Erfassen: Ergebnis der Protokollanalyse
Hier sehen wir das Ergebnis der Erfassung. Auf der Registerkarte "Dekodierte Protokolle" haben wir:
• Die Serveranfrage für den Slave mit der ID 8.
• Die Slave-Antwort, sechs Zeichen: „t“, „e“, „s“, „t“, „e“und ein Leerzeichen.
• Jedem folgt ein ACK-Bit (Acknowledge), das den korrekten Byte-Empfang anzeigt, mit Ausnahme des Leerzeichens NACK (Not Acknowledge).
• Als nächstes sehen wir das Decodierungsergebnis der TX0-Serie, das die empfangenen und an das serielle Arduino IDE-Terminal gesendeten Zeichen anzeigt.
Schritt 15: Erfassen: Kanal 0 und Daten (SDA)
In diesem Bild haben wir den Pulszug der SDA-Leitung. Beachten Sie, dass jedes übertragene Byte angezeigt werden kann.
Schritt 16: Capture: Kanal 1 und Clock (SCL)
Jetzt haben wir hier den Pulszug der SCL-Linie. Sie können weitere Details überprüfen, indem Sie einfach die Maus über dem Signal positionieren, wie Sie im Bild sehen. Wir können sehen, dass die Taktfrequenz bei 100 kHz lag.
Schritt 17: Capture: Kanal 2 und Seriell (TX0)
Was die Impulsfolge der TX0-Leitung betrifft, können wir das Startbit und die Rahmenpunkte jedes Bits sehen. Wir haben ein Byte, das das Zeichen "e" darstellt.
Schritt 18: Konfigurieren der Umgebung für unsere Tests
Hier haben wir mehrere Möglichkeiten zum Auslesen der Daten.
Schritt 19: Erfassen: Oszilloskop und Analysator
Sehen Sie sich hier den Bildschirm an, den ich von meinem Oszilloskop aufgenommen habe. Das Signal des Logikanalysators repräsentiert nur die High- und Low-Erkennungen, aber nicht die Signalqualität. Dies lässt sich am besten auf einem Oszilloskop beobachten.
Schritt 20: Erfassen: Beobachten eines Fehlers (Beispiel für seriellen Fehler)
Jetzt zeige ich ein Beispiel für einen Serienfehler, der mir tatsächlich passiert ist. Ich war mit einem GPRS-Modem, wie es bei einem Handy verwendet wird, der SIM-Karte, versucht, eine Verbindung zum ESP32 herzustellen. Aber es hat sich einfach nicht verbunden. Ich habe dann die Stromversorgung, die Verkabelung überprüft und die Platine gewechselt. Ich habe alles gemacht, aber nichts hat es behoben. Ich beschloss, eine logische Analyse durchzuführen: Ich entdeckte, dass das ESP-Signal auf UART 115200 nicht mehr übereinstimmte. Das heißt, der ESP32 spielte 115, 200 mit einer anderen Geschwindigkeit als dieser.
Dieser vom Parser erkannte Fehler wurde mit einem roten X angezeigt. Nach meinem Verständnis sagt das Programm, dass der Punkt, der so etwas hat, zeitlich halb verschoben ist. Wenn diese Verschiebung zunimmt, kann es vorkommen, dass alles nicht mehr übereinstimmt, sodass die Informationen die andere Seite nicht erreichen. Normalerweise kommt es an, aber der SIM800 ist empfindlich und wenn es nicht genau ist, erreichen die Informationen das andere Ende nicht.
Ich weiß nicht, ob das oft passiert oder nicht, aber es ist mir passiert, und so habe ich mich entschieden, dieses Thema hier anzusprechen. Was habe ich also getan? Ich wurde langsamer. Wenn Sie 9, 600, 19, 200 bis 38, 400 setzen, funktioniert es, was bei den 115, 200 nicht der Fall ist.
Schritt 21: Laden Sie die Dateien herunter
INO
Empfohlen:
12-Volt-Batterie-Hack! Sie werden Ihren Augen nicht trauen!!!!! (aktualisiert): 7 Schritte
12-Volt-Batterie-Hack! Sie werden Ihren Augen nicht trauen!!!!! (aktualisiert): Inspiriert von der Anleitung von Kipkay dachte ich, ich würde einige meiner eigenen Batterien einer anderen Marke abholen … Und, Junge, war ich überrascht