Sadržaj:

Otvori oci! Logički analizator: 21 korak
Otvori oci! Logički analizator: 21 korak

Video: Otvori oci! Logički analizator: 21 korak

Video: Otvori oci! Logički analizator: 21 korak
Video: PS3 #2: Ressurecting the impossable! | EPIC rollercoaster repair that nearly broke me. 2024, Novembar
Anonim
Image
Image
Montaža
Montaža

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

U ovom videu sam koristio relativno jeftin (oko 35 USD) i efikasan model, sa grafičkim interfejsom i besplatnim softverom.

Korak 1: Montaža

Korak 2: Korištene funkcije - Server

Korištene značajke - Server
Korištene značajke - Server

• 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 (opcionalno)

• Protoboard

Korak 3: Upotrijebljeno kolo

Korišteno kolo
Korišteno kolo

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

Korak 4: Izvorni kod: Master

U Setup ćemo uključiti biblioteku za i2c komunikaciju. Ušli smo u mrežu kao Master i pokrenuli serijsku 0. U petlji smo tražili bajtove podataka slave za komunikaciju s našim Arduino brojem 8, kako smo definirali u primjeru. Štampani serijski broj, koji će se procijeniti logičkim analizatorom, štampa.

#include // uključuje biblioteku za komunikaciju I2C void setup () {Wire.begin (); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia serijski 0} void loop () {Wire.requestFrom (8, 6); // potrebno je 6 bajta za dodavanje escrava za endereço 8 while (Wire.available ()) {// enquanto houver bajtova za primaoca… char c = Wire.read (); // primi cada bajt i armazen kao znak Serial.print (c); // envia o karakteru pela serijski (na verdade vai parametar o međuspremniku)} delay (500); // aguarda meio segundo}

Korak 5: Izvorni kod: Slave

U ovaj slave kôd ponovo uključujem biblioteku 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 kada se dogodi događaj zahtjeva od strane Master -a, koji je registriran u programu Setup. Na kraju odgovaramo porukom od 6 bajtova.

#include // uključuje biblioteku za komunikaciju I2C void setup () {Wire.begin (8); // ulaz u rede como escravo com endereço 8 Wire.onRequest (requestEvent); // registracija za evento de requisiçao // e pridruživanje funkciji requestEvent} void loop () {delay (100); // nema fazona da nema petlje, apenasi aguarda 0, 1 segundo} // funkcioniraju que será izvršenje Quando ocorrer ili evento de requisição pelo mestre // za registraciju kao događaj bez postavljanja void requestEvent () {Wire.write ("teste"); // odgovori na poruku uma uma 6 bajtova}

Korak 6: Analizator: Hardver

Analizator: Hardver
Analizator: Hardver

Brzina uzorkovanja do: 24 MHz

Logika: 5 V do 5,25 V

Prag niskog nivoa 0,8 V

Visoki prag 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 okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja za naše testove

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

Korak 9: Konfiguriranje okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja 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 snimanje i oblik detekcije.

• Klikom i držanjem broja kanala možete promijeniti svoju poziciju na listi.

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

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

Korak 10: Konfiguriranje okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja za naše testove

Klikom na strelice dugmeta "Start", postoje opcije brzine uzorkovanja i trajanja 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 dostigne funkcionalna vrijednost.

Korak 11: Konfiguriranje okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja za naše testove

Uključit ćemo i analizator protokola. Prvo je to I2C, slijedeći definicije biblioteke WIRE i pravilno povezujući kanale. Konačno, upoznaćemo analizator sa asinhronom serijom. Moramo biti oprezni pri ispravnom konfiguriranju parametara prema sklopu.

Korak 12: Konfiguriranje okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja 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 ekranu za snimanje program prikazuje niz impulsa podataka 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 servera za slave sa id 8.

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

• Nakon svakog slijedi ACK bit (Acknowledge) koji označava tač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: kanal 1 i sat (SCL)
Snimanje: kanal 1 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 okruženja za naše testove

Konfiguriranje okruženja za naše testove
Konfiguriranje okruženja 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 ekran 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)

Sada ću pokazati primjer serijskog kvara koji mi se zapravo dogodio. Imao sam GPRS modem, kakav se koristi na mobilnom telefonu, SIM karticu, pokušavajući da se povežem sa ESP32. 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 greška, koju je identifikovao parser, prikazana je sa X u crvenoj boji. Koliko sam shvatio, program kaže da je tač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 šta sam uradio? Usporio sam. Ako stavite 9, 600, 19, 200, do 38, 400, funkcionira, što se ne događa sa 115, 200.

Korak 21: Preuzmite datoteke

PDF

JA NE

Preporučuje se: