UART protokol analyse

1. Aftalegrundlag

1.1. Introduktion til aftalen

UART er "Universal Asynchronous Receiver/Transmitter", en forkortelse for Universal Asynchronous Transceiver. I 1860'erne, for at løse problemet med computer- og fjernskrivekommunikation, opfandt Bell UART-protokollen, som konverterer parallelle indgangssignaler til serielle udgangssignaler. På grund af sin enkle og praktiske natur er UART blevet en meget udbredt kommunikationsprotokol. De serielle porte vi dagligt udsættes for, RS232, RS485 og andre busser, den interne brug er grundlæggende UART-protokollen.

For bedre at forstå og analysere forholdet mellem protokoller og busser opdeler vi normalt en komplet kommunikationsspecifikation i fysiske lag, protokollag og applikationslag. Det fysiske lag definerer kun de sande signalkarakteristika (såsom spænding, strøm, drivkapacitet osv.) og overensstemmelsen mellem det elektriske signal og det logiske signal 0 og 1; Protokollaget er ligeglad med, hvordan de underliggende 0'er og 1'er implementeres, men specificerer kun protokolspecifikationerne for de logiske signaler og kommunikationsprocessen (såsom start, data og slut osv.); Applikationslaget er ligeglad med, hvordan dataene opnås, men definerer kun betydningen af ​​datarepræsentationen, og hvordan man implementerer den specifikke forretningslogik.

Den enkleste anvendelse af UART-protokollen, normalt behøver det fysiske lag kun to transmissionslinjer, en til transmission og en til modtagelse, og dermed opnås fuld-duplekskommunikation. Til envejstransmissioner kan du også kun bruge én transmissionslinje. Det mest typiske eksempel på en sådan applikation er mikrocontrollerens RX/TX-porte forbundet med hinanden, hvilket muliggør TTL-niveaubaseret UART-kommunikation. For forskellige transmissionsafstande og krav til pålidelighed kan udskiftning af forskellige fysiske lagimplementeringer få vores almindelige RS232, RS485 og andre kommunikationsbusser.

1.2. Forskellige implementeringer af fysiske lag

Da inputtet til UART-protokollaget er et logisk 0/1-signal, kan det logiske 0/1-signal skelnes af forskellige niveaustandarder i det fysiske lag. Til forskellige kommunikationsbehov kan forskellige fysiske lag bruges. For eksempel, simpel indbygget kommunikation, eller almindelige enhedsfejlfindingsscenarier, kan UART-protokolkommunikationen mellem to enheder udføres ved hjælp af et simpelt LVTTL/TTL-niveau.

Den universelle serielle port bruger RS232-niveauet, som kan øge transmissionsafstanden og modstå en vis grad af signalinterferens. Omkostningerne er, at den tilsvarende niveauoversættelseschip er påkrævet på det fysiske lag for at opnå, senderen skal konvertere det interne høj- og lavniveausignal til et højere spænding +/- spændingssignal, og den modtagende ende skal konvertere +/ - spændingssignal til et internt høj- og lavniveausignal.

I tilfælde af industriel kommunikation, for yderligere at forbedre transmissionsafstanden og forbedre signalets pålidelighed, bruges RS485-niveaustandarden generelt. De almindelige høj- og lavniveausignaler konverteres til et par differentielle signaler ved den transmitterende ende, og differentialsignalerne konverteres til almindelige høj- og lavniveausignaler i den modtagende ende. Derudover tillader RS485 at tilslutte op til 128 transceivere på bussen, mens TTL eller RS232 er punkt-til-punkt forbindelser.

1.2.1. TTL-baseret UART-kommunikation

UART-kommunikation baseret på TTL er den enkleste use case for UART-protokolapplikationer. Det vil sige, at de høje og lave niveauer af den digitale I/O-udgang transmitteres direkte som det faktiske fysiske signal. Med hensyn til fysisk forbindelse er det kun enheden, der skal være fælles, og envejskommunikation kan gennemføres via en signallinje. Hvis tovejs fuld dupleks er påkrævet, bruges to signallinjer.

For at sammenligne forskellene i implementeringen af ​​forskellige fysiske lag, kan vi observere, hvordan de faktiske signaler fra forskellige fysiske lag adskiller sig, når de samme data sendes. Tag her transmissionskarakteren 'D' som et eksempel, gennem stenoscilloskopet, og observer direkte signalet transmitteret af TTL (sondejordterminalen er forbundet til enhedens fælles jordende, og sondesignalenden er forbundet til den blå signallinje i figuren ovenfor), og signalbølgeformen vist i figur 1-4 kan opnås. Som det kan ses af bølgeformen, når der ikke er nogen datatransmission, vil UART-signalet forblive på et højt niveau (den specifikke signalamplitude bestemmes af forsyningsspændingen af ​​I/O), signalet vil hoppe under datatransmissionen , og signalet vil vende tilbage til den inaktive højniveautilstand, efter at transmissionen er afsluttet.

1.2.2. UART kommunikation baseret på RS232

For at forbedre drevets evne til at øge transmissionsafstanden og pålideligheden bruger RS232-bussen et bipolært spændingssignal til fysisk transmission. Inden signalet sendes/modtages, konverteres det interne signal og bussignalet til hinanden ved hjælp af en niveauskiftende chip. Tilslutningsmetoden er nøjagtig den samme som TTL-niveauet, og hele det fysiske lag er blot et lag mere niveauoversættelse.

Ved også at bruge transmitteringstegnet 'D' som et eksempel, forbindes Pushi-oscilloskopets sonde til signalenden, og den faktiske bølgeform vist i figur 1-6 kan fanges. Det kan ses, at RS232-bølgeformen er negativ spænding, når den er inaktiv, og når der er datatransmission, begynder signalet at hoppe mellem positive og negative spændinger og vender tilbage til den inaktive negative spændingstilstand, efter at transmissionen er afsluttet.

1.2.3. UART kommunikation baseret på RS485

RS485 er designet til komplekse industrielle miljøer, og den største egenskab ved RS485-bussen er brugen af ​​differentiel signaltransmission sammenlignet med de fysiske lag i andre UART-protokoller. Før signalet sendes, konverteres single-ended signalet til et differentielt signal af transceiveren på RS485 og sendes derefter til bussen til transmission; Også før modtagelse konverteres differentialsignalet på bussen af ​​transceiveren til et enkelt-endet signal og sendes derefter til UART-controlleren til modtagelse. På RS485-bussen kræves to par differentielle signallinjer (dvs. 4 signallinjer) til fuld-dupleks tovejskommunikation. Hvis der kun udføres halv-dupleks tovejskommunikation, kræves der kun et par differentielle signaler.

Igen, ved at bruge transmittertegnet 'D' som et eksempel, kan den faktiske bølgeform vist i figur 1-8 opnås ved hjælp af to kanalsonder (almindeligvis refereret til) af proberne på Pushi-oscilloskopet, som er forbundet til A/B-enderne af et af differentialsignalerne. Det kan ses, at bølgeformen ved A/B-enden er komplementær. A-terminalbølgeformen er fremadgående logik (positiv spænding ved tomgang), og B-terminalbølgeformen er omvendt logik (negativ spænding når tomgang).

2. Protokolspecifikationer

2.1. UART rammestruktur

I introduktionen af ​​det foregående afsnit observerede vi den faktiske UART-bølgeform gennem stenoscilloskopet, så hvordan genkendes denne bølgeform nøjagtigt som tegnet 'D' og ikke noget andet? Dette involverer definitionen af ​​rammestrukturen for UART-protokollen. Som vist i figur 2-1:

Når to enheder skal kommunikere via UART-protokollen, skal de blive enige om følgende på samme tid:

  • Tidslængde pr. signal T (baudrate = 1/T)
  • Det specifikke antal bits i hvert element i rammestrukturen
  • Om der er et kontrolciffer, og mekanismen for kontrolcifferet (ulige/lige/...). )

Med disse konventioner behøver den modtagende enhed kun at vente på ankomsten af ​​startbitten og derefter sample den efterfølgende bølgeform med regelmæssige intervaller for at opnå den specifikke transmitterede information. Tager vi bølgeformen af ​​tegnet 'D' som et eksempel, er opløsningsprocessen vist i figur 2-2:

2.1.1. Baud rate

Baudhastighed er et meget vigtigt koncept i UART-protokollen eller alle asynkrone serielle protokoller, det vil sige antallet af bits, der kan repræsenteres pr. tidsenhed (1 sekund), eller det kan også udtrykkes som den reciproke af bitbredden . For eksempel betyder en UART-bølgeform med en baudrate på 115200, at den kan rumme 115200 bits i sekundet, hvilket betyder, at hver bit data tegner sig for omkring 8.68uS tid.

Asynkrone serielle protokoller såsom UART, for at forenkle den fysiske forbindelse af signaler og reducere kommunikationsomkostninger, har generelt kun én signallinje og kan ikke transmittere data og ursignaler på samme tid. For at transceiveren/sendeenheden kan løse bølgeformen korrekt, skal den have samme baudrateindstilling. Den samme bølgeform, der bruger forskellige baudrater, kan få helt forskellige oplysninger. For den modtagende enhed kan kun startbitten bruges som synkroniseringspunktet for en dataramme, og de andre data bestemmes af baudhastigheden for at bestemme den specifikke samplingsplacering.

Igen, ved at bruge bølgeformen af ​​tegnet 'D' som et eksempel, som vist i figur 2-4, kan du få helt forkerte dataoplysninger, hvis det modtages med den forkerte baudrate.

2.1.2. Tomgangsbits

Når data ikke overføres mellem enheder, indikerer et vedvarende højt niveau tomgang. Jo længere den inaktive bit varighed og jo længere intervallet mellem to datarammer, jo færre data transmitteres pr. tidsenhed.

2.1.3. Start bit

UART-modtageren vil altid detektere niveauændringen på signallinjen, og når dataene transmitteres, vil afsenderen trække signallinjen fra det høje niveau til slutningen af ​​det lave niveau til inaktiv tilstand og holde lidt tid. Når modtageren registrerer et højt-lavt niveauskift, begynder den at modtage signaler.

2.1.4. Data bits

Databitten indeholder de faktiske transmitterede data, som er 5 til 8 bit lange, hvis der anvendes paritet, og 5 til 9 bits, hvis paritet ikke anvendes. Generelt er databittene 8 bits, og dataene sendes først fra den mindst signifikante bit, hvor de høje bits kommer i anden række.

2.1.5. Tjek cifre

Kontrolcifrene kan bruges til at forbedre transmissionens pålidelighed. Hvis signalet er forkert på grund af interferens i transmissionsprocessen og forårsager en fejl i niveauet af nogle positioner, kan det bestemmes, om de modtagne data og kontrolcifferet stemmer overens ved at beregne, om de modtagne data og kontrolcifrene er matchede, så for at give gyldig information til applikationslaget for at beslutte at acceptere/kassere de tilsvarende data.

2.1.6. Stop Bit

Stopbitten repræsenterer slutningen af ​​en dataramme, og det faktiske signal er en tidsperiode høj. Længden af ​​stopbitten kan indstilles til en stopbit på 1, 1.5 eller 2 bit. I de fleste tilfælde bruges en stopbit på 1 bit.

Fordi UART er en asynkron protokol, kan begyndelsen af ​​hver frame synkroniseres med en springkant, men stopbitten kan kun beregne den relative position ved baudhastigheden, og hvis et lavt niveau genkendes ved stoppositionen, er der en rammefejl. er genereret. I kommunikationsprocessen kan forskellige stopbitlængder indstilles til at tilpasse sig for at reducere problemet forårsaget af fejlen i baudraten.

3. Analyser UART-kommunikation ved hjælp af en logisk analysator

3.1. Oscilloskop vs Logic Analyzer

Som det primære test- og måleinstrument til generelle formål har oscilloskoper en naturlig fordel ved at observere detaljerne i analoge signaler. For eksempel kan realtidsdrift med en høj bølgeforms opdateringshastighed nemt observere pludselige unormale signaler; For eksempel, når der udføres støjevaluering og signalkvalitetsoptimering, kan oscilloskopet sammenligne ligheder og forskelle mellem signaler på den samme bus og forskellige noder for at finde skjulte signalintegritetsproblemer.

Oscilloskopet har dog naturligvis også nogle ubekvemme steder, udover de få kanaler er skærmen generelt lille, betjeningen er ikke computer + mus måde fleksibel og kontrollerbar disse morfologiske problemer, til opsamling og analyse af digitale signaler, de største problemet med oscilloskopet er, at opbevaringsdybden er for lille. Et oscilloskop på flere hundrede tusinde yuan kan også have en lagringsdybde på kun et par hundrede mpts. På samme tid, på grund af begrænsningen af ​​lagringsdybden, når det er nødvendigt at foretage en lidt længere tidsopsamling, vil oscilloskopets sande samplingshastighed falde kraftigt, hvilket resulterer i, at den indsamlede bølgeform ikke kan genoprette det reelle signal, og tabe analysens betydning.

Logikanalysatorer er test- og måleinstrumenter, der er specielt designet til digital signalopsamling og analyse, og de indsamlede bølgeformresultater er kun høje og lave niveauer (det vil sige logiske 0 og 1). Det kompenserer dog for manglen på oscilloskoper ved indsamling og analyse af digitale signaler.

  1. 1. De fleste logiske analysatorer betjenes på en pc med den kraftfulde ydeevne fra desktopprocessorer og den interaktive oplevelse af modne operativsystemer, hvilket i høj grad forbedrer bekvemmeligheden og effektiviteten ved digital signalanalyse.
  2. 2. Antallet af logikanalysatorkanaler er stort, entry-level DSLogic logikanalysatoren har 16 kanaler, der kan indsamles på samme tid, og brugeren kan også få logikanalysatorprodukter med snesevis eller endda hundredvis af kanaler på en meget rimelig måde koste.
  3. 3. Den logiske analysators lagringsdybde er større, for eksempel kan DSLogic nå en lagringsdybde på 16G i stream mode, og samtidig opretholde en ret høj sample rate, der langt overstiger de fleste oscilloskopers indsamlingsevne.
  4. 4. Logikanalysatorer giver generelt rige protokoldekodningsfunktioner, som kan udføre dybdegående analyse af digitale signaler. For eksempel understøtter DSLogic i øjeblikket mere end 100 afkodningsprotokoller. De fleste oscilloskoper har begrænsede afkodningsmuligheder, og de fleste kræver, at de tilsvarende plug-ins købes separat.

Dernæst vil vi fokusere på, hvordan man bruger logiske analysatorer til optagelse og analyse af UART-signaler i forskellige situationer.

3.2. Etabler et testmiljø for logiske analysatorer

3.2.1. Tilslutning til DSLogic

DSLogic er en bærbar logikanalysator baseret på USB-forbindelse. DSLogic-værten er ansvarlig for signalopsamling og caching og overfører derefter data via USB til værtscomputersoftwaren DSView på pc'en. DSView er ansvarlig for bølgeformsdatabehandling, visning, analyse og tilsvarende menneske-computer-interaktionsfunktioner.

Når du bruger, skal du blot tilslutte DSLogic-værten direkte til USB-porten på PC-kortet via et USB-datakabel, åbne DSView-softwaren og bekræfte, at INDIKATOREN på DSLogic-værten bliver stedsegrøn. På dette tidspunkt er forbindelsen og initialiseringen af ​​den logiske analysator fuldført. Som vist i figur 3-4 kan det aktuelle enhedsnavn i øverste venstre hjørne og den tilsvarende forbindelsesstatus ses på DSView-softwaren.

3.2.2. UART signalforbindelse

For alle målinger skal testudstyret og det signal, der skal måles, baseres på et fælles referenceplan, som almindeligvis betegnes som jording, således at det målte signal kan optages og måles korrekt. I nogle tilfælde er der ingen eksplicit jording, men måleresultaterne ser ikke ud til at være noget problem, det skyldes, at måleudstyret og det målte signal er forbundet til jorden på andre måder, såsom den samme strømforsyning, der bruges, eller referencen. jord er forbundet til jordklemmen på lysnettet på samme tid. Når der foretages strenge målinger, bør måleudstyret dog jordes i henhold til signalet under test. Jo større sløjfearealet af signaljordingsterminalen er fra det målte signal til måleapparatet, jo lettere er det for signalet at blive forstyrret, hvilket resulterer i målefejl eller endda målefejl.

For UART-signaler, når du får adgang til den logiske analysator, behøver det enkleste tilfælde kun at forbinde 2 ledninger, en til referencejorden og en til det målte signal. For de forskellige fysiske lag-implementeringer af UART-protokollen, vi nævnte tidligere, vil den måde, signalerne forbindes på, være lidt anderledes.

For eksempel, for UART-signalet på TTL-niveauet, ud over at forbinde referencejorden, behøver du kun at forbinde signalet (TX eller RX), der skal testes, til den tilsvarende kanalindgang på den logiske analysator.

For RS232 bussignaler kan vi enten måle bussignalet efter niveauoversættelse (DSLogic har et modstå spændingsområde på +-30V ved kabelindgangen, og +-15V signalområdet på RS232 kan tilsluttes direkte), eller vi kan måle det interne digitale signal før niveauoversættelse. Dens ledningsmetode er i overensstemmelse med TTL-signalet, den eneste ting at bemærke er, at RS232-signalet vender niveauet (negativ spænding ved tomgang, det vil sige lavt niveau), når vi afkoder UART-protokollen, kan vi vende det tilsvarende signalniveau i vinduet for afkodningsindstilling i DSView (Inverter signalindstillingen er indstillet til ja).

RS485-bussen bruger differentielle signaler, og når vi bruger en logisk analysator til signalopsamling, skal vi være særligt opmærksomme på tilslutningen af ​​det målte signal. Først og fremmest skal referencestedet for den logiske analysator forbindes til referencejorden på den tilsvarende enhed under test RS485 transceiver, så den logiske analysator kan garanteres at have det korrekte niveau referenceplan; For det andet, for differentielle signaler, behøver den logiske analysator kun at opnå høje og lave niveauer af homopolaritet med det interne signal. Fra perspektivet af digitale signaler forbedrer den differentielle måde kun pålideligheden af ​​signaltransmission uden at tilføje yderligere information. Som vist i figur 3-7, når du tester 485-bussignalet ved hjælp af en logisk analysator, skal du forbinde referencejorden på transceiveren på den tilsvarende enhed og A+-signalet på differentialbussen.

Hvis kun B-signalet kan opsamles, kan vi selvfølgelig også indstille UART-dekoderen til at vende signalet for at opnå det korrekte protokolopløsningsresultat ved afkodning i DSView.

3.2.3. Tærskelindstillinger

Tærsklen for den logiske analysator er bedømmelsesspændingen for høje og lave niveauer, det vil sige, når indgangssignalspændingen er højere end tærskelspændingen, er erhvervelsen højt niveau; Når indgangssignalspændingen er under tærskelspændingen, er optagelsen lav.

For UART-protokollen har vi tidligere introduceret, at den har forskellige fysiske lagimplementeringer, og forskellige fysiske lagimplementeringer har forskellige niveaustandarder. Vi behøver kun at vælge en tilsvarende tærskel for at skelne mellem høje og lave niveauer i forskellige tilfælde. Tærsklerne vist i figur 3-8 kan grundlæggende opfylde dette krav.

I nogle tilfælde kan den differentielle signalamplitude af RS485-bussen variere over et bredt område på grund af konfiguration eller fejlretning. Fordi RS485-specifikationen foreskriver, at så længe differentialspændingen mellem AB er større end 200mV, kan den betragtes som høj. På dette tidspunkt kan vi bruge stenoscilloskopet til at observere den faktiske signalniveauamplitude og derefter beslutte den passende tærskelindstilling. Du skal kun sikre dig, at den tærskelspænding, du indstiller, med rimelighed kan skelne mellem høje og lave niveauer.

3.3. Enkel UART-signalopsamling

De fleste UART-signaler er lavhastighedssignaler, såsom den mest almindeligt anvendte baudrate på 115200, hvilket indikerer, at signalfrekvensen kun er 115.2KHz. Sådanne signaler kan erhverves direkte ved hjælp af standardindstillingerne for DSLogic. Her, ved at tage værtens faste 1s interval og gentagne gange sende tegnet 'D' som et eksempel, beskriver det, hvordan man bruger en logisk analysator til at erhverve og analysere sådanne UART-signaler.

3.3.1. Signalopsamling

Når hardware- og signalforbindelsen er klargjort, skal du klikke på "Start"-knappen på DSView-softwaren direkte for at hente signalet under test ved standardindstillingen (1MHz samplingsfrekvensoptagelsestid 1s). Hvis du vil ændre prøvehastigheden og optagelsesvarigheden, skal du vælge de tilsvarende parametre direkte i den tilsvarende rullemenu. Samplinghastighedsindstillingsprincippet anbefales at være 10 gange eller mere af den maksimale frekvens af det målte signal, for eksempel for UART-signaler med en baudhastighed på 115200 baud er den hurtigste signalfrekvens 115.2KHz, når 1M samplinghastigheden er valgt, vil hvert bitsignal have 8 eller 9 samplingpunkter, og den tilsvarende fasefejl er +-1/8 (12.5%); Når en 10M sample rate er valgt, vil der være 86 eller 87 sample points pr bit signal, svarende til en fasefejl på +-1/86 (1.16%). Selvfølgelig anbefales det generelt ikke at bruge for høj en sample rate, fordi jo højere sample rate, jo kortere er den tid, den kan indsamles i, og den sample rate, der er for høj, kan indsamle flere spring på det enkelte spring. kanten af ​​det langsomme signal, hvilket forårsager problemer med protokolafkodningen. Figur 3-9 viser den resulterende signalbølgeform opnået ved brug af standardindstillingerne.

Som det kan ses af figur 3-9, opnår kanal 0 et signal, der er vedvarende højt, men finder ingen spring. Observer omhyggeligt tidslinealen over bølgeformvinduet og rullepanelet i bunden af ​​vinduet for at vide, at det aktuelle vindue kun viser en del af den indsamlede bølgeform, ikke alle signaler. På dette tidspunkt kan du zoome med musehjulet eller højreklikke i bølgeformområdet for at få vist alle bølgeformer for hele optagelsesvarigheden. Få resultatet vist i figur 3-10.

På baggrund af ovenstående figur ønsker vi kun at se på overgangsdelen af ​​kanal 0. Du kan slå bølgeformvisningen fra for andre kanaler i vinduet Indstillinger og justere visningshøjden på kanalsignalet. Peg derefter musen mod målbølgeformen og samtidig gennem musehjulet for at forstørre bølgeformen for den spidse position; Alternativt kan du vælge det område af bølgeformen du vil zoome ind ved at holde højre museknap nede i boksen. Hold også venstre museknap nede for at flytte bølgeformen til venstre og højre. Få kurveformdetaljerne vist i figur 3-11.

Når du observerer bølgeformen, kan placering af musen over pulsbølgeformen vise information såsom pulsbredde, periode, frekvens og driftscyklus for det aktuelle signal. Samtidig kan du også tilføje en markør ved at dobbeltklikke på venstre knap på musen, og når du flytter markøren, klikker den automatisk til den nærliggende springkant.

3.3.2. UART afkodning

Signalbølgeformen indsamlet af den logiske analysator ændrer sig kun i tid ved høje og lave niveauer (0/1), hvilket ikke er befordrende for vores målrettede analyse af processen og indholdet af signaltransmission. Selvom vi kan bruge det blotte øje til at oversætte protokolindholdet svarende til bølgeformen i henhold til protokolspecifikationen, vil det i høj grad reducere effektiviteten af ​​analysen. DSViews indbyggede dekoder giver rigt protokoldekodningsindhold, der gør kedelige bølgeformer til meningsfulde tegn, markører og dataindhold. Det letter i høj grad ingeniørers analyse og forståelse af signaler for at finde fejlmeddelelser eller kritiske data.

I DSView-softwaren er protokolafkodningen af ​​den erhvervede bølgeform meget enkel, bare åbn "Decode"-panelet, søg efter den tilsvarende dekoder (her vælger vi 1: UART-protokol), og indstil de tilsvarende dekoderindstillinger (inklusive display/kanal) /rammestruktur/format osv.). Når det er bestemt, begynder softwaren at afkode UART-protokollen på den valgte kanal. Det afkodede resultat vises i protokolkanalen. Dette er vist i figur 3-12.

Når du vælger en dekoder, giver DSView en praktisk protokolsøgefunktion, indtast blot nøgletegn i protokolsøgefeltet, DSView vil liste alle dekodere, der indeholder disse tegn, hvor brugeren kan vælge den korrekte dekoder. Som vist i figur 3-13 er der to protokoller relateret til UART 0: UART og 1: UART, hvor 0: UART er en forenklet dekoder, der ikke analyserer bitinformation, og den understøtter heller ikke stabling af protokoller på højere niveau, når vi kun ønsker at få de data, der svarer til bølgeformen, kan du bruge denne forenklede protokol til at reducere afkodningstid og hukommelsesressourcer.

Indstillingsvinduet for dekoderen har mange indstillingsmuligheder relateret til afkodning, og indholdet af indstillingsvinduet for forskellige protokoller vil være forskelligt. Der er nogle muligheder, som alle dekodere skal indstille, såsom overensstemmelsen mellem kanal- og protokolsignaler. Her bruger vi UART-signalet grebet af kanal 0, så den tilsvarende kanal, der skal afkodes, skal indstilles til kanal 0.

Og protokol-relaterede indstillingsmuligheder, vi har forklaret i detaljer i rammestruktur afsnittet, i den faktiske operation kan også opnås gennem den serielle port vært computersoftware (seriel port debugging assistent, etc.) for at få disse oplysninger. Dette er vist i figur 3-14.

For afkodet dataindhold understøtter DSView forskellige visningsformater. For eksempel viser det tidligere erhvervede UART-signal tegnet 'D' i form af ASCII-koder, eller det kan ændres til visningstilstanden hexadecimal (Hex), og resultatet vil vise 0x44. Dette er vist i figur 3-15. Aktuelt understøttede visningsformater er: hex (hexadecimal), dec (decimal), okt (oktal), bin (binær) og ascii-kode.

3.4. Anskaffelse af en enkelt UART transmission

Når bølgeformen, vi ønsker at fange, er et lejlighedsvis signal, ved vi ikke, hvornår bølgeformen vises, og hvis vi bruger den direkte optagelsesmetode, kan vi muligvis kun fange den inaktive signalbølgeform det meste af tiden, og vi kan ikke opfange signalet på tidspunktet for den faktiske transmission.

På dette tidspunkt kan det fanges ved at trigge. Ved at indstille de tilsvarende triggerbetingelser kan vi styre starttidspunktet for signalopsamling i overensstemmelse med ændringen af ​​bølgeformen, for nøjagtigt at fange den signalbølgeform, vi ønsker at se.

3.4.1. Buffertilstand

DSLogic understøtter to optagelsestilstande: Stream-tilstand og buffertilstand. De data, der indsamles i Stream-tilstand, overføres til pc'en i realtid og behandles derefter af DSView. De data, der indsamles i Buffer-tilstand, cachelagres først i DSLogics interne hardware-cache, og overføres derefter til pc'en, efter at anskaffelsen er gennemført, og behandles af DSView.

Ud over fordelene ved at opnå højere samplingsfrekvenser, understøtter buffertilstand også flere triggermuligheder og indstillinger, såsom multi-level triggering, seriel triggering og indstilling af triggerpositioner. Stream-tilstand understøtter på den anden side kun simpel udløsning.

3.4.2. Triggerindstillinger

For enkel udløsning kan vi indstille trigger-indstillingen direkte ved siden af ​​kanalen. Det svarer sekventielt til stigende kant, høj, faldende kant, lavt niveau og enhver kantudløser. Bare behold standard simple trigger-tilstand i triggerpanelet. For eksempel, for en UART-transmission, der ikke ved, hvornår den opstår, kan vi vælge at udløse den faldende kant. Når UART-signalet forbliver inaktivt, er triggeren ikke tilfreds. DSLogic venter på, at triggertilstanden ankommer, som vist i figur 3-17.

Når UART begynder at sende den første startbit, aktiveres triggerbetingelsen, og DSLogic henter signalbølgeformen på triggertidspunktet. Dette er vist i figur 3-18.

Lad os overveje et mere komplekst triggerscenarie, såsom enhed A, der konstant sender data til enhed B tilfældigt, og enhed B svarer på forskellige data i henhold til dataindholdet sendt af enhed A. Hvis vi vil vide, hvilke data Enhed A sendte til enhed B før vi sender data 0, hvordan indstiller vi triggerbetingelsen til at fange bølgeformen på det tilsvarende tidspunkt?

Der er to problemer, der skal løses her, først skal vi indstille placeringen af ​​triggeren, så vi kan se dataene før triggeren, ikke dataene efter triggeren; For det andet skal vi finde kurvekarakteristika for enhed B, der sender data 0, og konvertere dem til den tilsvarende triggertilstand.

UART protokol analyse

Figur 3-19 Udløserposition

I henhold til protokolreglerne for UART vil bølgeformen, der sender data 0, være et relativt bredt kontinuerligt lavniveauimpulssignal. Hvis baudhastigheden for UART er 115200, og samplinghastigheden, vi indstiller, er 1MHz, er bølgeformen for data 0 vist i figur 3-20, som vil være en lav-niveau puls på omkring 78.125uS.

For at indstille den avancerede trigger- eller triggerposition kræver buffertilstandsunderstøttelse, du skal først indstille "Run mode" til "Buffer mode" i "Options", og ikke vælge "RLE hardware compression" muligheden. Indstil den avancerede triggertilstand til kanal 1 med et kontinuerligt lavpunkt på 75 samplepunkter (svarende til en 1MHz sample rate, hvilket er et lavt niveau på 75us), og indstil triggerpositionen til 80% for at lette observationen af ​​data før triggering. De specifikke indstillinger er vist i figur 3-21.

Ifølge denne triggertilstand udløses den, når enhed B sender data 0, og den opnåede bølgeform er vist i figur 3-22.

3.4.3. Gentag samlingen

I nogle tilfælde er vi nødt til dynamisk at observere status for nogle signaler, såsom dataindholdet sendt af Burst hver gang, men vi ved ikke, hvornår dataene sendes, og det er umuligt at klikke på "Start"-knappen ofte . DSView giver en "gentag" optagelsestilstand, der automatisk henter og opdaterer bølgeformer, når udløsningen er opfyldt. Når vi fejlfinder nogle periodiske burst-signaler, er det meget praktisk at observere resultaterne af dynamisk optagelse og protokolparsing gennem gentagelsestilstanden.

Gentagelsestilstanden kan indstilles som vist i figur 3-23. Gentagelsesintervallet er den mindste dvæletid mellem to prøver for at lette observationen af ​​bølgeformen og afkodningsresultaterne fra den tidligere optagelse.

3.5. Anskaffelse af langsigtede UART-transmissioner

Når det er nødvendigt at erhverve ultralange bølgeformer til analyse, kan vi bruge Stream-tilstand. DSLogic kan opnå en samplingdybde på 16G pr. kanal i Stream-tilstand. Ved en samplingshastighed på 1MHz kan optagelsestiden nå 16G/1M ≈ 16000s, hvilket er mere end 4 timer.

3.5.1.Stream-tilstand

Stream mode-opsætningen er vist i figur 3-24, og forskellige DSLogic-hardwareversioner understøtter forskellige stream mode-kanalindstillinger. For U3Pro16, baseret på USB3.0-porten, kan den opnå 3 kanaler @ op til 1GHz sample rate, 6 kanaler @ op til 500MHz sample rate, 12 kanaler @ op til 250MHz sample rate og 16 kanaler @ op til 125MHz sample rate.

Når mængden af ​​indsamlede data er relativt stor, kan 0:UART-protokollen bruges til afkodning sammenlignet med 1:UART, som udelader output af bitinformation, ikke understøtter protokolstabling på højt niveau og kan forkorte afkodningstiden og reducere hukommelsesbesættelse. De andre funktioner er de samme som 1: UART. Afkodningseffekten er vist i figur 3-25.

3.5.2. Listen over protokoller vises

Som vist i den følgende figur er det grafiske afkodningsresultat fuldstændigt synkroniseret med den erhvervede bølgeform i tid, hvilket hjælper os med at forstå bølgeformen og finde problemet, men på samme tid, på grund af tidens displayskala, er det ikke befordrende for at se afkodningsresultatet. Listevisninger kompenserer for denne mangel, hvilket gør det nemt at se og analysere store mængder afkodet indhold.

DSView giver mulighed for at springe mellem grafiske resultater og listeresultater. Klik på en hvilken som helst række i listens resultater for automatisk at springe til det tilsvarende bølgeformresultat, og du kan også vælge, om du automatisk vil zoome ind på bølgeformen, når du hopper, eller rette den aktuelle zoomforholdskolonne for bølgeformen. Derudover, når vi ser bølgeformen på et bestemt tidspunkt, hvis vi ønsker at hoppe til den position, hvor afkodningsresultatet svarende til denne bølgeform vises på listen, behøver du kun at klikke på positioneringsknappen i øverste højre hjørne af listevisningsvindue.

Derudover kan det afkodede indhold eksporteres til en fil via listevisningen. Som vist i figuren ovenfor, ved at klikke på knappen "Gem" vist på listen, kan du vælge at eksportere det aktuelt afkodede indhold til en csv- eller txt-fil, hvilket er praktisk til mere tredjeparts databehandling, såsom input til matlab til analyse eller som datainput til anden software.

3.5.3. Afkode datasøgning

En anden fordel ved listevisningen er, at de afkodede resultater kan bruges som strenge til resultatsøgninger, såsom søgning efter specifikke operationer eller specifikke bytes af data, som hurtigt kan lokalisere det sted, der skal ses.

Indtast det nøgleord, du vil søge efter, i søgefeltet, og tryk derefter på frem-/tilbage-knapperne for at finde det afkodede indhold, der indeholder nøgleordet, og bølgeform-grænsefladen vil springe til det passende sted for analyse. Hvis du analyserer resultaterne af et segment, kan du klikke på en række i tjeklisten, og frem/tilbage-knapperne leder efter de forrige og næste matcher, der starter med denne adfærd i stedet for at starte fra bunden.

For UART-protokollen understøtter DSView også multi-row data search. Kan bruges til at finde nogle sammenhængende strengresultater, der vises i dine data. Som vist i figur 3-29, sammenkæder en multiline datasøgning flere nøgleord med tegnet "-".

3.5.4. Bølgeformsøgning

DSView understøtter ikke kun søgningen efter afkodede resultater, men også søgefunktionen i den originale bølgeform. Bølgeformer kan hurtigt lokaliseres i mange scener. For eksempel, når bølgeformen transmitteres pludseligt, fordi tomgangsperioden er relativt lang, er det umuligt at se den detaljerede bølgeform transmitteret flere gange på samme tid, du kan bruge bølgeformsøgningen og straks hoppe til næste bølgeformspring efter visning af bølgeformen i det foregående øjeblik for at sikre, at zoomforholdet er uændret.

Tjek "Søg" værktøjslinjen, søgefeltet vises under softwarevinduet, klik på søgefeltet, pop op vinduet med søgeindstillinger, bestem kanalspringkanten, du kan søge efter den bølgeform, der opfylder kriterierne ved venstre og højre nøgler. Samtidig kan du også manuelt flytte søgemarkøren for at bestemme, hvor søgningen starter.

Når søgning er valgt, vises en markør med et "S" tag, starttilstanden er grå, hvis du klikker til venstre/højre for at søge og finde en bølgeform, der opfylder kriterierne, vil markøren blive blå og automatisk flytte til søgestedet . Hvis du manuelt flytter "S"-markøren, bliver markøren grå igen.

3.5.5. Brug af markør

DSView understøtter en bred vifte af markøroperationer, hvilket ikke kun muliggør timingmålinger med markøren, men også markering og sporing af specielle bølgeformer med markøren. Når bølgeformen er inaktiv eller intervallet er langt, kan du indsætte en markør ved hver interesseposition, og når du vil hoppe til en bølgeform af interesse, behøver du kun at højreklikke i linealområdet og derefter klikke på markørens sekvensnummer, du vil springe til, som kan springe til den tilsvarende markørposition.

Hvis du vil flytte markøren, behøver du kun at flytte musen i nærheden af ​​markøren, når markøren vises fed, klik på venstre museknap for at vælge, markøren vil følge musebevægelsen, bestemme positionen og klikke på venstre knap igen for at slippe markøren. Når du vil have markøren til at klikke til en af ​​springkanterne på en bestemt kanalbølgeform, behøver du kun at flytte musen nær springkanten, og markøren klikker automatisk til kanten af ​​hoppet.

3.5.6. Mus mål

Ud over markørbaserede målinger giver DSView mere bekvemme musemålinger. For eksempel målinger af den aktuelle pulsbredde, periode, driftscyklus og frekvens (du skal blot placere musen over den skiftende puls); Måling af antallet af kanter (klik på start- og slutpositionerne på bølgeformen vil automatisk tælle springkanterne for dette interval); og måling af kantafstanden (klik med musen på startkanten og flyt til endekanten).

Som vist i figur 3-31, flyt musen til positionen for startovergangskanten, klik på venstre museknap, vælg startovergangskanten, flyt musen til positionen for slutovergangskanten og afstanden mellem de to overgangskanter (varighed/prøveintervalpunkt) vil blive vist, og venstre museknap vil blive klikket igen for at fuldføre målingen.

4. Ofte stillede spørgsmål

4.1. Bestem den ukendte baudrate

Når vi ikke kan opnå baud-hastigheden for UART-bølgeformen på forhånd, kan vi også gætte den sande baud-hastighed ved den opnåede bølgeform. DSView leverer en "Guess bitrate"-dekoder til at gætte baudhastighedsparametrene for en vilkårlig bølgeformstreng. Princippet i Guess bitrate er at finde den smalleste pulsbredde i bølgeformen igen, som bølgeformens bredde af en bit, og derefter beregne dens reciproke som baudhastigheden. Så der kan være flere resultater, vi behøver kun at observere, om den tilsvarende puls er en rimelig pulsbredde, og derefter vælge det maksimale baudrate-resultat. Dette er vist i figur 4-1.

Når baudhastigheden er opnået, kan den indstilles til indstillingerne for UART-dekoderen. Fordi UART-protokollen resynkroniserer hver startbit, vil fejlen i baudhastigheden kun akkumuleres i én dataramme, og så længe fejlen inden for én ramme ikke overskrider grænsen for bitbitten, kan det korrekte afkodningsresultat opnås .

Selvfølgelig, hvis der er en lille sample af bølgeformen, såsom ingen puls på en enkelt bitbredde i bølgeformen, så er den gættede baudrate sandsynligvis forkert, hvilket resulterer i et forkert afkodningsresultat. Når der er en bølgeform, der ikke er i overensstemmelse med protokollen, vil UART-dekoderen også give mulige fejltip, såsom rammefejl, som vist i figur 4-2. Erfarne ingeniører kan justere baudhastigheden ved at observere bølgeformen og afkodningsresultaterne for at opnå de korrekte afkodningsresultater.

4.2. Afkodning af anti-tillidstegn

I det foregående afsnit nævnte vi, at UART-protokollen kan transmitteres af forskellige fysiske signaler, og nogle fysiske lagsignaler kan have et omvendt forhold til protokolsignalet (udskiftelig på højt og lavt niveau), såsom RS232 eller B-signalet i RS485 differentialsignalet. Når signalet, vi indsamler, vendes, kan DSViews UART-dekoder også indstilles til at opnå det korrekte afkodningsresultat.

Brugeren behøver kun at erstatte "Inverter signal?" i indstillingerne for UART-dekoderen. Indstillingen er sat til "ja". Afkodningen af ​​det omvendte signal er vist i den følgende figur.

4.3. Afkodning af multi-gruppe UART kommunikation

DSViews UART-dekoder er bevidst designet til at være en enkelt-kanals tilgang, som letter vilkårlige kanalindstillinger for multiplekset kommunikation ved afkodning. For eksempel, for en fuld-dupleks UART-kommunikation, som både har et TX-signal og et RX-signal, behøver vi kun at tilføje to UART-dekodere for at svare til afkodningen af ​​TX og RX.

Som vist i figuren nedenfor er det tilfældet, hvor tre UART-signaler afkodes på samme tid.

4.4. Afkodningsfejl forårsaget af startpositionen

For enhver kommunikationsproces skal enheden starte fra starttilstanden for korrekt at modtage kommunikationsindholdet, det vil sige korrekt identificere og analysere protokolrammen. Det samme gælder for logiske analysatorer, hvis erhvervelsen af ​​et signal starter nøjagtigt midt i en dataramme, så vil den forkerte startposition sandsynligvis føre til et forkert afkodningsresultat. Som vist i den følgende figur bliver enheden ved med at sende strengen "DreamSourceLab", men fordi placeringen af ​​den første optagelse er præcis midt i datarammen, bliver afkodningen af ​​den første bølgeform forvansket.

For at undgå forkert afkodning af data kan vi kunstigt indstille startpositionen og slutpositionen for afkodningen for at undgå afkodningsfejl forårsaget af trunkerede datarammer. Afkodningspositionen kan være den specificerede position for en hvilken som helst markør, og operationen behøver kun at indstille de tilsvarende start- og slutpositioner i dekoderens indstillinger efter indsættelse af den tilsvarende markør. Som vist i den følgende figur, undgår indstilling af startpositionen forkert afkodning af den første trunkerede bølgeform.

5. Avanceret analyse

5.1. Flerlagsprotokolparsing

UART er en meget udbredt basisprotokol, og mange af de transmissionsprotokoller, der bruges i praktiske applikationer, er udvidet på basis af UART. For eksempel: DMX512, LIN, MIDI og Modbus osv., er det underliggende kommunikationsgrundlag UART-protokollen. 、

Ifølge denne funktion understøtter DSView også parsing-stabling af flerlagsprotokoller. Når vi tilføjer en dekoder af en kompleks protokol, vil DSView automatisk bygge hele protokolstakken fra øverste niveau, hvilket gør afkodningsresultaterne rigere og mere perfekte, hvilket er meget nyttigt for brugerens dybdegående analyse og forståelse af protokollen.

Lad os tage Modbus RTU som et eksempel for at forstå processen med DSView-analyse af flerlagsprotokoller. Baseret på UART-byteoverførselsfunktionen specificerer Modbus RTU den specifikke betydning af hver byte i detaljer, således at rammestrukturen i Modbus dannes ved at kombinere flere UART-protokolrammer sammen. Dette er vist i den følgende figur.

Når du bruger DSView til sådan protokolafkodning, behøver du kun at indtaste den tilsvarende protokol i protokolsøgefeltet og tilføje den. DSView bygger automatisk indstillingssiden for hele stablingsprotokollen, som vist i den følgende figur, og brugeren kan foretage de tilsvarende indstillinger.

Som vist i den følgende figur kan stackstrukturen af ​​protokollen tydeligt ses fra afkodningsresultatet af Modbus RTU. Modbussen for hver frame består af 8 UART byte frames. Indholdet af en Modbus-ramme vil også have klare kommentarer, der angiver dens specifikke betydning. Når der opstår en transmissionsfejl, kan et sådant afkodningsresultat meget tydeligt lokalisere fejlens placering, såvel som årsagen til fejlen (om det er et problem med den underliggende UART eller et problem med Modbus protokollaget). Hvis du ikke ønsker at se de underliggende detaljer, kan du skjule det tilsvarende afkodede indhold på indstillingssiden for dekoderen.

Vær den første til at kommentere

Giv en kommentar

Din e-mail adresse vil ikke blive offentliggjort.


*