Sadržaj:

Otvori oči! Logički analizator: 21 korak
Otvori oči! Logički analizator: 21 korak

Video: Otvori oči! Logički analizator: 21 korak

Video: Otvori oči! Logički analizator: 21 korak
Video: PS3 #2: Ressurecting the impossable! | EPIC rollercoaster repair that nearly broke me. 2024, Srpanj
Anonim
Image
Image
Skupština
Skupština

Logički analizator olakšava vizualizaciju impulsnog niza koji su bitovi koji putuju u komunikacijskoj liniji. Tako vam otvara oči za identifikaciju mogućeg problema. Zašto je to važno? To je vrlo učinkovit alat za razvoj i otkrivanje grešaka koji vam može uštedjeti vrijeme. U ovom ćemo današnjem videu procijeniti važnost logičkog analizatora, promatrati neke protokole uobičajenih praksi tijekom korištenja ovog uređaja i primjer greške otkrivanja bez pomoći logičkog analizatora.

U ovom videu koristio sam relativno jeftin (oko 35 USD) i učinkovit model s grafičkim sučeljem i besplatnim softverom.

Korak 1: Montaža

Korak 2: Korištene značajke - poslužitelj

Korištene značajke - poslužitelj
Korištene značajke - poslužitelj

• Kratkospojnici za povezivanje

• 2 Arduina (koristili smo 2 Mega Arduina 2560)

• Logički analizator (koristimo Saleae)

• USB priključni kabeli za Arduino i analizator.

• Osciloskop (izborno)

• Protoboard

Korak 3: Korišteni krug

Korišteno kolo
Korišteno kolo

Ovdje imamo shemu koja prikazuje nadzor tri pina: TX0, SDA i SCL. Imamo dva Arduina: gospodara i roba.

Korak 4: Izvorni kod: Master

U Setup ćemo uključiti knjižnicu za i2c komunikaciju. Ušli smo u mrežu kao glavni i inicijalizirali serijski 0. U petlji smo tražili slave bajtove podataka za komunikaciju s našim Arduino brojem 8, kako smo definirali u primjeru. Ispisujemo serijske brojeve, koji će se ocijeniti logičkim analizatorom, primljenih bajtova.

#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); // potrebno je 6 bajtova za dodavanje do endcrama 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}

Korak 5: Izvorni kod: Slave

U ovaj podređeni kod opet ubrajam knjižnicu za i2c komunikaciju. Ulazim u mrežu kao rob s adresom 8. Registriramo događaj zahtjeva i povezujemo ga s funkcijom "zahtjev". Ne morate ništa raditi na petlji, samo odgodite 0,1 sekundu.

Konačno, imamo funkciju zahtjeva koja će se izvršiti kad se dogodi događaj zahtjeva od strane Master -a, koji je registriran u programu Setup. Na kraju odgovaramo porukom od 6 bajtova.

#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); // registracija 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 registda como evento no setup void requestEvent () {Wire.write ("teste"); // odgovori com uma mensagem od 6 bajtova}

Korak 6: Analizator: Hardver

Analizator: Hardver
Analizator: Hardver

Brzina uzorkovanja do: 24 MHz

Logika: 5 V do 5,25 V

Prag niske razine 0,8 V

Prag visoke razine 2,0 V

Ulazna impedancija od oko 1 Mohm ili više

Korak 7: Instalacija softvera Saleae

Instalacija softvera Saleae
Instalacija softvera Saleae

Program koji prima podatke snimljene logičkim analizatorom i dekodira bitove može se preuzeti na sljedećoj poveznici:

Korak 8: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Ovdje prikazujem sučelje koje mi se posebno svidjelo jer je bilo čisto.

Korak 9: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Evo nekoliko opcija konfiguracije:

• Klikom na naziv kanala možemo ga promijeniti.

• Možemo odrediti hoće li jedan od kanala poslužiti kao okidač za hvatanje i oblik otkrivanja.

• Klikom i držanjem broja kanala možete promijeniti svoj položaj na popisu.

• Klikom na zupčanik možemo konfigurirati vizualizaciju kanala, proširiti …

• … ili skrivanje kanala. Sakriti ćemo sve kanale koje nećemo koristiti.

Korak 10: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Klikom na strelice gumba "Start" postoje opcije Sampling Rate i trajanje snimanja.

Iz nekog razloga, ako softver otkrije da se stopa ne može održati, prikazat će se poruka i automatski će se stopa smanjivati dok se ne postigne funkcionalna vrijednost.

Korak 11: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Uključit ćemo i analizatore protokola. Prvo je to I2C, slijedeći definicije knjižnice WIRE i ispravno povezujući kanale. Na kraju ćemo analizator upoznati s asinkronom serijom. Moramo biti oprezni kako bismo ispravno konfigurirali parametre prema sklopu.

Korak 12: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Na kartici "Dekodirani protokoli" trebali bismo provjeriti koji su analizatori protokola omogućeni. Tamo će se pojaviti podaci. Na kartici "Napomene" možemo dodati neke rezultate za bolju vizualizaciju. Samo kliknite na ikonu "dodaj mjerenje".

Korak 13: Snimanje: Pregled

Snimanje: Pregled
Snimanje: Pregled

Na zaslonu za snimanje program prikazuje podatkovni impulsni niz SDA, SCL i TX0.

Korak 14: Snimanje: rezultat analize protokola

Hvatanje: Rezultat analize protokola
Hvatanje: Rezultat analize protokola

Ovdje vidimo rezultat hvatanja. Na kartici "Dekodirani protokoli" imamo:

• Zahtjev poslužitelja za slave s id 8.

• Odgovor slave, šest znakova: "t", "e", "s", "t", "e" i razmak.

• Nakon svakog slijedi ACK bit (Acknowledge) koji označava točan prijem bajta, osim razmaka NACK (Not Acknowledge).

• Zatim vidimo rezultat dekodiranja TX0 serije, koji označava primljene znakove i poslane na Arduino IDE serijski terminal.

Korak 15: Snimanje: kanal 0 i podaci (SDA)

Snimanje: kanal 0 i podaci (SDA)
Snimanje: kanal 0 i podaci (SDA)

Na ovoj slici imamo pulsni niz SDA linije. Imajte na umu da se svaki preneseni bajt može pregledati.

Korak 16: Snimanje: 1. kanal i sat (SCL)

Snimanje: 1. kanal i sat (SCL)
Snimanje: 1. kanal i sat (SCL)

Ovdje imamo pulsni niz SCL linije. Više detalja možete provjeriti postavljanjem miša iznad signala, kao što vidite na slici. Možemo vidjeti da je frekvencija takta bila 100 kHz.

Korak 17: Snimanje: kanal 2 i serijski (TX0)

Snimanje: kanal 2 i serijski (TX0)
Snimanje: kanal 2 i serijski (TX0)

Što se tiče impulsnog niza linije TX0, možemo vidjeti početni bit i točke uokvirivanja svakog bita. Imamo bajt koji predstavlja znak "e".

Korak 18: Konfiguriranje okoliša za naše testove

Konfiguriranje okoliša za naše testove
Konfiguriranje okoliša za naše testove

Ovdje imamo nekoliko mogućnosti za čitanje podataka.

Korak 19: Snimanje: osciloskop i analizator

Snimanje: osciloskop i analizator
Snimanje: osciloskop i analizator

Pogledajte ovdje zaslon koji sam snimio svojim osciloskopom. Signal logičkog analizatora predstavlja samo visoke i niske detekcije, ali ne predstavlja kvalitetu signala. To se najbolje može vidjeti na osciloskopu.

Korak 20: Snimanje: Uočavanje kvara (primjer serijskog kvara)

Snimanje: Uočavanje kvara (primjer serijskog kvara)
Snimanje: Uočavanje kvara (primjer serijskog kvara)

Pokazat ću primjer serijskog kvara koji mi se zapravo dogodio. Pokušavao sam se spojiti na ESP32 s GPRS modemom, takvim koji se koristi na mobitelu, SIM karticom. Ali to se jednostavno nije povezalo. Zatim sam provjerio napajanje, ožičenje i promijenio ploču. Učinio sam sve, ali ništa nije popravilo. Odlučio sam staviti logičku analizu: otkrio sam da se ESP signal na UART 115200 počeo neusklađivati. Odnosno, ESP32 je igrao ono što bi trebalo biti 115, 200 drugom brzinom od ove.

Ova pogreška koju je identificirao raščlanjivač prikazana je s X u crvenoj boji. Koliko sam shvatio, program kaže da je točka koja ima takav dio napola pomaknuta u vremenu. Kako se taj pomak povećava, može doći vrijeme kada se sve ne podudara, tako da informacije ne dopiru do druge strane. Obično stiže, ali SIM800 je osjetljiv i ako nije točan, informacije ne dolaze do drugog kraja.

Ne znam je li to nešto što se često događa ili ne, ali dogodilo se to meni, pa sam odlučio riješiti tu temu ovdje. Pa što sam učinio? Usporio sam. Ako stavite 9, 600, 19, 200, do 38, 400, to radi, što se ne događa sa 115, 200.

Korak 21: Preuzmite datoteke

PDF

INO

Preporučeni: