Indholdsfortegnelse:

Åben dine øjne! Logisk analysator: 21 trin
Åben dine øjne! Logisk analysator: 21 trin

Video: Åben dine øjne! Logisk analysator: 21 trin

Video: Åben dine øjne! Logisk analysator: 21 trin
Video: Denne Video Kan Gætte Hvor Du Er! 2024, November
Anonim
Image
Image
montage
montage

Logikanalysatoren letter din visualisering af pulstoget, som er bitene, der bevæger sig i en kommunikationslinje. Således åbner det dine øjne for at identificere et muligt problem. Hvorfor er dette vigtigt? Det er et meget effektivt udviklings- og fejlsøgningsværktøj, der kan spare dig tid. I denne video i dag vil vi evaluere betydningen af den logiske analysator, observere nogle protokoller for almindelig praksis, mens vi bruger denne enhed, og eksemplificere en detektionsfejl uden hjælp fra en logisk analysator.

I denne video brugte jeg en relativt billig (omkring $ 35) og effektiv model med en grafisk grænseflade og gratis software.

Trin 1: Montering

Trin 2: Brugte funktioner - Server

Anvendte funktioner - Server
Anvendte funktioner - Server

• Jumpere til forbindelser

• 2 Arduinos (vi brugte 2 Mega Arduinos 2560)

• Logisk analysator (vi bruger Saleae)

• USB -tilslutningskabler til Arduino og analysator.

• Oscilloskop (valgfrit)

• Protoboard

Trin 3: Kredsløb brugt

Kredsløb brugt
Kredsløb brugt

Her har vi skematisk, som viser overvågning af tre ben: TX0, SDA og SCL. Vi har to Arduinos: en mester og en slave.

Trin 4: Kildekode: Master

I opsætningen inkluderer vi biblioteket til i2c -kommunikation. Vi kom ind på netværket som Master og initialiserede seriel 0. I Loop bad vi om slavedatabyte til kommunikation med vores Arduino nummer 8, som vi definerede i eksemplet. Vi udskriver serienummeret, som vil blive evalueret med den logiske analysator, de modtagne 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… 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)} forsinkelse (500); // aguarda meio segundo}

Trin 5: Kildekode: Slave

I denne slavekode inkluderer jeg igen biblioteket til i2c -kommunikation. Jeg går ind i netværket som en slave med adressen 8. Vi registrerer anmodningshændelsen og forbinder det med funktionen "anmodning". Du behøver ikke at gøre noget på sløjfen, bare give en forsinkelse på 0,1 sekund.

Endelig har vi den anmodningsfunktion, der vil blive udført, når anmodningshændelsen fra Master opstår, som blev registreret i Opsætning. Vi svarer endelig med en besked på 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 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}

Trin 6: Analysator: Hardware

Analysator: Hardware
Analysator: Hardware

Prøvehastighed op til: 24 MHz

Logik: 5 V til 5,25 V

Lavt niveau tærskel 0,8 V

Tærskel på højt niveau 2,0 V

Inputimpedans på ca. 1 Mohm eller mere

Trin 7: Installation af Saleae -software

Saleae Software Installation
Saleae Software Installation

Programmet, der modtager de data, der er indfanget af den logiske analysator og afkoder bitene, kan downloades på følgende link:

Trin 8: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

Jeg viser grænsefladen her, som jeg især kunne lide, fordi den var ren.

Trin 9: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

Her er nogle konfigurationsmuligheder:

• Ved at klikke på kanalnavnet kan vi ændre det.

• Vi kan afgøre, om en af kanalerne vil fungere som en trigger til registrering og form for detektering.

• Ved at klikke og holde på kanalnummeret kan du ændre din position på listen.

• Ved at klikke på gearet kan vi konfigurere kanalvisualiseringen og udvide …

• … eller skjule kanalen. Vi skjuler alle de kanaler, vi ikke vil bruge.

Trin 10: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

Ved at klikke på pilene på "Start" -knappen er der muligheder for samplingshastighed og optagelsens varighed.

Af en eller anden grund, hvis softwaren registrerer, at hastigheden ikke kan opretholdes, vises der en meddelelse, og hastigheden reduceres automatisk, indtil en funktionel værdi er nået.

Trin 11: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

Vi inkluderer også protokolanalysatorerne. Først er det I2C, der følger definitionerne af WIRE -biblioteket og forbinder kanalerne korrekt. Endelig introducerer vi analysatoren til asynkron seriel. Vi skal være omhyggelige med at konfigurere parametrene korrekt i henhold til samlingen.

Trin 12: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

På fanen "Dekodede protokoller" skal vi kontrollere, hvilke protokolanalysatorer der er aktiveret. Der vil dataene blive vist. På fanen "Annotationer" kan vi tilføje nogle af resultaterne for bedre visualisering. Bare klik på ikonet "tilføj måling".

Trin 13: Capture: Oversigt

Capture: Oversigt
Capture: Oversigt

I optagelsesskærmen viser programmet datapulstoget for SDA, SCL og TX0.

Trin 14: Capture: Resultat af protokolanalyse

Capture: Resultat af protokolanalyse
Capture: Resultat af protokolanalyse

Her ser vi resultatet af indfangningen. Under fanen "Dekodede protokoller" har vi:

• Serveranmodningen til slaven med id 8.

• Slave -svaret, seks tegn: "t", "e", "s", "t", "e" og et mellemrum.

• Hver efterfølges af en ACK -bit (Acknowledge), der angiver korrekt byte -modtagelse, undtagen NACK (Not Acknowledge) mellemrumstegn.

• Dernæst ser vi afkodningsresultatet af TX0 -serien, der angiver de modtagne tegn og sendt til Arduino IDE -serielle terminal.

Trin 15: Capture: Kanal 0 og data (SDA)

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

I dette billede har vi pulstoget fra SDA -linjen. Bemærk, at hver overført byte kan ses.

Trin 16: Capture: Channel 1 og Clock (SCL)

Capture: Kanal 1 og Ur (SCL)
Capture: Kanal 1 og Ur (SCL)

Nu har vi her pulstoget på SCL -linjen. Du kan kontrollere flere detaljer ved blot at placere musen over signalet, som du ser på billedet. Vi kan se, at urfrekvensen var på 100 kHz.

Trin 17: Capture: Channel 2 og Serial (TX0)

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

Hvad angår pulstoget på TX0 -linjen, kan vi se Start -bit og rammepunkterne for hver bit. Vi har en byte, der repræsenterer karakteren "e".

Trin 18: Konfiguration af miljøet til vores tests

Konfiguration af miljøet til vores tests
Konfiguration af miljøet til vores tests

Her har vi flere muligheder for at læse dataene.

Trin 19: Optagelse: Oscilloskop og analysator

Optagelse: Oscilloskop og analysator
Optagelse: Oscilloskop og analysator

Se her på skærmen jeg fangede fra mit oscilloskop. Det logiske analysatorsignal repræsenterer kun de høje og lave detektioner, men det repræsenterer ikke signalkvaliteten. Dette kan bedst observeres på et oscilloskop.

Trin 20: Capture: Observation a Failure (eksempel på seriefejl)

Capture: Observation a Failure (eksempel på seriefejl)
Capture: Observation a Failure (eksempel på seriefejl)

Nu viser jeg et eksempel på en seriefejl, som faktisk skete for mig. Jeg var med et GPRS -modem, den slags der blev brugt på en mobiltelefon, SIM -kortet, og forsøgte at oprette forbindelse til ESP32. Men det sluttede bare ikke. Jeg kontrollerede derefter strømforsyningen, ledningerne og skiftede tavlen. Jeg gjorde alt, men intet fikset det. Jeg besluttede at foretage en logisk analyse: Jeg opdagede, at ESP -signalet på UART 115200 begyndte at misforstå. Det vil sige, at ESP32 spillede, hvad der skulle være 115, 200 med en anden hastighed end denne.

Denne fejl, som blev identificeret af parseren, blev vist med et X i rødt. Efter min forståelse siger programmet, at det punkt, der har sådan lidt, er halvt forskudt i tid. Når dette skift stiger, kan der komme et tidspunkt, hvor alt er uoverensstemmende, så information ikke når den anden side. Det ankommer normalt, men SIM800 er følsom, og hvis det ikke er præcist, når oplysningerne ikke den anden ende.

Jeg ved ikke, om det er noget, der sker ofte eller ej, men det skete for mig, og derfor besluttede jeg mig for at behandle dette emne her. Så hvad gjorde jeg? Jeg bremsede farten. Hvis du sætter 9, 600, 19, 200, op til 38, 400, virker det, hvilket ikke sker med 115, 200.

Trin 21: Download filerne

PDF

INO

Anbefalede: