UART-protokollanalys

1. Grund för avtal

1.1. Introduktion till avtalet

UART är "Universal Asynchronous Receiver/Transmitter", en förkortning för Universal Asynchronous Transceiver. På 1860-talet, för att lösa problemet med dator- och teleskrivmaskinkommunikation, uppfann Bell UART-protokollet, som omvandlar parallella insignaler till seriella utsignaler. På grund av sin enkla och praktiska natur har UART blivit ett mycket använt kommunikationsprotokoll. De serieportar vi utsätts för dagligen, RS232, RS485 och andra bussar, den interna användningen är i grunden UART-protokollet.

För att bättre förstå och analysera sambandet mellan protokoll och bussar brukar vi dela in en komplett kommunikationsspecifikation i fysiska lager, protokolllager och applikationslager. Det fysiska lagret definierar endast de sanna signalegenskaperna (såsom spänning, ström, drivkapacitet, etc.), och överensstämmelsen mellan den elektriska signalen och den logiska signalen 0 och 1; Protokollskiktet bryr sig inte om hur de underliggande nollorna och ettorna implementeras, utan specificerar bara protokollspecifikationerna för de logiska signalerna och kommunikationsprocessen (såsom start, data och slut, etc.); Applikationsskiktet bryr sig inte om hur data erhålls, utan definierar bara innebörden av datarepresentationen och hur den specifika affärslogiken ska implementeras.

Den enklaste tillämpningen av UART-protokollet, vanligtvis behöver det fysiska lagret bara två överföringslinjer, en för överföring och en för mottagning, vilket uppnår fullduplexkommunikation. För enkelriktad överföring kan du också använda endast en överföringslinje. Det mest typiska exemplet på en sådan applikation är mikrokontrollerns RX/TX-portar anslutna till varandra, vilket möjliggör TTL-nivåbaserad UART-kommunikation. För olika överföringsavstånd och krav på tillförlitlighet kan ersättning av olika fysiska lagerimplementationer erhålla våra vanliga RS232, RS485 och andra kommunikationsbussar.

1.2. Olika implementeringar av fysiska lager

Eftersom ingången till UART-protokolllagret är en logisk 0/1-signal, kan den logiska 0/1-signalen särskiljas av olika nivåstandarder i det fysiska lagret. För olika kommunikationsbehov kan olika fysiska lager användas. Till exempel, enkel inbyggd kommunikation, eller vanliga enhetsfelsökningsscenarier, kan UART-protokollkommunikationen mellan två enheter utföras med en enkel LVTTL/TTL-nivå.

Den universella seriella porten använder RS232-nivån, vilket kan öka överföringsavståndet och motstå en viss grad av signalstörningar. Kostnaden är att motsvarande nivåöversättningschip krävs vid det fysiska skiktet för att uppnå, sändaren måste omvandla den interna hög- och lågnivåsignalen till en högre spännings +/- spänningssignal, och mottagaren måste omvandla +/ - spänningssignal till en intern hög- och lågnivåsignal.

När det gäller industriell kommunikation, för att ytterligare förbättra överföringsavståndet och förbättra signalens tillförlitlighet, används vanligtvis RS485-nivåstandarden. De vanliga hög- och lågnivåsignalerna omvandlas till ett par differentialsignaler vid sändningsänden, och differentialsignalerna omvandlas till vanliga hög- och lågnivåsignaler vid den mottagande änden. Dessutom tillåter RS485 att upp till 128 transceivrar kan anslutas på bussen, medan TTL eller RS232 är punkt-till-punkt-anslutningar.

1.2.1. TTL-baserad UART-kommunikation

UART-kommunikation baserad på TTL är det enklaste användningsfallet för UART-protokollapplikationer. Det vill säga att de höga och låga nivåerna av den digitala I/O-utgången överförs direkt som den faktiska fysiska signalen. När det gäller fysisk anslutning behöver bara enheten vara gemensam och enkelriktad enhetskommunikation kan slutföras via en signallinje. Om dubbelriktad full duplex krävs används två signallinjer.

För att jämföra skillnaderna i implementeringen av olika fysiska lager kan vi observera hur de faktiska signalerna för olika fysiska lager skiljer sig åt när samma data skickas. Här, med överföringstecknet 'D' som ett exempel, genom stenoscilloskopet, observera direkt signalen som sänds av TTL (sondens jordterminal är ansluten till enhetens gemensamma jordände och sondsignaländen är ansluten till den blå signallinjen i figuren ovan), och signalvågformen som visas i figur 1-4 kan erhållas. Som framgår av vågformen, när det inte finns någon dataöverföring, kommer UART-signalen att förbli på en hög nivå (den specifika signalamplituden bestäms av matningsspänningen för I/O), signalen kommer att hoppa under dataöverföringen , och signalen kommer att återgå till viloläge på hög nivå efter att överföringen är klar.

1.2.2. UART-kommunikation baserad på RS232

För att förbättra drivförmågan för att öka överföringsavståndet och tillförlitligheten använder RS232-bussen en bipolär spänningssignal för fysisk överföring. Innan signalen sänds/ tas emot omvandlas den interna signalen och busssignalen till varandra med hjälp av ett nivåförskjutningschip. Anslutningsmetoden är exakt densamma som TTL-nivån, och hela det fysiska lagret är bara ytterligare ett lager av nivåöversättning.

Också genom att använda sändningstecknet 'D' som ett exempel, är sonden på Pushi-oscilloskopet ansluten till signaländen och den faktiska vågformen som visas i figur 1-6 kan fångas. Det kan ses att RS232-vågformen är negativ spänning när den är inaktiv, och när det finns dataöverföring börjar signalen hoppa mellan positiva och negativa spänningar och återgår till det negativa tomgångsläget efter att överföringen är klar.

1.2.3. UART-kommunikation baserad på RS485

RS485 är designad för komplexa industriella miljöer, och den största egenskapen hos RS485-bussen är användningen av differentiell signalöverföring jämfört med de fysiska lagren i andra UART-protokoll. Innan signalen sänds omvandlas den ensidiga signalen till en differentialsignal av transceivern i RS485 och skickas sedan till bussen för överföring; Också före mottagning omvandlas differentialsignalen på bussen av transceivern till en ensidig signal och skickas sedan till UART-styrenheten för mottagning. På RS485-bussen krävs två par differentiella signallinjer (dvs. 4 signallinjer) för full-duplex dubbelriktad kommunikation. Om endast halvduplex tvåvägskommunikation utförs krävs endast ett par differentialsignaler.

Återigen, med hjälp av sändningstecknet 'D' som ett exempel, kan den faktiska vågformen som visas i figur 1-8 erhållas med två kanalsonder (vanligtvis refererade) av sonderna på Pushi-oscilloskopet, som är anslutna till A/B-ändarna av en av differentialsignalerna. Det kan ses att vågformen vid A/B-änden är komplementär. A-terminalens vågform är framåtlogisk (positiv spänning vid tomgång) och B-terminalens vågform är omvänd logik (negativ spänning vid tomgång).

2. Protokollspecifikationer

2.1. UART ramstruktur

I introduktionen av föregående avsnitt observerade vi den faktiska UART-vågformen genom stenoscilloskopet, så exakt hur identifieras denna vågform som tecknet "D" och inte något annat? Detta involverar definitionen av ramstrukturen för UART-protokollet. Som visas i figur 2-1:

När två enheter behöver kommunicera via UART-protokollet måste de komma överens om följande samtidigt:

  • Tidslängd per signal T (baudrate = 1/T)
  • Det specifika antalet bitar i varje objekt i ramstrukturen
  • Om det finns en kontrollsiffra och kontrollsiffrans mekanism (udda/jämn/...). )

Med dessa konventioner behöver den mottagande anordningen endast vänta på ankomsten av startbiten och sedan sampla den efterföljande vågformen med regelbundna intervall för att erhålla den specifika informationen som sänds. Med vågformen för tecknet 'D' som exempel, visas upplösningsprocessen i figur 2-2:

2.1.1. Baudhastighet

Baud-hastighet är ett mycket viktigt koncept för UART-protokollet, eller alla asynkrona seriella protokoll, det vill säga antalet bitar som kan representeras per tidsenhet (1 sekund), eller det kan också uttryckas som det reciproka av bitbredden . Till exempel innebär en UART-vågform med en baudhastighet på 115200 att den kan ta emot 115200 bitar per sekund, vilket innebär att varje databit står för cirka 8.68uS tid.

Asynkrona seriella protokoll som UART, för att förenkla den fysiska anslutningen av signaler och minska kommunikationskostnaderna, har i allmänhet bara en signallinje och kan inte överföra data och klocksignaler samtidigt. För att sändarmottagaren/sändarenheten ska kunna lösa vågformen korrekt måste den vara på samma baudhastighetsinställning. Samma vågform som använder olika baudhastigheter kan få helt olika information. För den mottagande anordningen kan endast startbiten användas som synkroniseringspunkten för en dataram, och andra data bestäms av baudhastigheten för att bestämma den specifika samplingsplatsen.

Återigen, med hjälp av vågformen för tecknet 'D' som ett exempel, som visas i figur 2-4, om det tas emot med fel överföringshastighet, kan du få helt fel datainformation.

2.1.2. Idle Bits

När data inte överförs mellan enheter indikerar en ihållande hög nivå tomgång. Ju längre vilobitens varaktighet och ju längre intervallet är mellan två dataramar, desto mindre data överförs per tidsenhet.

2.1.3. Start bit

UART-mottagaren kommer alltid att upptäcka nivåförändringen på signallinjen, och när data sänds kommer avsändaren att dra signallinjen från den höga nivån till slutet av den låga nivån till viloläge och bibehålla lite tid. När mottagaren upptäcker en hög-låg nivåförskjutning börjar den ta emot signaler.

2.1.4. Databitar

Databiten innehåller de faktiska data som överförs, som är 5 till 8 bitar långa om paritet används, och 5 till 9 bitar om paritet inte används. I allmänhet är databitarna 8 bitar, och data skickas först från den minst signifikanta biten, med de höga bitarna som andra.

2.1.5. Kontrollera siffror

Kontrollsiffrorna kan användas för att förbättra överföringens tillförlitlighet. Om signalen är fel på grund av störningar i överföringsprocessen och orsakar ett fel i nivån för vissa positioner, kan det fastställas om mottagna data och kontrollsiffra matchar genom att beräkna om den mottagna datan och kontrollsiffrorna är matchade, så för att tillhandahålla giltig information till applikationslagret för att besluta att acceptera/kassera motsvarande data.

2.1.6. Stopp bit

Stoppbiten representerar slutet av en dataram, och den faktiska signalen är en tidsperiod hög. Längden på stoppbiten kan ställas in på en stoppbit på 1, 1.5 eller 2 bitar. I de flesta fall används en stoppbit på 1 bit.

Eftersom UART är ett asynkront protokoll kan början av varje ram synkroniseras med en hoppkant, men stoppbiten kan bara beräkna den relativa positionen genom baudhastigheten, och om en låg nivå känns igen vid stopppositionen, ett ramfel genereras. I kommunikationsprocessen kan olika stoppbitlängder ställas in för att anpassas för att minska problemet som orsakas av felet i baudhastigheten.

3. Analysera UART-kommunikation med hjälp av en logisk analysator

3.1. Oscilloskop vs Logic Analyzer

Som det huvudsakliga generella test- och mätinstrumentet har oscilloskop en naturlig fördel när det gäller att observera detaljerna i analoga signaler. Till exempel kan realtidsdrift, med en hög vågformsuppdateringsfrekvens, enkelt observera plötsliga onormala signaler; Till exempel, när man utför brusutvärdering och signalkvalitetsoptimering, kan oscilloskopet jämföra likheter och skillnader mellan signaler på samma buss och olika noder för att hitta dolda signalintegritetsproblem.

Men oscilloskopet har naturligtvis också några obekväma platser, förutom de få kanalerna är skärmen i allmänhet liten, operationen är inte dator + mus sätt flexibel och kontrollerbar dessa morfologiska problem, för insamling och analys av digitala signaler, de största Problemet med oscilloskopet är att lagringsdjupet är för litet. Ett oscilloskop på flera hundra tusen yuan kan också ha ett lagringsdjup på bara några hundra mpts. Samtidigt, på grund av begränsningen av lagringsdjupet, när det är nödvändigt att göra en något längre tidsinsamling, kommer den verkliga samplingshastigheten för oscilloskopet att sjunka kraftigt, vilket resulterar i att den insamlade vågformen inte kan återställa den verkliga signalen och förlorar analysens betydelse.

Logikanalysatorer är test- och mätinstrument speciellt utformade för digital signalinsamling och analys, och de insamlade vågformsresultaten är endast höga och låga nivåer (det vill säga logiska 0 och 1). Det kompenserar dock för bristen på oscilloskop vid insamling och analys av digitala signaler.

  1. 1. De flesta logikanalysatorer drivs på en PC, med den kraftfulla prestandan hos stationära processorer och den interaktiva upplevelsen av mogna operativsystem, vilket avsevärt förbättrar bekvämligheten och effektiviteten för digital signalanalys.
  2. 2. Antalet logikanalysatorkanaler är stort, DSLogic logikanalysatorn på ingångsnivå har 16 kanaler som kan samlas in samtidigt, och användaren kan också få logikanalysprodukter med dussintals eller till och med hundratals kanaler till ett mycket rimligt pris. kosta.
  3. 3. Lagringsdjupet för logikanalysatorn är större, till exempel kan DSLogic nå ett lagringsdjup på 16G i stream-läge, och samtidigt upprätthålla en ganska hög samplingshastighet, som vida överstiger insamlingsförmågan hos de flesta oscilloskop.
  4. 4. Logikanalysatorer tillhandahåller i allmänhet rika protokollavkodningsfunktioner, som kan utföra djupgående analys av digitala signaler. Till exempel stöder DSLogic för närvarande mer än 100 avkodningsprotokoll. De flesta oscilloskop har begränsade avkodningsmöjligheter, och de flesta kräver att motsvarande plugin-program köps separat.

Därefter kommer vi att fokusera på hur man använder logikanalysatorer för förvärv och analys av UART-signaler i olika situationer.

3.2. Upprätta en testmiljö för logikanalysatorer

3.2.1. Anslutning till DSLogic

DSLogic är en bärbar logikanalysator baserad på USB-anslutning. DSLogic-värden ansvarar för signalinsamling och cachelagring och överför sedan data via USB till värddatorns programvara DSView på PC:n. DSView ansvarar för vågformsdatabehandling, visning, analys och motsvarande funktion för interaktion mellan människa och dator.

När du använder, anslut helt enkelt DSLogic-värden direkt till USB-porten på PC-kortet via en USB-datakabel, öppna DSView-mjukvaran och bekräfta att INDIKATORN på DSLogic-värden blir vintergrön. Vid denna tidpunkt är anslutningen och initieringen av logikanalysatorn slutförd. Som visas i figur 3-4 kan det aktuella enhetsnamnet i det övre vänstra hörnet och motsvarande anslutningsstatus ses på DSView-mjukvaran.

3.2.2. UART-signalanslutning

För alla mätningar måste testutrustningen och signalen som ska mätas baseras på ett gemensamt referensplan, som vanligtvis kallas jordning, så att den uppmätta signalen kan inhämtas och mätas korrekt. I vissa fall finns det ingen explicit jordning, men mätresultaten verkar inte vara några problem, detta beror på att mätutrustningen och den uppmätta signalen är anslutna till jord på andra sätt, till exempel samma strömförsörjning som används, eller referensen jord ansluts samtidigt till elnätets jordterminal. Vid rigorösa mätningar bör dock mätutrustningen jordas enligt den signal som testas. Ju större looparea för signaljordningsterminalen är från den uppmätta signalen till mätanordningen, desto lättare är det för signalen att störas, vilket resulterar i mätfel eller till och med mätfel.

För UART-signaler, vid åtkomst till logikanalysatorn, behöver det enklaste fallet endast ansluta 2 ledningar, en till referensjorden och en till den uppmätta signalen. För de olika fysiska lagerimplementeringarna av UART-protokollet som vi nämnde tidigare, kommer sättet som signalerna är anslutna att vara något annorlunda.

Till exempel, för UART-signalen på TTL-nivån, förutom att ansluta referensjorden, behöver du bara ansluta signalen (TX eller RX) som ska testas till motsvarande kanalingång på den logiska analysatorn.

För RS232-busssignaler kan vi antingen mäta busssignalen efter nivåöversättning (DSLogic har ett motståndsspänningsområde på +-30V vid kabelingången, och +-15V-signalområdet för RS232 kan anslutas direkt), eller så kan vi mäta den interna digitala signalen före nivåöversättning. Dess ledningsmetod överensstämmer med TTL-signalen, det enda att notera är att RS232-signalen vänder nivån (negativ spänning vid tomgång, det vill säga låg nivå), vid avkodning av UART-protokollet kan vi vända motsvarande signalnivå i fönstret för avkodningsinställning för DSView (alternativet Invertera signal är inställt på Ja).

RS485-bussen använder differentialsignaler, och när vi använder en logisk analysator för signalinsamling måste vi vara särskilt uppmärksamma på anslutningen av den uppmätta signalen. Först och främst måste referensplatsen för logikanalysatorn anslutas till referensjorden för motsvarande enhet som testas RS485-transceiver, så att den logiska analysatorn kan garanteras att ha rätt nivåreferensplan; För det andra, för differentialsignaler, behöver den logiska analysatorn endast förvärva höga och låga nivåer av homopolaritet med den interna signalen. Ur digitala signalers perspektiv förbättrar det differentiella sättet bara tillförlitligheten för signalöverföring, utan att lägga till ytterligare information. Som visas i figur 3-7, när du testar 485-busssignalen med en logisk analysator, anslut referensjorden för transceivern på motsvarande enhet och A+-signalen på differentialbussen.

Naturligtvis, om bara B-signalen kan samlas in, kan vi också ställa in UART-avkodaren att vända signalen för att få korrekt protokollupplösningsresultat vid avkodning i DSView.

3.2.3. Tröskelinställningar

Tröskeln för den logiska analysatorn är bedömningsspänningen för höga och låga nivåer, det vill säga när insignalspänningen är högre än tröskelspänningen, är förvärvet hög nivå; När ingångssignalens spänning är under tröskelspänningen är ackvisitionen låg.

För UART-protokollet har vi tidigare introducerat att det har olika implementeringar av fysiska lager, och olika implementeringar av fysiska lager har olika nivåstandarder. Vi behöver bara välja en motsvarande tröskel för att skilja mellan höga och låga nivåer i olika fall. De tröskelvärden som visas i figur 3-8 kan i princip uppfylla detta krav.

I vissa fall kan differentialsignalamplituden för RS485-bussen variera över ett brett område på grund av konfiguration eller felsökning. Eftersom RS485-specifikationen stipulerar att så länge differentialspänningen mellan AB är större än 200mV kan den anses vara hög. Vid denna tidpunkt kan vi använda stenoscilloskopet för att observera den faktiska signalnivåamplituden och sedan besluta om lämplig tröskelinställning. Du behöver bara se till att tröskelspänningen du ställer in rimligtvis kan skilja mellan höga och låga nivåer.

3.3. Enkel UART-signalinsamling

De flesta UART-signaler är låghastighetssignaler, till exempel den vanligaste baudhastigheten på 115200, vilket indikerar att signalfrekvensen endast är 115.2KHz. Sådana signaler kan erhållas direkt med standardinställningarna för DSLogic. Här, med värdens fasta 1s-intervall och upprepade gånger skicka tecknet 'D' som ett exempel, beskriver den hur man använder en logisk analysator för att förvärva och analysera sådana UART-signaler.

3.3.1. Signalinsamling

Efter att hårdvaran och signalanslutningen har förberetts klickar du på "Start"-knappen i DSView-programvaran direkt för att hämta signalen som testas med standardinställningen (1MHz samplingshastighetsupptagningstid 1s). Om du vill ändra samplingshastigheten och insamlingslängden väljer du motsvarande parametrar direkt i motsvarande rullgardinsmeny. Inställningsprincipen för samplingshastigheten rekommenderas att vara 10 gånger eller mer av den uppmätta signalens maximala frekvens, till exempel för UART-signaler med en baudhastighet på 115200 baud är den snabbaste signalfrekvensen 115.2KHz, när samplingshastigheten på 1M är vald kommer varje bitsignal att ha 8 eller 9 samplingspunkter, och motsvarande fasfel är +-1/8 (12.5%); När en 10M samplingshastighet väljs kommer det att finnas 86 eller 87 samplingspunkter per signalbit, vilket motsvarar ett fasfel på +-1/86 (1.16%). Naturligtvis rekommenderas det i allmänhet inte att använda för hög samplingsfrekvens, eftersom ju högre samplingsfrekvens, desto kortare tid kan den samlas in, och samplingsfrekvensen som är för hög kan samla flera hopp på det enda hoppet. kanten på den långsamma signalen, vilket orsakar problem med protokollavkodningen. Figur 3-9 visar den resulterande signalvågformen som erhållits med standardinställningarna.

Som framgår av figur 3-9 får kanal 0 en signal som är konstant hög, men hittar inga hopp. Observera noga tidslinjalen ovanför vågformsfönstret och rullningslisten längst ner i fönstret för att veta att det aktuella fönstret endast visar en del av den insamlade vågformen, inte alla signaler. Vid det här laget kan du zooma med mushjulet eller högerklicka i vågformsområdet för att visa alla vågformer under hela inhämtningstiden. Få resultatet som visas i figur 3-10.

På basis av ovanstående figur vill vi bara titta på övergångsdelen av kanal 0. Du kan stänga av vågformsvisningen för andra kanaler i fönstret Alternativ och justera visningshöjden för kanalsignalen. Peka sedan med musen mot målvågformen, och samtidigt genom mushjulet för att förstora vågformen för den spetsiga positionen; Alternativt kan du välja det område av vågformen du vill zooma in genom att hålla ner höger musknapp i rutan. Håll också ner vänster musknapp för att flytta vågformen åt vänster och höger. Hämta vågformsdetaljerna som visas i figur 3-11.

När du observerar vågformen kan om du placerar musen över pulsvågformen visa information som pulsbredd, period, frekvens och arbetscykel för den aktuella signalen. Samtidigt kan du också lägga till en markör genom att dubbelklicka på vänster musknapp, och när du flyttar markören knäpps den automatiskt till den närliggande hoppkanten.

3.3.2. UART-avkodning

Signalvågformen som samlas in av den logiska analysatorn ändras endast i tid vid höga och låga nivåer (0/1), vilket inte är gynnsamt för vår målinriktade analys av processen och innehållet i signalöverföring. Även om vi kan använda blotta ögat för att översätta protokollinnehållet som motsvarar vågformen enligt protokollspecifikationen, kommer det att avsevärt minska effektiviteten i analysen. DSViews inbyggda avkodare tillhandahåller rikt protokollavkodningsinnehåll, vilket gör tråkiga vågformer till meningsfulla tecken, markörer och datainnehåll. Det underlättar avsevärt analys och förståelse av signaler för ingenjörer för att hitta felmeddelanden eller kritiska data.

I DSView-mjukvaran är protokollavkodningen av den förvärvade vågformen mycket enkel, öppna bara panelen "Decode", sök efter motsvarande avkodare (här väljer vi 1: UART-protokoll) och ställ in motsvarande avkodaralternativ (inklusive display/kanal) /ramstruktur/format, etc.). När det har bestämts kommer programvaran att börja avkoda protokollet för UART på den valda kanalen. Det avkodade resultatet visas i protokollkanalen. Detta visas i figur 3-12.

När du väljer en avkodare tillhandahåller DSView en bekväm protokollsökningsfunktion, skriv bara in nyckeltecken i protokollsökrutan, DSView kommer att lista alla dekodrar som innehåller dessa tecken, där användaren kan välja rätt avkodare. Som visas i figur 3-13 finns det två protokoll relaterade till UART 0: UART och 1: UART, där 0: UART är en förenklad avkodare som inte analyserar bitinformation och inte heller stöder stapling av protokoll på högre nivå, när vi bara vill få data som motsvarar vågformen, kan du använda detta förenklade protokoll för att minska avkodningstid och minnesresurser.

Inställningsfönstret för avkodaren har många inställningsalternativ relaterade till avkodning, och innehållet i inställningsfönstret för olika protokoll kommer att vara olika. Det finns några alternativ som alla avkodare måste ställa in, såsom överensstämmelsen mellan kanal- och protokollsignaler. Här använder vi UART-signalen som grips av kanal 0, så motsvarande kanal som behöver avkodas bör ställas in på kanal 0.

Och protokoll-relaterade inställningsalternativ som vi har förklarat i detalj i avsnittet ramstruktur, i själva operationen kan också erhållas genom serieportens värddatorprogram (serieportens felsökningsassistent, etc.) för att få denna information. Detta visas i figur 3-14.

För avkodat datainnehåll stöder DSView olika visningsformat. Till exempel visar den tidigare förvärvade UART-signalen tecknet 'D' i form av ASCII-koder, eller så kan den modifieras till visningsläget hexadecimalt (Hex), och resultatet kommer att visa 0x44. Detta visas i figur 3-15. För närvarande stödda visningsformat är: hex (hexadecimal), dec (decimal), okt (oktal), bin (binär) och ascii-kod.

3.4. Förvärv av en enda UART-överföring

När vågformen vi vill fånga är en enstaka signal, vi vet inte när vågformen kommer att dyka upp, och om vi använder den direkta insamlingsmetoden, kanske vi bara kan fånga den inaktiva signalvågformen för det mesta, och vi kan inte fånga signalen vid tidpunkten för den faktiska överföringen.

Vid denna tidpunkt kan den fångas genom att trigga. Genom att ställa in motsvarande utlösningsvillkor kan vi styra starttiden för signalinsamlingen i enlighet med förändringen av vågformen, för att exakt fånga den signalvågform vi vill se.

3.4.1. Buffertläge

DSLogic stöder två förvärvslägen: Stream-läge och Buffer-läge. Data som samlas in i Stream-läge överförs till PC:n i realtid och bearbetas sedan av DSView. Data som samlas in i buffertläge cachelagras först i DSLogics interna hårdvarucache och överförs sedan till PC:n efter att inhämtningen är klar och bearbetas av DSView.

Förutom fördelarna med att uppnå högre samplingshastigheter, stöder buffertläget även fler triggningsalternativ och inställningar, såsom multi-level triggering, seriell triggning och inställning av triggerpositioner. Streamläge, å andra sidan, stöder bara enkel triggning.

3.4.2. Triggerinställningar

För enkel triggning kan vi ställa in triggeralternativet direkt bredvid kanalen. Det motsvarar sekventiellt stigande kant, hög, fallande kant, låg nivå och valfri kantutlösare. Behåll bara det förinställda enkla triggerläget i triggerpanelen. Till exempel, för en UART-överföring som inte vet när den inträffar, kan vi välja att trigga den fallande kanten. När UART-signalen förblir inaktiv är triggern inte nöjd. DSLogic väntar på att triggervillkoret kommer fram, som visas i figur 3-17.

När UART börjar sända den första startbiten, aktiveras triggervillkoret och DSLogic förvärvar signalvågformen vid tidpunkten för triggern. Detta visas i figur 3-18.

Låt oss överväga ett mer komplext triggerscenario, som att enhet A ständigt skickar data till enhet B slumpmässigt och enhet B svarar på olika data enligt datainnehållet som skickas av enhet A. Om vi ​​vill veta vilka data som enhet A skickade till enhet B innan vi skickar data 0, hur ställer vi in ​​triggervillkoret för att fånga vågformen i motsvarande ögonblick?

Det finns två problem som måste lösas här, först måste vi ställa in platsen för triggern så att vi kan se data före triggern, inte data efter triggern; För det andra måste vi hitta vågformsegenskaperna för enhet B som skickar data 0 och konvertera den till motsvarande triggervillkor.

UART-protokollanalys

Bild 3-19 Avtryckarposition

Enligt protokollreglerna för UART kommer vågformen som skickar data 0 att vara en relativt bred kontinuerlig lågnivåpulssignal. Om baudhastigheten för UART är 115200 och samplingshastigheten vi ställer in är 1MHz, visas vågformen för data 0 i figur 3-20, vilket kommer att vara en lågnivåpuls på cirka 78.125uS.

För att ställa in den avancerade trigger- eller triggerpositionen krävs stöd för buffertläge, du måste först ställa in "Körläge" till "Buffertläge" i "Alternativ", och välj inte alternativet "RLE-hårdvarukomprimering". Ställ in det avancerade triggervillkoret till kanal 1 med ett kontinuerligt låg på 75 samplingspunkter (motsvarande en 1MHz samplingsfrekvens, vilket är en låg nivå på 75us), och ställ in triggerpositionen till 80 % för att underlätta observationen av data innan triggning. De specifika inställningarna visas i figur 3-21.

Enligt detta triggervillkor triggas den när enhet B skickar data 0, och den inhämtade vågformen visas i figur 3-22.

3.4.3. Upprepa insamlingen

I vissa fall behöver vi dynamiskt observera statusen för vissa signaler, till exempel datainnehållet som skickas av Burst varje gång, men vi vet inte när datan skickas, och det är omöjligt att klicka på "Start"-knappen ofta . DSView tillhandahåller ett "upprepa" inhämtningsläge som automatiskt hämtar och uppdaterar vågformer när triggningen uppnås. När vi felsöker vissa periodiska burst-signaler är det mycket bekvämt att observera resultaten av dynamisk inhämtning och protokollanalys genom upprepningsläget.

Upprepningsläget kan ställas in enligt bild 3-23. Upprepningsintervallet är den minsta uppehållstiden mellan två sampel för att underlätta observationen av vågformen och avkodningsresultaten från föregående insamling.

3.5. Förvärv av långsiktiga UART-sändningar

När det är nödvändigt att skaffa ultralånga vågformer för analys kan vi använda Stream-läge. DSLogic kan uppnå ett samplingsdjup på 16G per kanal i Stream-läge. Vid en samplingshastighet på 1MHz kan insamlingstiden nå 16G/1M ≈ 16000s, vilket är mer än 4 timmar.

3.5.1.Strömningsläge

Strömlägesinställningen visas i Figur 3-24, och olika DSLogic-hårdvaruversioner stöder olika kanalalternativ för strömningsläge. För U3Pro16, baserat på USB3.0-porten, kan den uppnå 3 kanaler @ upp till 1GHz samplingshastighet, 6 kanaler @ upp till 500MHz samplingshastighet, 12 kanaler @ upp till 250MHz samplingshastighet och 16 kanaler @ upp till 125MHz samplingshastighet.

När mängden insamlad data är relativt stor kan 0:UART-protokollet användas för avkodning, jämfört med 1:UART, som utelämnar utmatningen av bitinformation, inte stöder högnivåprotokollstapling och kan förkorta avkodningstiden och minska minnesockupationen. De andra funktionerna är desamma som 1: UART. Avkodningseffekten visas i figur 3-25.

3.5.2. Listan över protokoll visas

Som visas i följande figur är det grafiska avkodningsresultatet helt synkroniserat med den inhämtade vågformen i tid, vilket hjälper oss att förstå vågformen och hitta problemet, men samtidigt är det inte på grund av tidens displayskala bidrar till att se avkodningsresultatet. Listskärmar kompenserar för denna brist, vilket gör det enkelt att visa och analysera stora mängder avkodat innehåll.

DSView ger ett sätt att hoppa mellan grafiska resultat och listresultat. Klicka på valfri rad i listans resultat för att automatiskt hoppa till motsvarande vågformsresultat, och du kan också välja om du automatiskt vill zooma in vågformen när du hoppar, eller fixa den aktuella zoomförhållandekolumnen för vågformen. Dessutom, när vi tittar på vågformen vid ett visst tillfälle, om vi vill hoppa till den position där avkodningsresultatet som motsvarar denna vågform visas i listan, behöver du bara klicka på positioneringsknappen i det övre högra hörnet av listvisningsfönster.

Dessutom kan det avkodade innehållet exporteras till en fil via listskärmen. Som visas i figuren ovan, genom att klicka på knappen "Spara" som visas i listan, kan du välja att exportera det för närvarande avkodade innehållet till en csv- eller txt-fil, vilket är bekvämt för mer tredjepartsdatabehandling, såsom inmatning till matlab för analys, eller som datainmatning för annan programvara.

3.5.3. Avkoda datasökning

En annan fördel med listvisningen är att de avkodade resultaten kan användas som strängar för resultatsökningar, till exempel sökning efter specifika operationer, eller specifika databytes, som snabbt kan lokalisera platsen som behöver ses.

Ange nyckelordet du vill söka efter i sökrutan, tryck sedan på framåt/bakåt-knapparna för att hitta det avkodade innehållet som innehåller nyckelordet, så hoppar vågformsgränssnittet till lämplig plats för analys. Om du analyserar resultatet av ett segment kan du klicka på en rad i checklistan, och framåt/bakåt-knapparna letar efter föregående och nästa matchningar med det här beteendet istället för att börja om från början.

För UART-protokollet stöder DSView även datasökning med flera rader. Kan användas för att hitta några sammanhängande strängresultat som visas i din data. Som visas i figur 3-29 sammanfogar en datasökning med flera rader flera nyckelord med tecknet "-".

3.5.4. Vågformssökning

DSView stöder inte bara sökning av avkodade resultat, utan också sökfunktionen för den ursprungliga vågformen. Vågformer kan snabbt lokaliseras i många scener. Till exempel, när vågformen sänds plötsligt, eftersom viloperioden är relativt lång, är det omöjligt att se den detaljerade vågformen sänds flera gånger samtidigt, du kan använda vågformssökningen och omedelbart hoppa till nästa vågformshopp efter titta på vågformen i föregående ögonblick för att säkerställa att zoomförhållandet är oförändrat.

Kontrollera verktygsfältet "Sök", sökrutan kommer att visas under mjukvarufönstret, klicka på sökrutan, pop upp sökinställningsfönstret, bestäm kanalhoppkanten, du kan söka efter vågformen som uppfyller kriterierna till vänster och höger nycklar. Samtidigt kan du också manuellt flytta sökmarkören för att bestämma var sökningen börjar.

När sökning är vald, visas en markör med en "S"-tagg, initialtillståndet är grått, om du klickar vänster/höger för att söka och hitta en vågform som uppfyller kriterierna, kommer markören att bli blå och automatiskt flytta till sökplatsen . Om du manuellt flyttar "S"-markören blir markören grå igen.

3.5.5. Marköranvändning

DSView stöder ett brett utbud av marköroperationer, vilket tillåter inte bara timingmätningar med markören, utan även att markera och spåra speciella vågformer med markören. När vågformen är inaktiv eller intervallet är långt kan du infoga en markör vid varje position av intresse, och när du vill hoppa till en vågform av intresse behöver du bara högerklicka i linjalområdet och sedan klicka på markörsekvensnummer du vill hoppa till, som kan hoppa till motsvarande markörposition.

Om du vill flytta markören behöver du bara flytta musen nära markören, när markören visas i fet stil, klicka på vänster musknapp för att välja, markören kommer att följa musrörelsen, bestämma positionen och klicka på vänster knapp igen för att släppa markören. När du vill att markören ska knäppa till en av hoppkanterna på en viss kanalvågform behöver du bara flytta musen nära hoppkanten, och markören kommer automatiskt att knäppa till kanten av hoppet.

3.5.6. Musmått

Förutom markörbaserade mätningar ger DSView mer bekväma musmätningar. Till exempel mätningar av aktuell pulsbredd, period, arbetscykel och frekvens (behöver bara placera musen över den växlande pulsen); Mätning av antalet kanter (klickning på start- och slutpositionerna på vågformen kommer automatiskt att räkna hoppkanterna för detta intervall); och mätning av kantavståndet (musklicka på startkanten och flytta till ändkanten).

Som visas i figur 3-31, flytta musen till positionen för startövergångskanten, klicka på vänster musknapp, välj startövergångskanten, flytta musen till positionen för slutövergångskanten och avståndet mellan de två övergångskanter (varaktighet/provtagningsintervallpunkt) kommer att visas och vänster musknapp klickas igen för att slutföra mätningen.

4. Vanliga frågor

4.1. Bestäm den okända baudhastigheten

När vi inte kan erhålla överföringshastigheten för UART-vågformen i förväg, kan vi också gissa den sanna överföringshastigheten genom den förvärvade vågformen. DSView tillhandahåller en "Guess bitrate"-avkodare för att gissa baudhastighetsparametrarna för en godtycklig vågformssträng. Principen för Guess bitrate är att hitta den smalaste pulsbredden i vågformen i sin tur, som vågformens bredd på en bit, och sedan beräkna dess reciproka som baudhastigheten. Så det kan finnas flera resultat, vi behöver bara observera om motsvarande puls är en rimlig pulsbredd och sedan välja det maximala baudhastighetsresultatet. Detta visas i figur 4-1.

När baudhastigheten har erhållits kan den ställas in på alternativen för UART-avkodaren. Eftersom UART-protokollet omsynkroniserar varje startbit, kommer felet i baudhastigheten bara att ackumuleras i en dataram, och så länge som felet inom en ram inte överskrider bitbitens gräns kan det korrekta avkodningsresultatet erhållas .

Naturligtvis, om det finns ett litet sampel av vågformen, såsom ingen puls med en enda bitbredd i vågformen, är den gissade baudhastigheten sannolikt felaktig, vilket resulterar i ett felaktigt avkodningsresultat. När det finns en vågform som inte överensstämmer med protokollet kommer UART-avkodaren också att ge möjliga feltips, såsom ramfel, som visas i figur 4-2. Erfarna ingenjörer kan justera baudhastigheten genom att observera vågformen och avkodningsresultaten för att erhålla korrekta avkodningsresultat.

4.2. Avkodning av antiförtroendetecken

I föregående avsnitt nämnde vi att UART-protokollet kan överföras av olika fysiska signaler, och vissa fysiska lagersignaler kan ha ett omvänt förhållande till protokollsignalen (utbytbara på hög och låg nivå), såsom RS232, eller B-signalen i RS485 differentialsignal. När signalen vi samlar in vänds kan DSViews UART-avkodare även ställas in för att få rätt avkodningsresultat.

Användaren behöver bara ersätta "Invertera signalen?" i inställningarna för UART-dekodern. Alternativet är inställt på "ja". Avkodningen av backsignalen visas i följande figur.

4.3. Avkodning av multi-grupp UART kommunikation

DSViews UART-avkodare är avsiktligt utformad för att vara en enkanalsmetod, vilket underlättar godtyckliga kanalinställningar för multiplexerad kommunikation vid avkodning. Till exempel, för en full-duplex UART-kommunikation, som har både en TX-signal och en RX-signal, behöver vi bara lägga till två UART-avkodare för att motsvara avkodningen av TX och RX.

Som visas i figuren nedan är det fallet där tre UART-signaler avkodas samtidigt.

4.4. Avkodningsfel orsakat av startpositionen

För varje kommunikationsprocess måste enheten starta från initialtillståndet för att korrekt ta emot kommunikationsinnehållet, det vill säga korrekt identifiera och analysera protokollramen. Detsamma gäller för logiska analysatorer, om inhämtningen av en signal börjar exakt i mitten av en dataram, kommer fel startposition sannolikt att leda till ett felaktigt avkodningsresultat. Som visas i följande figur fortsätter enheten att skicka strängen "DreamSourceLab", men eftersom platsen för den första infångningen är exakt i mitten av dataramen, blir avkodningen av den första vågformen förvrängd.

För att undvika felaktig avkodning av data kan vi artificiellt ställa in startpositionen och slutpositionen för avkodningen, för att undvika avkodningsfel orsakade av trunkerade dataramar. Avkodningspositionen kan vara den specificerade positionen för vilken markör som helst, och operationen behöver bara ställa in motsvarande start- och slutpositioner i avkodarens inställningar efter att motsvarande markör har satts in. Som visas i följande figur undviker inställning av startpositionen felaktig avkodning av den första trunkerade vågformen.

5. Avancerad analys

5.1. Parsning av flerskiktsprotokoll

UART är ett mycket allmänt använt basprotokoll, och många av de överföringsprotokoll som används i praktiska tillämpningar är utvidgade på basis av UART. Till exempel: DMX512, LIN, MIDI och Modbus, etc., den underliggande kommunikationsbasen är UART-protokollet. 、

Enligt den här funktionen stöder DSView även parsningsstapling av flerskiktsprotokoll. När vi lägger till en avkodare av ett komplext protokoll kommer DSView automatiskt att bygga hela protokollstacken från toppnivån, vilket gör avkodningsresultaten rikare och mer perfekta, vilket är till stor hjälp för användarens djupgående analys och förståelse av protokollet.

Låt oss ta Modbus RTU som ett exempel för att förstå processen för DSView-analys av flerskiktsprotokoll. Baserat på UART-byteöverföringsfunktionen specificerar Modbus RTU den specifika betydelsen av varje byte i detalj, så att ramstrukturen för Modbus bildas genom att kombinera flera UART-protokollramar tillsammans. Detta visas i följande figur.

När du använder DSView för sådan protokollavkodning behöver du bara ange motsvarande protokoll i protokollsökrutan och lägga till det. DSView bygger automatiskt inställningssidan för hela staplingsprotokollet, som visas i följande figur, och användaren kan göra motsvarande inställningar.

Som visas i följande figur kan staplingsstrukturen för protokollet tydligt ses från avkodningsresultatet för Modbus RTU. Modbussen för varje ram består av 8 UART-byte-ramar. Innehållet i en Modbus-ram kommer också att ha tydliga kommentarer som anger dess specifika betydelse. När ett överföringsfel uppstår kan ett sådant avkodningsresultat mycket tydligt lokalisera platsen för felet, såväl som orsaken till felet (oavsett om det är ett problem med den underliggande UART eller ett problem med Modbus-protokolllagret). Om du inte vill se de underliggande detaljerna kan du dölja motsvarande avkodade innehåll på inställningssidan för avkodaren.

Var den första att kommentera

Lämna ett svar

E-postadressen publiceras inte.


*