Cuprins:

Deschide-ti ochii! Analizor logic: 21 de pași
Deschide-ti ochii! Analizor logic: 21 de pași

Video: Deschide-ti ochii! Analizor logic: 21 de pași

Video: Deschide-ti ochii! Analizor logic: 21 de pași
Video: TRUCURI DE ÎNFRUMUSEȚARE & HAINE DIY! Schimbă-ți lookul! Trucuri pentru cusut, marca 123 GO! SCHOOL 2024, Noiembrie
Anonim
Image
Image
Asamblare
Asamblare

Analizorul logic vă facilitează vizualizarea trenului de impulsuri, care sunt biții care călătoresc într-o linie de comunicație. Astfel, îți deschide ochii pentru a identifica o posibilă problemă. De ce este important acest lucru? Este un instrument de dezvoltare și detectare a defecțiunilor foarte eficient, care vă poate economisi timp. În acest videoclip de astăzi, vom evalua importanța analizorului logic, vom respecta unele protocoale ale practicilor obișnuite în timpul utilizării acestui dispozitiv și vom exemplifica o eroare de detectare fără ajutorul unui analizor logic.

În acest videoclip, am folosit un model relativ ieftin (în jur de 35 USD) și eficient, cu o interfață grafică și software gratuit.

Pasul 1: Asamblare

Pasul 2: Caracteristici utilizate - Server

Caracteristici utilizate - Server
Caracteristici utilizate - Server

• Jersee pentru conexiuni

• 2 Arduinos (am folosit 2 Mega Arduinos 2560)

• Analizor logic (folosim Saleae)

• Cabluri de conexiune USB pentru Arduino și analizor.

• Osciloscop (opțional)

• Protoboard

Pasul 3: Circuit utilizat

Circuit folosit
Circuit folosit

Aici avem schema, care arată monitorizarea a trei pini: TX0, SDA și SCL. Avem doi Arduino: un stăpân și un sclav.

Pasul 4: Cod sursă: Master

În Setup, vom include biblioteca pentru comunicarea i2c. Am intrat în rețea ca Master și am inițializat seria 0. În buclă, am solicitat octeți de date slave pentru comunicarea cu numărul nostru Arduino 8, așa cum am definit în exemplu. Printăm în serial, care va fi evaluat cu ajutorul analizatorului logic, octeții primiți.

#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); // începe 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 adevăr vai para o buffer)} delay (500); // aguarda meio segundo}

Pasul 5: Cod sursă: Sclav

În acest cod slave, includ din nou biblioteca pentru comunicația i2c. Intru în rețea ca un sclav cu adresa 8. Înregistrăm evenimentul de solicitare și îl asociem cu funcția „solicitare”. Nu trebuie să faceți nimic pe buclă, doar dați o întârziere de 0,1 secunde.

În cele din urmă, avem funcția de solicitare care va fi executată atunci când apare evenimentul de solicitare de către Master, care a fost înregistrat în Setup. Răspundem, în cele din urmă, cu un mesaj de 6 octeți.

#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} // funcția care va fi executată când se va întâmpla sau se va solicita părul mestre // s-a înregistrat ca eveniment fără setup void requestEvent () {Wire.write ("teste"); // responde com uma mensagem de 6 bytes}

Pasul 6: Analizor: Hardware

Analizor: Hardware
Analizor: Hardware

Rată de eșantionare până la: 24 MHz

Logică: 5 V la 5,25 V

Prag de nivel scăzut 0,8 V

Prag de nivel înalt 2,0 V

Impedanță de intrare de aproximativ 1 Mohm sau mai mult

Pasul 7: Instalarea software-ului Saleae

Instalare software Saleae
Instalare software Saleae

Programul care primește datele captate de analizorul logic și decodează biții poate fi descărcat de la următorul link:

Pasul 8: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

Arăt aici interfața, care mi-a plăcut în mod special, deoarece era curată.

Pasul 9: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

Iată câteva opțiuni de configurare:

• Făcând clic pe numele canalului, îl putem schimba.

• Putem stabili dacă unul dintre canale va servi drept declanșator pentru captură și forma de detectare.

• Făcând clic și menținând apăsat numărul canalului, vă puteți schimba poziția în listă.

• Dând clic pe angrenaj, putem configura vizualizarea canalului, extinzând …

•… sau ascunderea canalului. Vom ascunde toate canalele pe care nu le vom folosi.

Pasul 10: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

Dând clic pe săgețile butonului „Start”, există opțiunile de eșantionare și durata înregistrării.

Din anumite motive, dacă software-ul detectează că rata nu poate fi menținută, va fi afișat un mesaj și automat rata va fi redusă până la atingerea unei valori funcționale.

Pasul 11: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

Vom include, de asemenea, analizoare de protocol. Mai întâi este I2C, urmând definițiile bibliotecii WIRE și asociind corect canalele. În cele din urmă, vom introduce analizorul în serie asincronă. Trebuie să fim atenți pentru a configura corect parametrii în funcție de ansamblu.

Pasul 12: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

În fila „Protocoale decodificate”, ar trebui să verificăm ce analizoare de protocol sunt activate. Acolo, datele vor apărea. În fila „Adnotări”, putem adăuga câteva dintre rezultate pentru o vizualizare mai bună. Doar faceți clic pe pictograma „adăugați măsurare”.

Pasul 13: Captură: Prezentare generală

Captură: Prezentare generală
Captură: Prezentare generală

În ecranul de captare, programul afișează trenul de impulsuri de date al SDA, SCL și TX0.

Pasul 14: Captură: Rezultatul analizei protocolului

Captură: Rezultatul analizei protocolului
Captură: Rezultatul analizei protocolului

Aici, vedem rezultatul capturii. În fila „Protocoale decodificate”, avem:

• Cererea serverului pentru sclavul cu ID-ul 8.

• Răspunsul sclavului, șase caractere: „t”, „e”, „s”, „t”, „e” și un spațiu.

• Fiecare este urmat de un bit ACK (Recunoaștere) care indică recepția corectă a octeților, cu excepția caracterului spațial NACK (Nu Recunoaște).

• Apoi, vedem rezultatul decodării serialului TX0, indicând caracterele primite și trimise către terminalul serial Arduino IDE.

Pasul 15: Captură: Canal 0 și date (SDA)

Captură: Canal 0 și date (SDA)
Captură: Canal 0 și date (SDA)

În această imagine, avem trenul de impulsuri al liniei SDA. Rețineți că fiecare octet transmis poate fi vizualizat.

Pasul 16: Captură: Canal 1 și Ceas (SCL)

Captură: Canal 1 și Ceas (SCL)
Captură: Canal 1 și Ceas (SCL)

Acum avem aici trenul de impulsuri al liniei SCL. Puteți verifica mai multe detalii pur și simplu poziționând mouse-ul peste semnal, așa cum vedeți în imagine. Putem vedea că frecvența ceasului era de 100 kHz.

Pasul 17: Captură: Canal 2 și Serial (TX0)

Captură: Canal 2 și Serial (TX0)
Captură: Canal 2 și Serial (TX0)

În ceea ce privește trenul de impulsuri al liniei TX0, putem vedea bitul Start și punctele de încadrare ale fiecărui bit. Avem un octet reprezentând caracterul „e”.

Pasul 18: Configurarea mediului pentru testele noastre

Configurarea mediului pentru testele noastre
Configurarea mediului pentru testele noastre

Aici avem mai multe opțiuni pentru citirea datelor.

Pasul 19: Captură: osciloscop și analizor

Captură: osciloscop și analizor
Captură: osciloscop și analizor

Uită-te aici la ecranul pe care l-am capturat din osciloscopul meu. Semnalul analizorului logic reprezintă doar detecțiile înalte și joase, dar nu reprezintă calitatea semnalului. Acest lucru poate fi observat cel mai bine pe un osciloscop.

Pasul 20: Captură: Observarea unui eșec (exemplu de eșec în serie)

Captură: Observarea unui eșec (exemplu de eșec serial)
Captură: Observarea unui eșec (exemplu de eșec serial)

Acum, voi arăta un exemplu de eșec serial, care mi s-a întâmplat de fapt. Am fost cu un modem GPRS, de tipul folosit pe un telefon mobil, cartela SIM, încercând să mă conectez la ESP32. Dar pur și simplu nu s-a conectat. Am verificat apoi sursa de alimentare, cablajul și am schimbat placa. Am făcut totul, dar nimic nu a rezolvat-o. Am decis să fac o analiză logică: am descoperit că semnalul ESP de pe UART 115200 a început să nu corespundă. Adică, ESP32 juca ceea ce ar trebui să fie 115, 200 la o viteză diferită de aceasta.

Această eroare, identificată de analizor, a fost afișată cu un X în roșu. După părerea mea, programul spune că punctul care are un astfel de pic este pe jumătate deplasat în timp. Pe măsură ce această schimbare crește, poate veni un moment în care totul este nepotrivit, astfel încât informațiile să nu ajungă la cealaltă parte. De obicei ajunge, dar SIM800 este sensibil și, dacă nu este exact, informațiile nu ajung la celălalt capăt.

Nu știu dacă acest lucru se întâmplă des sau nu, dar mi s-a întâmplat mie, așa că am decis să abordez acest subiect aici. Deci, ce am făcut? Am încetinit. Dacă puneți 9, 600, 19, 200, până la 38, 400, funcționează, ceea ce nu se întâmplă cu 115, 200.

Pasul 21: Descărcați fișierele

PDF

EU NU

Recomandat: