Obsah:

Otvor oči! Logický analyzátor: 21 krokov
Otvor oči! Logický analyzátor: 21 krokov

Video: Otvor oči! Logický analyzátor: 21 krokov

Video: Otvor oči! Logický analyzátor: 21 krokov
Video: Терренс Дикон раскрывает скрытую связь: сознание и энтропия 2024, November
Anonim
Image
Image
zhromaždenie
zhromaždenie

Logický analyzátor uľahčuje vašu vizualizáciu sledu impulzov, čo sú bity cestujúce v komunikačnej línii. Vďaka tomu sa vám otvoria oči pre identifikáciu možného problému. Prečo je to dôležité? Je to veľmi efektívny nástroj na vývoj a detekciu chýb, ktorý vám môže ušetriť čas. V tomto dnešnom videu zhodnotíme dôležitosť logického analyzátora, dodržíme niektoré protokoly bežných postupov pri používaní tohto zariadenia a uvedieme príklad zlyhania detekcie bez pomoci logického analyzátora.

V tomto videu som použil relatívne lacný (okolo 35 dolárov) a efektívny model s grafickým rozhraním a bezplatným softvérom.

Krok 1: Montáž

Krok 2: Použité funkcie - Server

Použité funkcie - Server
Použité funkcie - Server

• Spojky pre prepojenia

• 2 Arduinos (použili sme 2 Mega Arduinos 2560)

• Logický analyzátor (používame Saleae)

• Pripojovacie káble USB pre Arduino a analyzátor.

• Osciloskop (voliteľný)

• Protoboard

Krok 3: Použitý obvod

Použitý obvod
Použitý obvod

Tu máme schému, ktorá ukazuje monitorovanie troch pinov: TX0, SDA a SCL. Máme dvoch Arduinos: pána a otroka.

Krok 4: Zdrojový kód: Master

Do Setupu zaradíme knižnicu pre i2c komunikáciu. Vstúpili sme do siete ako Master a inicializovali sme sériovú 0. V slučke sme požadovali podradené dátové bajty pre komunikáciu s naším Arduino číslom 8, ako sme definovali v príklade. Vytlačíme sériové čísla, ktoré budú vyhodnotené logickým analyzátorom, prijaté bajty.

#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); // required 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para receber… char c = Wire.read (); // príjem 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}

Krok 5: Zdrojový kód: Slave

V tomto podradenom kóde opäť uvádzam knižnicu pre komunikáciu i2c. Vstupujem do siete ako podriadený s adresou 8. Zaregistrujeme udalosť požiadavky a priradíme ju k funkcii „požiadavka“. Na slučke nemusíte nič robiť, stačí oneskorenie 0,1 sekundy.

Nakoniec máme požiadavkovú funkciu, ktorá bude vykonaná, keď dôjde k udalosti požiadavky Master, ktorá bola zaregistrovaná v programe Setup. Odpovedáme nakoniec správou 6 bajtov.

#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); // register o evento de requisiçao // e associate à função requestEvent} void loop () {delay (100); // žiadne veľké množstvo žiadnej slučky, počet 0, 1 segundo} // hromadné spustenie sériového spustenia alebo zrušenie požadovanej akcie // zaregistrovanie sa bez nastavenia neplatné requestEvent () {Wire.write ("teste"); // odpoveď na maximálnu veľkosť 6 bajtov}

Krok 6: Analyzátor: Hardvér

Analyzátor: Hardvér
Analyzátor: Hardvér

Vzorkovacia frekvencia až: 24 MHz

Logika: 5 V až 5,25 V

Prah nízkej úrovne 0,8 V

Prah vysokej úrovne 2,0 V

Vstupná impedancia približne 1 Mohm alebo viac

Krok 7: Inštalácia softvéru Saleae

Inštalácia softvéru Saleae
Inštalácia softvéru Saleae

Program, ktorý prijíma údaje zachytené logickým analyzátorom a dekóduje bity, je možné stiahnuť z nasledujúceho odkazu:

Krok 8: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Tu uvádzam rozhranie, ktoré sa mi obzvlášť páčilo, pretože bolo čisté.

Krok 9: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Tu je niekoľko možností konfigurácie:

• Kliknutím na názov kanála ho môžeme zmeniť.

• Môžeme určiť, či jeden z kanálov bude slúžiť ako spúšťač zachytenia a forma detekcie.

• Kliknutím a podržaním čísla kanála môžete zmeniť svoju pozíciu v zozname.

• Kliknutím na ozubené koliesko môžeme nakonfigurovať vizualizáciu kanála a rozšíriť …

• … alebo skrytie kanála. Skryjeme všetky kanály, ktoré nepoužívame.

Krok 10: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Kliknutím na šípky na tlačidle „Štart“sa zobrazia možnosti vzorkovacej frekvencie a trvania záznamu.

Ak softvér z nejakého dôvodu zistí, že rýchlosť nemožno udržať, zobrazí sa správa a automaticky sa rýchlosť zníži, kým sa nedosiahne funkčná hodnota.

Krok 11: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Zahrneme tiež analyzátory protokolov. Najprv je to I2C, podľa definícií knižnice WIRE a správne priradenie kanálov. Nakoniec zavedieme analyzátor do asynchrónneho seriálu. Musíme dávať pozor na správnu konfiguráciu parametrov podľa zostavy.

Krok 12: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Na karte „Dekódované protokoly“by sme mali skontrolovať, ktoré analyzátory protokolov sú povolené. Tam sa zobrazia údaje. Na kartu „Anotácie“môžeme pridať niektoré výsledky pre lepšiu vizualizáciu. Stačí kliknúť na ikonu „pridať meranie“.

Krok 13: Zachytenie: Prehľad

Zachytenie: Prehľad
Zachytenie: Prehľad

Na obrazovke snímania program zobrazí sled dátových impulzov SDA, SCL a TX0.

Krok 14: Zachytenie: Výsledok analýzy protokolu

Zachytenie: Výsledok analýzy protokolu
Zachytenie: Výsledok analýzy protokolu

Tu vidíme výsledok zajatia. Na karte „Dekódované protokoly“máme:

• Požiadavka servera na slave s ID 8.

• Odpoveď otroka, šesť znakov: „t“, „e“, „s“, „t“, „e“a medzera.

• Za každým nasleduje bit ACK (Acknowledge) indikujúci správny príjem bajtov, okrem znaku medzery NACK (Not Acknowledge).

• Ďalej vidíme výsledok dekódovania sériového čísla TX0, ktorý označuje znaky prijaté a odoslané na sériový terminál Arduino IDE.

Krok 15: Zachytenie: kanál 0 a údaje (SDA)

Zachytenie: kanál 0 a údaje (SDA)
Zachytenie: kanál 0 a údaje (SDA)

Na tomto obrázku máme impulzný sled linky SDA. Všimnite si toho, že je možné zobraziť každý prenášaný bajt.

Krok 16: Zachytenie: kanál 1 a hodiny (SCL)

Zachytenie: kanál 1 a hodiny (SCL)
Zachytenie: kanál 1 a hodiny (SCL)

Teraz tu máme sled impulzov linky SCL. Viac podrobností môžete skontrolovať jednoduchým umiestnením myši nad signál, ako vidíte na obrázku. Môžeme vidieť, že hodinová frekvencia bola 100 kHz.

Krok 17: Zachytenie: kanál 2 a sériové pripojenie (TX0)

Zachytenie: kanál 2 a sériový (TX0)
Zachytenie: kanál 2 a sériový (TX0)

Pokiaľ ide o sled impulzov linky TX0, môžeme vidieť počiatočný bit a body rámca každého bitu. Máme bajt predstavujúci znak „e“.

Krok 18: Konfigurácia prostredia pre naše testy

Konfigurácia prostredia pre naše testy
Konfigurácia prostredia pre naše testy

Tu máme niekoľko možností na čítanie údajov.

Krok 19: Zachytenie: osciloskop a analyzátor

Zachytenie: osciloskop a analyzátor
Zachytenie: osciloskop a analyzátor

Pozrite sa sem na obrazovku, ktorú som zachytil zo svojho osciloskopu. Signál logického analyzátora predstavuje iba vysoké a nízke detekcie, ale nereprezentuje kvalitu signálu. Najlepšie to možno pozorovať na osciloskope.

Krok 20: Zachytenie: Pozorovanie zlyhania (príklad sériového zlyhania)

Zachytenie: Pozorovanie zlyhania (príklad sériového zlyhania)
Zachytenie: Pozorovanie zlyhania (príklad sériového zlyhania)

Teraz ukážem príklad sériového zlyhania, ktoré sa mi skutočne stalo. Bol som s GPRS modemom, druhom používaným na mobilnom telefóne, na SIM karte, a pokúšal som sa pripojiť k ESP32. Ale jednoducho sa to nepripojilo. Potom som skontroloval napájanie, zapojenie a vymenil dosku. Robil som všetko, ale nič to nevyriešilo. Rozhodol som sa vykonať logickú analýzu: zistil som, že signál ESP na UART 115200 sa začal nezhodovať. To znamená, že ESP32 hral to, čo by malo byť 115, 200, inou rýchlosťou ako je táto.

Táto chyba, ktorú identifikoval analyzátor, sa zobrazila s X červenou farbou. Podľa môjho chápania program hovorí, že bod, ktorý má taký kúsok, je v čase posunutý napoly. Ako sa tento posun zvyšuje, môže prísť čas, keď je všetko nesúladné, takže sa informácie nedostanú na druhú stranu. Obvykle príde, ale SIM800 je citlivý, a ak nie je presný, informácie sa nedostanú na druhý koniec.

Neviem, či sa to stáva často alebo nie, ale stalo sa mi to, a preto som sa rozhodol venovať tejto téme tu. Čo som teda urobil? Spomalila som. Ak dáte 9, 600, 19, 200, až 38, 400, funguje to, čo sa pri 115, 200 nevyskytuje.

Krok 21: Stiahnite si súbory

PDF

INO

Odporúča: