Innehållsförteckning:

Öppna dina ögon! Logisk analysator: 21 steg
Öppna dina ögon! Logisk analysator: 21 steg

Video: Öppna dina ögon! Logisk analysator: 21 steg

Video: Öppna dina ögon! Logisk analysator: 21 steg
Video: 20 och 21 januari. Var försiktig, högre makter kommer att överraska 2024, November
Anonim
Image
Image
hopsättning
hopsättning

Logikanalysatorn underlättar din visualisering av pulståget, som är bitarna som färdas i en kommunikationslinje. Således öppnar det dina ögon för att identifiera ett möjligt problem. Varför är detta viktigt? Det är ett mycket effektivt utvecklings- och feldetekteringsverktyg som kan spara tid. I den här videon i dag kommer vi att utvärdera vikten av den logiska analysatorn, observera några protokoll för vanliga metoder när vi använder den här enheten och exemplifiera ett detekteringsfel utan hjälp av en logisk analysator.

I den här videon använde jag en relativt billig (cirka $ 35) och effektiv modell, med ett grafiskt gränssnitt och gratis programvara.

Steg 1: Montering

Steg 2: Funktioner som används - Server

Funktioner som används - Server
Funktioner som används - Server

• Byxor för anslutningar

• 2 Arduinos (vi använde 2 Mega Arduinos 2560)

• Logisk analysator (vi använder Saleae)

• USB -anslutningskablar för Arduino och analysator.

• Oscilloskop (tillval)

• Protoboard

Steg 3: Krets används

Krets används
Krets används

Här har vi schemat, som visar övervakningen av tre stift: TX0, SDA och SCL. Vi har två Arduinos: en mästare och en slav.

Steg 4: Källkod: Master

I installationen kommer vi att inkludera biblioteket för i2c -kommunikation. Vi gick in i nätverket som Master och initierade serie 0. I Loop begärde vi slavdatabyte för kommunikation med vårt Arduino nummer 8, som vi definierade i exemplet. Vi skriver ut i serien, som kommer att utvärderas med logikanalysatorn, mottagna byte.

#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… char c = Wire.read (); // recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}

Steg 5: Källkod: Slav

I denna slavkod inkluderar jag igen biblioteket för i2c -kommunikation. Jag går in i nätverket som en slav med adressen 8. Vi registrerar begärningshändelsen och associerar den med funktionen "begäran". Du behöver inte göra någonting på slingan, bara ge en fördröjning på 0,1 sekunder.

Slutligen har vi förfrågningsfunktionen som kommer att utföras när begärningshändelsen av Master inträffar, som registrerades i Setup. Vi svarar slutligen med ett meddelande på 6 byte.

#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 evento de requisiçao // e associa à 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"); // responde com uma mensagem de 6 bytes}

Steg 6: Analysator: Hårdvara

Analysator: Hårdvara
Analysator: Hårdvara

Provhastighet upp till: 24 MHz

Logik: 5 V till 5,25 V

Tröskel på låg nivå 0,8 V

Tröskel på hög nivå 2,0 V

Ingångsimpedans på cirka 1 Mohm eller mer

Steg 7: Installation av Saleae -programvara

Saleae Software Installation
Saleae Software Installation

Programmet som tar emot data som fångats av logikanalysatorn och avkodar bitarna kan laddas ner på följande länk:

Steg 8: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

Jag visar gränssnittet här, vilket jag särskilt gillade eftersom det var rent.

Steg 9: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

Här är några konfigurationsalternativ:

• Genom att klicka på kanalnamnet kan vi ändra det.

• Vi kan avgöra om en av kanalerna kommer att fungera som en utlösare för fångst och detekteringsform.

• Genom att klicka och hålla kvar kanalnumret kan du ändra din position i listan.

• Genom att klicka på växeln kan vi konfigurera kanalvisualiseringen och utöka …

• … eller döljer kanalen. Vi döljer alla kanaler som vi inte kommer att använda.

Steg 10: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

Genom att klicka på pilarna på "Start" -knappen finns alternativen för samplingshastighet och inspelningens varaktighet.

Av någon anledning, om programvaran upptäcker att takten inte kan bibehållas, visas ett meddelande och hastigheten kommer automatiskt att sänkas tills ett funktionellt värde har uppnåtts.

Steg 11: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

Vi kommer också att inkludera protokollanalysatorer. Först är det I2C, som följer definitionerna av WIRE -biblioteket och associerar kanalerna korrekt. Slutligen introducerar vi analysatorn till asynkron serie. Vi måste vara noga med att konfigurera parametrarna korrekt enligt monteringen.

Steg 12: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

På fliken "Avkodade protokoll" bör vi kontrollera vilka protokollanalysatorer som är aktiverade. Där kommer uppgifterna att visas. På fliken "Kommentarer" kan vi lägga till några av resultaten för bättre visualisering. Klicka bara på ikonen "lägg till mätning".

Steg 13: Capture: Översikt

Capture: Översikt
Capture: Översikt

På skärmen för inspelning visar programmet datapulståget för SDA, SCL och TX0.

Steg 14: Capture: Resultat av protokollanalys

Capture: Resultat av protokollanalys
Capture: Resultat av protokollanalys

Här ser vi resultatet av fångsten. På fliken "Avkodade protokoll" har vi:

• Serverbegäran för slaven med id 8.

• Slavsvaret, sex tecken: "t", "e", "s", "t", "e" och ett mellanslag.

• Varje följs av en ACK -bit (Acknowledge) som indikerar korrekt byte -mottagning, förutom NACK (Not Acknowledge) -tecken.

• Därefter ser vi avkodningsresultatet för TX0 -serien, vilket anger tecknen som tagits emot och skickats till Arduino IDE -seriell terminal.

Steg 15: Capture: Channel 0 and Data (SDA)

Capture: Kanal 0 och data (SDA)
Capture: Kanal 0 och data (SDA)

I den här bilden har vi pulståget för SDA -linjen. Observera att varje överförd byte kan ses.

Steg 16: Capture: Channel 1 and Clock (SCL)

Capture: Channel 1 och Clock (SCL)
Capture: Channel 1 och Clock (SCL)

Nu har vi här pulståget för SCL -linjen. Du kan kontrollera mer information helt enkelt genom att placera musen över signalen, som du ser på bilden. Vi kan se att klockfrekvensen var vid 100 kHz.

Steg 17: Capture: Channel 2 och Serial (TX0)

Capture: Channel 2 och Serial (TX0)
Capture: Channel 2 och Serial (TX0)

När det gäller pulståget på TX0 -linjen kan vi se startbiten och rampunkterna för varje bit. Vi har en byte som representerar karaktären "e".

Steg 18: Konfigurera miljön för våra tester

Konfigurera miljön för våra tester
Konfigurera miljön för våra tester

Här har vi flera alternativ för att läsa data.

Steg 19: Capture: Oscilloskop och analysator

Capture: Oscilloskop och analysator
Capture: Oscilloskop och analysator

Se här på skärmen jag fångade från mitt oscilloskop. Logikanalysatorsignalen representerar endast höga och låga detekteringar, men den representerar inte signalkvaliteten. Detta kan bäst observeras på ett oscilloskop.

Steg 20: Capture: Observing a Failure (exempel på seriefel)

Capture: Observing a Failure (exempel på seriefel)
Capture: Observing a Failure (exempel på seriefel)

Nu ska jag visa ett exempel på ett seriefel som faktiskt hände mig. Jag var med ett GPRS -modem, den typ som används på en mobiltelefon, SIM -kortet, försökte ansluta till ESP32. Men det anslöt bara inte. Jag kontrollerade sedan strömförsörjningen, ledningarna och bytte styrelse. Jag gjorde allt, men inget fixade det. Jag bestämde mig för att lägga in en logisk analys: Jag upptäckte att ESP -signalen på UART 115200 började matcha. Det vill säga, ESP32 spelade vad som borde vara 115 200 med en annan hastighet än detta.

Det här felet, som identifierades av parsern, visades med ett X i rött. Enligt min förståelse säger programmet att punkten som har en sådan bit är halvt förskjuten i tiden. När denna förskjutning ökar kan det komma en tid då allt stämmer överens, så att information inte når den andra sidan. Den kommer vanligtvis, men SIM800 är känslig och om den inte är exakt når informationen inte andra änden.

Jag vet inte om detta är något som händer ofta eller inte, men det hände mig, och därför bestämde jag mig för att ta upp detta ämne här. Så vad gjorde jag? Jag saktade ner. Om du sätter 9, 600, 19, 200, upp till 38, 400 fungerar det, vilket inte sker med 115, 200.

Steg 21: Ladda ner filerna

PDF

INO

Rekommenderad: