Turinys:

Atmerk akis! Loginis analizatorius: 21 žingsnis
Atmerk akis! Loginis analizatorius: 21 žingsnis

Video: Atmerk akis! Loginis analizatorius: 21 žingsnis

Video: Atmerk akis! Loginis analizatorius: 21 žingsnis
Video: Chasing The Rise - Atmerk Akis (Open Your Eyes) 2024, Lapkritis
Anonim
Image
Image
Surinkimas
Surinkimas

Loginis analizatorius leidžia jums vizualizuoti pulso traukinį, kuris yra bitai, keliaujantys ryšio linija. Taigi jis atveria akis, kad nustatytumėte galimą problemą. Kodėl tai svarbu? Tai labai efektyvus kūrimo ir gedimų aptikimo įrankis, kuris gali sutaupyti jūsų laiko. Šiandien šiame vaizdo įraše įvertinsime loginio analizatoriaus svarbą, stebėsime kai kuriuos įprastos praktikos protokolus, kai naudosime šį įrenginį, ir parodysime aptikimo gedimą be loginio analizatoriaus pagalbos.

Šiame vaizdo įraše naudojau palyginti nebrangų (apie 35 USD) ir efektyvų modelį su grafine sąsaja ir nemokama programine įranga.

1 žingsnis: Surinkimas

2 veiksmas: naudojamos funkcijos - serveris

Naudotos funkcijos - serveris
Naudotos funkcijos - serveris

• Džemperiai jungtims

• 2 „Arduinos“(mes naudojome 2 „Mega Arduinos 2560“)

• Loginis analizatorius (mes naudojame „Saleae“)

• USB jungties kabeliai „Arduino“ir analizatoriui.

• Osciloskopas (neprivaloma)

• Protoboard

3 žingsnis: naudojama grandinė

Naudota grandinė
Naudota grandinė

Čia yra schema, kurioje parodytas trijų kaiščių stebėjimas: TX0, SDA ir SCL. Turime du „Arduinos“: šeimininką ir vergą.

4 žingsnis: šaltinio kodas: pagrindinis

Į sąranką įtrauksime i2c ryšio biblioteką. Mes įėjome į tinklą kaip pagrindinis ir inicijavome serijinį 0. „Loop“mes paprašėme vergų duomenų baitų, kad galėtume bendrauti su mūsų „Arduino“numeriu 8, kaip apibrėžta pavyzdyje. Spausdiname serijoje, kuri bus įvertinta naudojant loginį analizatorių, gautus baitus.

#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); // inicijuoti serijinį 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}

5 žingsnis: šaltinio kodas: vergas

Į šį vergo kodą aš vėl įtraukiu i2c ryšio biblioteką. Aš įeinu į tinklą kaip vergas su adresu 8. Mes užregistruojame užklausos įvykį ir susiejame jį su „užklausos“funkcija. Jums nieko nereikia daryti, tiesiog atidėkite 0,1 sekundės vėlavimą.

Galiausiai turime užklausos funkciją, kuri bus vykdoma, kai įvyks pagrindinio užklausos įvykis, kuris buvo užregistruotas sąrankoje. Galiausiai atsakome 6 baitų žinute.

#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 arba įvykio reikalavimas // 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"); // atsakyti com uma mensagem de 6 bytes}

6 žingsnis: analizatorius: aparatinė įranga

Analizatorius: aparatinė įranga
Analizatorius: aparatinė įranga

Mėginių dažnis iki: 24 MHz

Logika: nuo 5 V iki 5,25 V

Žemo lygio slenkstis 0,8 V

Aukšto lygio slenkstis 2,0 V

Įėjimo varža apie 1 Mohm ar daugiau

7 žingsnis: „Saleae“programinės įrangos diegimas

Parduodamos programinės įrangos diegimas
Parduodamos programinės įrangos diegimas

Programą, kuri priima logikos analizatoriaus užfiksuotus duomenis ir iššifruoja bitus, galima atsisiųsti iš šios nuorodos:

8 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Čia parodau sąsają, kuri man ypač patiko, nes ji buvo švari.

9 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Štai keletas konfigūracijos parinkčių:

• Spustelėję kanalo pavadinimą galime jį pakeisti.

• Galime nustatyti, ar vienas iš kanalų veiks kaip fiksavimo priemonė ir aptikimo forma.

• Spustelėję ir laikydami kanalo numerį, galite pakeisti savo poziciją sąraše.

• Spustelėję krumpliaratį galime sukonfigūruoti kanalo vizualizaciją, išplėsti…

•… arba paslėpti kanalą. Mes paslėpsime visus kanalus, kurių nenaudosime.

10 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Spustelėjus mygtukus „Pradėti“rodykles, yra parinktys Atrankos dažnis ir įrašymo trukmė.

Dėl tam tikrų priežasčių, jei programinė įranga nustato, kad norma negali būti išlaikyta, bus rodomas pranešimas ir automatiškai norma bus sumažinta, kol bus pasiekta funkcinė vertė.

11 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Taip pat įtraukiame protokolo analizatorius. Pirmiausia tai I2C, laikantis WIRE bibliotekos apibrėžimų ir teisingai susiejant kanalus. Galiausiai mes pristatysime analizatorių asinchroninei serijai. Turime būti atsargūs, kad teisingai sukonfigūruotumėte parametrus pagal surinkimą.

12 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Skirtuke „Iššifruoti protokolai“turėtume patikrinti, kurie protokolų analizatoriai įjungti. Ten pasirodys duomenys. Skirtuke „Anotacijos“galime pridėti keletą rezultatų, kad būtų geriau vizualizuojama. Tiesiog spustelėkite piktogramą „pridėti matavimą“.

13 veiksmas: fiksavimas: apžvalga

Užfiksuoti: apžvalga
Užfiksuoti: apžvalga

Fiksavimo ekrane programa rodo SDA, SCL ir TX0 duomenų impulsų srautą.

14 žingsnis: fiksavimas: protokolo analizės rezultatas

Užfiksuoti: protokolo analizės rezultatas
Užfiksuoti: protokolo analizės rezultatas

Čia matome užfiksavimo rezultatą. Skirtuke „Iššifruoti protokolai“turime:

• Serverio užklausa vergui, kurio ID yra 8.

• Vergo atsakymas, šeši simboliai: „t“, „e“, „s“, „t“, „e“ir tarpas.

• Po kiekvieno yra ACK bitas (Acknowledge), nurodantis teisingą baitų priėmimą, išskyrus NACK (Not Acknowledge) tarpo simbolį.

• Toliau matome TX0 serijos dekodavimo rezultatą, nurodantį gautus ir į „Arduino IDE“serijos terminalą siunčiamus simbolius.

15 veiksmas: fiksavimas: 0 kanalas ir duomenys (SDA)

Fiksavimas: 0 kanalas ir duomenys (SDA)
Fiksavimas: 0 kanalas ir duomenys (SDA)

Šiame paveikslėlyje mes turime SDA linijos impulsų traukinį. Atminkite, kad galima peržiūrėti kiekvieną perduotą baitą.

16 veiksmas: užfiksuokite: 1 kanalas ir laikrodis (SCL)

Fotografavimas: 1 kanalas ir laikrodis (SCL)
Fotografavimas: 1 kanalas ir laikrodis (SCL)

Dabar mes turime SCL linijos impulsinį traukinį. Daugiau informacijos galite patikrinti tiesiog užvedę pelę ant signalo, kaip matote paveikslėlyje. Matome, kad laikrodžio dažnis buvo 100 kHz.

17 veiksmas: fiksavimas: 2 kanalas ir serijinis (TX0)

Fotografavimas: 2 kanalas ir serijinis (TX0)
Fotografavimas: 2 kanalas ir serijinis (TX0)

Kalbant apie TX0 linijos impulsinį traukinį, matome pradžios bitą ir kiekvieno bito kadravimo taškus. Turime baitą, simbolizuojantį simbolį „e“.

18 žingsnis: Aplinkos konfigūravimas mūsų bandymams

Aplinkos konfigūravimas mūsų bandymams
Aplinkos konfigūravimas mūsų bandymams

Čia yra keletas duomenų skaitymo variantų.

19 veiksmas: užfiksuokite: osciloskopas ir analizatorius

Fotografavimas: osciloskopas ir analizatorius
Fotografavimas: osciloskopas ir analizatorius

Pažiūrėkite čia į ekraną, kurį užfiksavau iš savo osciloskopo. Loginio analizatoriaus signalas atspindi tik didžiausius ir žemiausius aptikimus, tačiau jis neatspindi signalo kokybės. Tai geriausiai galima pastebėti naudojant osciloskopą.

20 veiksmas: fiksavimas: gedimo stebėjimas (serijos gedimo pavyzdys)

Fiksavimas: gedimo stebėjimas (serijos gedimo pavyzdys)
Fiksavimas: gedimo stebėjimas (serijos gedimo pavyzdys)

Dabar parodysiu serijos gedimo pavyzdį, kuris iš tikrųjų atsitiko man. Bandžiau prisijungti prie ESP32 su GPRS modemu, naudojamu mobiliajame telefone, SIM kortelėje. Bet tiesiog neprisijungė. Tada patikrinau maitinimo šaltinį, laidus ir pakeičiau plokštę. Aš padariau viską, bet niekas to neištaisė. Aš nusprendžiau atlikti loginę analizę: sužinojau, kad ESP signalas UART 115200 pradėjo nesutapti. Tai yra, ESP32 grojo 115, 200 kitu greičiu nei šis.

Ši klaida, kurią nustatė analizatorius, buvo rodoma raudonai X. Mano supratimu, programoje sakoma, kad taškas, turintis tokį bitą, laikui bėgant yra pusiau išstumtas. Kai šis poslinkis didėja, gali ateiti laikas, kai viskas nesutampa, kad informacija nepasiektų kitos pusės. Paprastai jis atvyksta, tačiau SIM800 yra jautrus ir jei jis nėra tikslus, informacija nepasiekia kito galo.

Nežinau, ar tai nutinka dažnai, ar ne, bet taip atsitiko man, todėl nusprendžiau šią temą nagrinėti čia. Taigi ką aš padariau? Sulėtinau greitį. Jei įdėsite 9, 600, 19, 200, iki 38, 400, tai veiks, o tai neįvyksta naudojant 115, 200.

21 veiksmas: atsisiųskite failus

PDF

AŠ NE

Rekomenduojamas: