Obsah:

Otevři oči! Logický analyzátor: 21 kroků
Otevři oči! Logický analyzátor: 21 kroků

Video: Otevři oči! Logický analyzátor: 21 kroků

Video: Otevři oči! Logický analyzátor: 21 kroků
Video: Internet Technologies - Computer Science for Business Leaders 2016 2024, Červenec
Anonim
Image
Image
Shromáždění
Shromáždění

Logický analyzátor usnadňuje vaši vizualizaci sledu pulzů, což jsou bity cestující v komunikační linii. Díky tomu se vám otevřou oči k identifikaci možného problému. Proč je toto důležité? Je to velmi účinný nástroj pro vývoj a detekci chyb, který vám může ušetřit čas. V tomto dnešním videu vyhodnotíme důležitost logického analyzátoru, sledujeme některé protokoly běžných postupů při používání tohoto zařízení a ukážeme příklad selhání detekce bez pomoci logického analyzátoru.

V tomto videu jsem použil relativně levný (kolem 35 $) a efektivní model s grafickým rozhraním a bezplatným softwarem.

Krok 1: Sestavení

Krok 2: Použité funkce - Server

Použité funkce - Server
Použité funkce - Server

• Propojky pro připojení

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

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

• USB propojovací kabely pro Arduino a analyzátor.

• Osciloskop (volitelný)

• Protoboard

Krok 3: Použitý obvod

Použitý obvod
Použitý obvod

Zde máme schéma, které ukazuje monitorování tří pinů: TX0, SDA a SCL. Máme dva Arduiny: pána a otroka.

Krok 4: Zdrojový kód: Master

V nastavení zahrneme knihovnu pro i2c komunikaci. Vstoupili jsme do sítě jako Master a inicializovali jsme sériovou 0. Ve smyčce jsme požadovali podřízené datové bajty pro komunikaci s naším Arduino číslem 8, jak jsme definovali v příkladu. Přijaté bajty vytiskneme v seriálu, který bude vyhodnocen pomocí logického analyzátoru.

#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ční sériová 0} prázdná smyčka () {Wire.requestFrom (8, 6); // požadováno 6 bajtů od doteků do konce 8, zatímco (Wire.available ()) {// enquanto houver bytes para receber… char c = Wire.read (); // pří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

Do tohoto podřízeného kódu opět zahrnuji knihovnu pro i2c komunikaci. Vstupuji do sítě jako slave s adresou 8. Zaregistrujeme událost request a spojíme ji s funkcí „request“. Na smyčce nemusíte nic dělat, stačí prodleva 0,1 sekundy.

Nakonec máme funkci požadavku, která bude provedena, když dojde k události požadavku Masterem, která byla zaregistrována v nastavení. Nakonec odpovíme zprávou o velikosti 6 bajtů.

#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); // registrace o evento de requisiçao // e asociace à função requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que sera executionada quando ocorrer o evento de requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste"); // odpověď na více než 6 bajtů}

Krok 6: Analyzer: Hardware

Analyzátor: Hardware
Analyzátor: Hardware

Vzorkovací frekvence až: 24 MHz

Logika: 5 V až 5,25 V

Nízký práh 0,8 V.

Prah vysoké úrovně 2,0 V

Vstupní impedance přibližně 1 Mohm nebo více

Krok 7: Instalace softwaru Saleae

Instalace softwaru Saleae
Instalace softwaru Saleae

Program, který přijímá data zachycená logickým analyzátorem a dekóduje bity, lze stáhnout na následujícím odkazu:

Krok 8: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Ukazuji zde rozhraní, které se mi obzvlášť líbilo, protože bylo čisté.

Krok 9: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Zde jsou některé možnosti konfigurace:

• Kliknutím na název kanálu jej můžeme změnit.

• Můžeme určit, zda jeden z kanálů bude sloužit jako spoušť pro zachycení a forma detekce.

• Kliknutím a podržením čísla kanálu můžete změnit svou pozici v seznamu.

• Kliknutím na ozubené kolo můžeme nakonfigurovat vizualizaci kanálu, rozšířit …

•… nebo skrytí kanálu. Skryjeme všechny kanály, které nepoužijeme.

Krok 10: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Kliknutím na šipky tlačítka „Start“se zobrazí možnosti Sampling Rate a doba záznamu.

Pokud z nějakého důvodu software zjistí, že rychlost nelze udržovat, zobrazí se zpráva a rychlost se automaticky sníží, dokud není dosaženo funkční hodnoty.

Krok 11: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Zahrneme také analyzátory protokolů. Nejprve je to I2C, postupuje podle definic knihovny WIRE a správně přiřazuje kanály. Nakonec představíme analyzátor asynchronnímu sériovému číslu. Musíme být opatrní, abychom správně nakonfigurovali parametry podle sestavy.

Krok 12: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Na kartě „Dekódované protokoly“bychom měli zkontrolovat, které analyzátory protokolů jsou povoleny. Tam se zobrazí data. Na kartě „Anotace“můžeme přidat některé výsledky pro lepší vizualizaci. Stačí kliknout na ikonu „přidat měření“.

Krok 13: Zachycení: Přehled

Zachycení: Přehled
Zachycení: Přehled

Na obrazovce zachycení program zobrazí sled datových pulzů SDA, SCL a TX0.

Krok 14: Zachycení: Výsledek analýzy protokolu

Capture: Výsledek analýzy protokolu
Capture: Výsledek analýzy protokolu

Zde vidíme výsledek zajetí. Na kartě „Dekódované protokoly“máme:

• Požadavek serveru na slave s ID 8.

• Odpověď otroka, šest znaků: „t“, „e“, „s“, „t“, „e“a mezera.

• Za každým následuje bit ACK (Acknowledge) indikující správný příjem bajtů, kromě znaku mezery NACK (Not Acknowledge).

• Dále vidíme výsledek dekódování seriálu TX0, který označuje znaky přijaté a odeslané na sériový terminál Arduino IDE.

Krok 15: Zachycení: kanál 0 a data (SDA)

Zachytit: kanál 0 a data (SDA)
Zachytit: kanál 0 a data (SDA)

Na tomto obrázku máme sled pulsů linie SDA. Všimněte si, že každý přenesený bajt lze zobrazit.

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

Zachytit: Kanál 1 a hodiny (SCL)
Zachytit: Kanál 1 a hodiny (SCL)

Nyní tu máme sled pulsů linky SCL. Další podrobnosti můžete zkontrolovat jednoduše umístěním myši nad signál, jak vidíte na obrázku. Vidíme, že taktovací frekvence byla 100 kHz.

Krok 17: Capture: Channel 2 and Serial (TX0)

Capture: Channel 2 and Serial (TX0)
Capture: Channel 2 and Serial (TX0)

Pokud jde o sled impulsů linky TX0, můžeme vidět počáteční bit a body rámce každého bitu. Máme bajt představující znak "e."

Krok 18: Konfigurace prostředí pro naše testy

Konfigurace prostředí pro naše testy
Konfigurace prostředí pro naše testy

Zde máme několik možností pro čtení dat.

Krok 19: Zachycení: osciloskop a analyzátor

Zachycení: osciloskop a analyzátor
Zachycení: osciloskop a analyzátor

Podívejte se sem na obrazovku, kterou jsem zachytil ze svého osciloskopu. Signál logického analyzátoru představuje pouze detekci vysokých a nízkých hodnot, ale nepředstavuje kvalitu signálu. To lze nejlépe pozorovat na osciloskopu.

Krok 20: Zachycení: Pozorování selhání (příklad sériového selhání)

Zachycení: Pozorování selhání (příklad sériového selhání)
Zachycení: Pozorování selhání (příklad sériového selhání)

Nyní ukážu příklad sériového selhání, které se mi skutečně stalo. Byl jsem s GPRS modemem, typem používaným na mobilním telefonu, na SIM kartě a pokoušel jsem se připojit k ESP32. Ale prostě se to nepřipojilo. Poté jsem zkontroloval napájecí zdroj, zapojení a vyměnil desku. Udělal jsem všechno, ale nic to nevyřešilo. Rozhodl jsem se provést logickou analýzu: zjistil jsem, že signál ESP na UART 115200 se začal neshodovat. To znamená, že ESP32 hrál to, co by mělo být 115, 200, jinou rychlostí než je tato.

Tato chyba, která byla identifikována analyzátorem, byla zobrazena s X červeně. V mém chápání program říká, že bod, který má takový kousek, je napůl posunut v čase. Jak tento posun narůstá, může přijít čas, kdy je vše v nesouladu, takže se informace nedostanou na druhou stranu. Obvykle dorazí, ale SIM800 je citlivý, a pokud není přesný, informace se nedostanou na druhý konec.

Nevím, jestli se to děje často nebo ne, ale stalo se mi to, a tak jsem se rozhodl tomuto tématu věnovat zde. Co jsem tedy udělal? Zpomalil jsem. Pokud vložíte 9, 600, 19, 200, až 38, 400, funguje to, což se u 115, 200 nevyskytuje.

Krok 21: Stáhněte si soubory

PDF

INO

Doporučuje: