Inhoudsopgave:

Open je ogen! Logische analysator: 21 stappen
Open je ogen! Logische analysator: 21 stappen

Video: Open je ogen! Logische analysator: 21 stappen

Video: Open je ogen! Logische analysator: 21 stappen
Video: Ральф Лангнер: Взламывая Стакснет, кибер-оружие 21 века 2024, Juni-
Anonim
Image
Image
samenkomst
samenkomst

De logische analysator vergemakkelijkt uw visualisatie van de pulstrein, de bits die in een communicatielijn reizen. Het opent dus je ogen om een mogelijk probleem te identificeren. Waarom is dit belangrijk? Het is een zeer efficiënte tool voor ontwikkeling en foutdetectie die u tijd kan besparen. In deze video van vandaag evalueren we het belang van de logische analysator, observeren we enkele veelgebruikte protocollen tijdens het gebruik van dit apparaat en illustreren we een detectiefout zonder de hulp van een logische analysator.

In deze video heb ik een relatief goedkoop (ongeveer $ 35) en efficiënt model gebruikt, met een grafische interface en gratis software.

Stap 1: Montage

Stap 2: Gebruikte functies - Server

Gebruikte functies - Server
Gebruikte functies - Server

• Jumpers voor verbindingen

• 2 Arduino's (we gebruikten 2 Mega Arduino's 2560)

• Logical Analyzer (we gebruiken Saleae)

• USB-aansluitkabels voor Arduino en analyser.

• Oscilloscoop (optioneel)

• Protobord

Stap 3: Circuit gebruikt

Circuit gebruikt
Circuit gebruikt

Hier hebben we het schema, dat de bewaking van drie pinnen laat zien: TX0, SDA en SCL. We hebben twee Arduino's: een master en een slave.

Stap 4: Broncode: Master

In de Setup zullen we de bibliotheek voor i2c-communicatie opnemen. We kwamen het netwerk binnen als Master en initialiseerden seriële 0. In de Loop vroegen we slave-databytes aan voor communicatie met ons Arduino-nummer 8, zoals we in het voorbeeld hebben gedefinieerd. We printen in de serie, die zal worden geëvalueerd met de logische analysator, de ontvangen bytes.

#include //inclui a biblioteca para comunicação I2C void setup() { Wire.begin(); // Entra na rede como Mestre (andere en optionele 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… char c = Wire.read(); // recebe cada byte en amazena como karakter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} vertraging (500); //aguarda meio segundo}

Stap 5: Broncode: slaaf

In deze slave-code neem ik opnieuw de bibliotheek voor i2c-communicatie op. Ik betreed het netwerk als een slaaf met het adres 8. We registreren de aanvraaggebeurtenis en koppelen deze aan de functie "verzoek". U hoeft niets te doen in de lus, geef gewoon een vertraging van 0,1 seconde.

Ten slotte hebben we de verzoekfunctie die wordt uitgevoerd wanneer de verzoekgebeurtenis door de Master plaatsvindt, die is geregistreerd in Setup. We antwoorden tenslotte met een bericht van 6 bytes.

#include //inclui a biblioteca para comunicação I2C void setup() { Wire.begin(8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // registra o eventto de requisiçao // e associa à função requestEvent } void loop () { delay (100); //no faz nada no loop, apenas aguarda 0, 1 segundo} //função que será executada quando ocorrer of event to the requisição pelo mestre //foi registrada como eventto no setup void requestEvent() { Wire.write("teste "); // responde com uma mensagem de 6 bytes }

Stap 6: Analyser: hardware

Analysator: Hardware
Analysator: Hardware

Samplefrequentie tot: 24 MHz

Logisch: 5 V tot 5,25 V

Laagdrempelige drempel 0,8 V

Hoge drempel 2,0 V

Ingangsimpedantie van ongeveer 1 Mohm of meer

Stap 7: Installatie van Saleae-software

Saleae Software Installatie
Saleae Software Installatie

Het programma dat de gegevens ontvangt die zijn vastgelegd door de logic analyzer en de bits decodeert, kan worden gedownload via de volgende link:

Stap 8: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

Ik laat hier de interface zien, die ik vooral leuk vond omdat hij schoon was.

Stap 9: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

Hier zijn enkele configuratie-opties:

• Door op de kanaalnaam te klikken, kunnen we deze wijzigen.

• We kunnen bepalen of een van de kanalen zal dienen als trigger voor capture en de vorm van detectie.

• Door op het kanaalnummer te klikken en vast te houden, kunt u uw positie in de lijst wijzigen.

• Door op het tandwiel te klikken, kunnen we de kanaalvisualisatie configureren, uitbreiden …

• … of het kanaal verbergen. We verbergen alle kanalen die we niet gebruiken.

Stap 10: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

Door op de pijlen van de "Start"-knop te klikken, zijn er de opties van Sampling Rate en duur van de opname.

Als de software om de een of andere reden detecteert dat de snelheid niet kan worden gehandhaafd, wordt een bericht weergegeven en wordt de snelheid automatisch verlaagd totdat een functionele waarde is bereikt.

Stap 11: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

We zullen ook de protocolanalysatoren opnemen. Ten eerste is het de I2C, die de definities van de WIRE-bibliotheek volgt en de kanalen correct associeert. Ten slotte zullen we de analysator kennis laten maken met asynchrone seriële. We moeten voorzichtig zijn om de parameters correct te configureren volgens de assembly.

Stap 12: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

Op het tabblad "Gedecodeerde protocollen" moeten we controleren welke protocolanalysatoren zijn ingeschakeld. Daar verschijnen de gegevens. Op het tabblad "Annotaties" kunnen we enkele resultaten toevoegen voor een betere visualisatie. Klik gewoon op het pictogram "Meting toevoegen".

Stap 13: Vastleggen: Overzicht

Vastleggen: Overzicht
Vastleggen: Overzicht

In het opnamescherm toont het programma de datapulstrein van de SDA, SCL en TX0.

Stap 14: Vastleggen: resultaat van protocolanalyse

Vastleggen: resultaat van protocolanalyse
Vastleggen: resultaat van protocolanalyse

Hier zien we het resultaat van de opname. Op het tabblad "Gedecodeerde protocollen" hebben we:

• Het serververzoek voor de slave met id 8.

• Het slave-antwoord, zes tekens: "t", "e", "s", "t", "e" en een spatie.

• Elk wordt gevolgd door een ACK-bit (Acknowledge) die de correcte byte-ontvangst aangeeft, behalve het NACK (Not Acknowledge)-spatieteken.

• Vervolgens zien we het decoderingsresultaat van de TX0-serie, met vermelding van de tekens die zijn ontvangen en verzonden naar de Arduino IDE seriële terminal.

Stap 15: Vastleggen: kanaal 0 en gegevens (SDA)

Vastleggen: kanaal 0 en gegevens (SDA)
Vastleggen: kanaal 0 en gegevens (SDA)

In deze afbeelding hebben we de pulstrein van de SDA-lijn. Merk op dat elke verzonden byte kan worden bekeken.

Stap 16: Vastleggen: kanaal 1 en klok (SCL)

Vastleggen: kanaal 1 en klok (SCL)
Vastleggen: kanaal 1 en klok (SCL)

Nu hebben we hier de pulstrein van de SCL-lijn. U kunt meer details controleren door de muis op het signaal te plaatsen, zoals u in de afbeelding ziet. We kunnen zien dat de klokfrequentie 100 kHz was.

Stap 17: Vastleggen: kanaal 2 en serieel (TX0)

Vastleggen: kanaal 2 en serieel (TX0)
Vastleggen: kanaal 2 en serieel (TX0)

Wat betreft de pulstrein van de TX0-lijn, we kunnen het Start-bit en de framingpunten van elk bit zien. We hebben een byte die het teken "e" vertegenwoordigt.

Stap 18: De omgeving configureren voor onze tests

De omgeving configureren voor onze tests
De omgeving configureren voor onze tests

Hier hebben we verschillende opties voor het lezen van de gegevens.

Stap 19: Vastleggen: oscilloscoop en analysator

Vastleggen: Oscilloscoop en analysator
Vastleggen: Oscilloscoop en analysator

Kijk hier naar het scherm dat ik heb vastgelegd met mijn oscilloscoop. Het signaal van de logische analysator vertegenwoordigt alleen de hoge en lage detecties, maar het vertegenwoordigt niet de signaalkwaliteit. Dit is het beste waar te nemen op een oscilloscoop.

Stap 20: Vastleggen: een storing waarnemen (voorbeeld van een seriestoring)

Vastleggen: een storing waarnemen (voorbeeld van een seriestoring)
Vastleggen: een storing waarnemen (voorbeeld van een seriestoring)

Nu zal ik een voorbeeld laten zien van een seriële storing, die mij echt is overkomen. Ik was met een GPRS-modem, het soort dat op een mobiele telefoon wordt gebruikt, de simkaart, en probeerde verbinding te maken met de ESP32. Maar het maakte gewoon geen verbinding. Ik heb toen de voeding gecontroleerd, de bedrading en het bord vervangen. Ik heb alles gedaan, maar niets loste het op. Ik besloot een logische analyse uit te voeren: ik ontdekte dat het ESP-signaal op UART 115200 niet overeenkwam. Dat wil zeggen, de ESP32 speelde wat 115, 200 zou moeten zijn met een andere snelheid dan deze.

Deze fout, die werd geïdentificeerd door de parser, werd weergegeven met een X in het rood. Als ik het goed begrijp, zegt het programma dat het punt dat zo'n bit heeft half verschoven is in de tijd. Naarmate deze verschuiving toeneemt, kan er een moment komen dat alles niet op elkaar aansluit, zodat informatie de andere kant niet bereikt. Het komt meestal aan, maar de SIM800 is gevoelig en als het niet exact is, bereikt de informatie de andere kant niet.

Ik weet niet of dit iets is dat vaak voorkomt, maar het is mij overkomen en daarom besloot ik dit onderwerp hier te bespreken. Dus wat heb ik gedaan? Ik vertraagde. Als je 9, 600, 19, 200, tot 38, 400 zet, werkt het, wat niet gebeurt met de 115, 200.

Stap 21: Download de bestanden

PDF

INO

Aanbevolen: