Innholdsfortegnelse:

Åpne øynene dine! Logisk analysator: 21 trinn
Åpne øynene dine! Logisk analysator: 21 trinn

Video: Åpne øynene dine! Logisk analysator: 21 trinn

Video: Åpne øynene dine! Logisk analysator: 21 trinn
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, Juli
Anonim
Image
Image
montering
montering

Logikkanalysatoren letter visualiseringen av pulstoget, som er bitene som beveger seg i en kommunikasjonslinje. Dermed åpner det øynene dine for å identifisere et mulig problem. Hvorfor er dette viktig? Det er et veldig effektivt utviklings- og feilsøkingsverktøy som kan spare tid. I denne videoen i dag vil vi evaluere viktigheten av den logiske analysatoren, observere noen protokoller for vanlig praksis mens du bruker denne enheten, og eksemplifisere en påvisningssvikt uten hjelp av en logisk analysator.

I denne videoen brukte jeg en relativt billig (rundt $ 35) og effektiv modell, med et grafisk grensesnitt og gratis programvare.

Trinn 1: Montering

Trinn 2: Funksjoner som brukes - Server

Funksjoner som brukes - Server
Funksjoner som brukes - Server

• Gensere for tilkoblinger

• 2 Arduinos (vi brukte 2 Mega Arduinos 2560)

• Logisk analysator (vi bruker Saleae)

• USB -tilkoblingskabler for Arduino og analysator.

• Oscilloskop (valgfritt)

• Protoboard

Trinn 3: Krets brukt

Krets brukt
Krets brukt

Her har vi skjematisk, som viser overvåking av tre pinner: TX0, SDA og SCL. Vi har to Arduinos: en mester og en slave.

Trinn 4: Kildekode: Master

I oppsettet vil vi inkludere biblioteket for i2c -kommunikasjon. Vi gikk inn i nettverket som Master og initialiserte seriell 0. I Loop ba vi om slavedatabyte for kommunikasjon med vårt Arduino nummer 8, som vi definerte i eksemplet. Vi skriver ut serienummeret, som vil bli evaluert med logikkanalysatoren, mottatte 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 for 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}

Trinn 5: Kildekode: Slave

I denne slavekoden inkluderer jeg igjen biblioteket for i2c -kommunikasjon. Jeg går inn i nettverket som en slave med adressen 8. Vi registrerer forespørselshendelsen og knytter den til funksjonen "forespørsel". Du trenger ikke å gjøre noe på sløyfen, bare gi en forsinkelse på 0,1 sekund.

Til slutt har vi forespørselsfunksjonen som vil bli utført når forespørselshendelsen av Master oppstår, som ble registrert i Setup. Vi svarer til slutt med en melding 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}

Trinn 6: Analysator: Maskinvare

Analysator: Maskinvare
Analysator: Maskinvare

Prøvehastighet opptil: 24 MHz

Logikk: 5 V til 5,25 V

Lavnivå terskel 0,8 V

Terskel på høyt nivå 2,0 V

Inngangsimpedans på ca 1 Mohm eller mer

Trinn 7: Saleae programvareinstallasjon

Saleae programvareinstallasjon
Saleae programvareinstallasjon

Programmet som mottar data fanget opp av logikkanalysatoren og dekoder bitene, kan lastes ned på følgende lenke:

Trinn 8: Konfigurering av miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

Jeg viser grensesnittet her, som jeg likte spesielt godt fordi det var rent.

Trinn 9: Konfigurere miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

Her er noen konfigurasjonsalternativer:

• Ved å klikke på kanalnavnet kan vi endre det.

• Vi kan avgjøre om en av kanalene vil fungere som en trigger for fangst og form for deteksjon.

• Ved å klikke og holde på kanalnummeret kan du endre posisjonen din på listen.

• Ved å klikke på giret kan vi konfigurere kanalvisualiseringen og utvide …

• … eller skjule kanalen. Vi vil skjule alle kanalene vi ikke vil bruke.

Trinn 10: Konfigurering av miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

Ved å klikke på pilene på "Start" -knappen, er det alternativer for samplingsfrekvens og innspillingens varighet.

Av en eller annen grunn, hvis programvaren oppdager at hastigheten ikke kan opprettholdes, vises en melding og hastigheten reduseres automatisk til en funksjonell verdi er nådd.

Trinn 11: Konfigurere miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

Vi inkluderer også protokollanalysatorene. Først er det I2C, som følger definisjonene av WIRE -biblioteket, og knytter kanalene riktig. Til slutt vil vi introdusere analysatoren for asynkron serie. Vi må være forsiktige med å konfigurere parameterne korrekt i henhold til forsamlingen.

Trinn 12: Konfigurere miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

I kategorien "Dekoderte protokoller" bør vi kontrollere hvilke protokollanalysatorer som er aktivert. Der vil dataene vises. I kategorien "Kommentarer" kan vi legge til noen av resultatene for bedre visualisering. Bare klikk på "legg til måling" -ikonet.

Trinn 13: Capture: Oversikt

Capture: Oversikt
Capture: Oversikt

I fangstskjermen viser programmet datapulstoget til SDA, SCL og TX0.

Trinn 14: Capture: Resultat av protokollanalyse

Capture: Resultat av protokollanalyse
Capture: Resultat av protokollanalyse

Her ser vi resultatet av fangsten. I fanen "Dekoderte protokoller" har vi:

• Serverforespørselen for slaven med ID 8.

• Slavesvaret, seks tegn: "t", "e", "s", "t", "e" og et mellomrom.

• Hver etterfølges av en ACK -bit (Acknowledge) som indikerer riktig byte -mottak, bortsett fra mellomromstegnet NACK (Not Acknowledge).

• Deretter ser vi dekodingsresultatet for TX0 -serien, som angir tegnene som er mottatt og sendt til Arduino IDE -seriell terminal.

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

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

I dette bildet har vi pulstoget til SDA -linjen. Vær oppmerksom på at hver overførte byte kan sees.

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

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

Nå har vi her pulstoget til SCL -linjen. Du kan sjekke flere detaljer ved å plassere musen over signalet, som du ser på bildet. Vi kan se at klokkefrekvensen var på 100 kHz.

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

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

Når det gjelder pulstoget på TX0 -linjen, kan vi se startbiten og rammepunktene for hver bit. Vi har en byte som representerer karakteren "e".

Trinn 18: Konfigurere miljøet for våre tester

Konfigurere miljøet for våre tester
Konfigurere miljøet for våre tester

Her har vi flere alternativer for å lese dataene.

Trinn 19: Capture: Oscilloscope and Analyzer

Capture: Oscilloscope and Analyzer
Capture: Oscilloscope and Analyzer

Se her på skjermen jeg fanget fra oscilloskopet mitt. Logikkanalysatorsignalet representerer bare høye og lave deteksjoner, men det representerer ikke signalkvaliteten. Dette kan best observeres på et oscilloskop.

Trinn 20: Capture: Observing a Failure (eksempel på seriefeil)

Capture: Observing a Failure (eksempel på seriefeil)
Capture: Observing a Failure (eksempel på seriefeil)

Nå skal jeg vise et eksempel på en seriefeil, som faktisk skjedde med meg. Jeg var med et GPRS -modem, den typen som ble brukt på en mobiltelefon, SIM -kortet, prøvde å koble til ESP32. Men det koblet bare ikke. Jeg sjekket deretter strømforsyningen, ledningene og byttet bord. Jeg gjorde alt, men ingenting fikset det. Jeg bestemte meg for å sette inn en logisk analyse: Jeg oppdaget at ESP -signalet på UART 115200 begynte å mislykkes. Det vil si at ESP32 spilte det som skulle være 115 200 med en annen hastighet enn dette.

Denne feilen, som ble identifisert av parseren, ble vist med et X i rødt. Etter min forståelse sier programmet at poenget som har en slik bit er halvt forskjøvet i tid. Når dette skiftet øker, kan det komme en tid da alt er feil, slik at informasjon ikke når den andre siden. Den kommer vanligvis, men SIM800 er sensitiv, og hvis den ikke er nøyaktig, når ikke informasjonen den andre enden.

Jeg vet ikke om dette er noe som skjer ofte eller ikke, men det skjedde med meg, og derfor bestemte jeg meg for å ta opp dette emnet her. Så hva gjorde jeg? Jeg bremset farten. Hvis du setter 9, 600, 19, 200, opp til 38, 400, fungerer det, noe som ikke forekommer med 115, 200.

Trinn 21: Last ned filene

PDF

INO

Anbefalt: