UART-protocolanalyse

1. Grondslag overeenkomst

1.1. Inleiding tot de overeenkomst

UART is "Universal Asynchronous Receiver/Transmitter", een afkorting voor Universal Asynchronous Transceiver. In de jaren 1860 vond Bell het UART-protocol uit, dat parallelle ingangssignalen omzet in seriële uitgangssignalen, om het probleem van computer- en teletypemachinecommunicatie op te lossen. Vanwege het eenvoudige en praktische karakter is UART een zeer veelgebruikt communicatieprotocol geworden. De seriële poorten waaraan we dagelijks worden blootgesteld, RS232, RS485 en andere bussen, het interne gebruik is in feite het UART-protocol.

Om de relatie tussen protocollen en bussen beter te begrijpen en te analyseren, verdelen we een volledige communicatiespecificatie meestal in fysieke lagen, protocollagen en applicatielagen. De fysieke laag definieert alleen de echte signaalkarakteristieken (zoals spanning, stroom, aandrijfcapaciteit, enz.), en de overeenkomst tussen het elektrische signaal en het logische signaal 0 en 1; De protocollaag geeft niet om hoe de onderliggende nullen en enen worden geïmplementeerd, maar specificeert alleen de protocolspecificaties van de logische signalen en het communicatieproces (zoals start, data en einde, enz.); De applicatielaag geeft er niet om hoe de gegevens worden verkregen, maar definieert alleen de betekenis van de gegevensrepresentatie en hoe de specifieke bedrijfslogica moet worden geïmplementeerd.

De eenvoudigste toepassing van het UART-protocol, meestal heeft de fysieke laag slechts twee transmissielijnen nodig, één voor verzending en één voor ontvangst, waardoor full-duplexcommunicatie wordt bereikt. Voor eenrichtingstransmissies kunt u ook slechts één transmissielijn gebruiken. Het meest typische voorbeeld van een dergelijke toepassing zijn de RX/TX-poorten van de microcontroller die met elkaar zijn verbonden, waardoor op TTL-niveau gebaseerde UART-communicatie mogelijk is. Voor verschillende transmissieafstanden en betrouwbaarheidsvereisten kan het vervangen van verschillende fysieke laagimplementaties onze gemeenschappelijke RS232-, RS485- en andere communicatiebussen verkrijgen.

1.2. Verschillende fysieke laagimplementaties

Aangezien de invoer naar de UART-protocollaag een logisch 0/1-signaal is, kan het logische 0/1-signaal worden onderscheiden door verschillende niveaustandaarden in de fysieke laag. Voor verschillende communicatiebehoeften kunnen verschillende fysieke lagen worden gebruikt. Bijvoorbeeld, eenvoudige communicatie aan boord of veelvoorkomende foutopsporingsscenario's voor apparaten, de UART-protocolcommunicatie tussen twee apparaten kan worden uitgevoerd met behulp van een eenvoudig LVTTL/TTL-niveau.

De universele seriële poort gebruikt het RS232-niveau, dat de transmissieafstand kan vergroten en een bepaalde mate van signaalinterferentie kan weerstaan. De kosten zijn dat de corresponderende niveauvertalingschip nodig is op de fysieke laag om te bereiken, de zender moet het interne hoge en lage niveausignaal omzetten in een hoger voltage +/- spanningssignaal, en de ontvangende kant moet het +/ - spanningssignaal in een intern hoog- en laagniveausignaal.

In het geval van industriële communicatie wordt over het algemeen de RS485-niveaustandaard gebruikt om de transmissieafstand verder te verbeteren en de betrouwbaarheid van het signaal te vergroten. De gewone signalen van hoog en laag niveau worden omgezet in een paar differentiële signalen aan het zendende uiteinde, en de differentiële signalen worden omgezet in gewone signalen van hoog en laag niveau aan het ontvangende uiteinde. Bovendien kunnen met de RS485 tot 128 transceivers op de bus worden aangesloten, terwijl TTL of RS232 point-to-point-verbindingen zijn.

1.2.1. TTL-gebaseerde UART-communicatie

UART-communicatie op basis van TTL is de eenvoudigste use case voor UART-protocoltoepassingen. Dat wil zeggen, de hoge en lage niveaus van de digitale I/O-uitgang worden direct verzonden als het daadwerkelijke fysieke signaal. Wat de fysieke verbinding betreft, hoeft alleen het apparaat gemeenschappelijk te zijn en kan eenrichtingscommunicatie met het apparaat worden voltooid via een signaallijn. Als bidirectionele full-duplex vereist is, worden twee signaallijnen gebruikt.

Om de verschillen in de implementatie van verschillende fysieke lagen te vergelijken, kunnen we zien hoe de werkelijke signalen van verschillende fysieke lagen verschillen wanneer dezelfde gegevens worden verzonden. Hier, door het transmissiekarakter 'D' als voorbeeld te nemen, via de steenoscilloscoop, observeert u direct het signaal dat wordt uitgezonden door de TTL (de sonde-aardingsterminal is verbonden met het gemeenschappelijke aarde-uiteinde van het apparaat en het sondesignaaluiteinde is verbonden met de blauwe signaallijn in de bovenstaande afbeelding), en de signaalgolfvorm die wordt weergegeven in Afbeelding 1-4 kan worden verkregen. Zoals te zien is aan de golfvorm, wanneer er geen gegevensoverdracht is, blijft het UART-signaal op een hoog niveau (de specifieke signaalamplitude wordt bepaald door de voedingsspanning van de I/O), het signaal springt tijdens de gegevensoverdracht , en het signaal keert terug naar de inactieve status op hoog niveau nadat de verzending is voltooid.

1.2.2. UART-communicatie op basis van RS232

Om de aandrijfcapaciteit te vergroten om de transmissieafstand en betrouwbaarheid te vergroten, gebruikt de RS232-bus een bipolair spanningssignaal voor fysieke transmissie. Voordat het signaal wordt verzonden/ontvangen, worden het interne signaal en het bussignaal door middel van een niveauverschuivende chip naar elkaar geconverteerd. De verbindingsmethode is precies hetzelfde als het TTL-niveau en de hele fysieke laag is slechts één laag van niveauvertaling.

Ook met het zendteken 'D' als voorbeeld, wordt de sonde van de Pushi-oscilloscoop aangesloten op het signaaluiteinde en kan de werkelijke golfvorm die in figuur 1-6 wordt getoond, worden vastgelegd. Het is te zien dat de RS232-golfvorm een ​​negatieve spanning is wanneer deze inactief is, en wanneer er gegevensoverdracht is, begint het signaal te springen tussen positieve en negatieve spanningen en keert terug naar de inactieve negatieve spanningstoestand nadat de transmissie is voltooid.

1.2.3. UART-communicatie op basis van RS485

De RS485 is ontworpen voor complexe industriële omgevingen en het grootste kenmerk van de RS485-bus is het gebruik van differentiële signaaloverdracht in vergelijking met de fysieke lagen van andere UART-protocollen. Voordat het signaal wordt verzonden, wordt het single-ended signaal door de zendontvanger van RS485 omgezet in een differentieel signaal en vervolgens naar de bus verzonden voor verzending; Ook vóór ontvangst wordt het differentiële signaal op de bus door de zendontvanger omgezet in een enkelvoudig signaal en vervolgens naar de UART-controller gestuurd voor ontvangst. Op de RS485-bus zijn twee paar differentiële signaallijnen (dwz 4 signaallijnen) vereist voor full-duplex bidirectionele communicatie. Als alleen half-duplex tweerichtingscommunicatie wordt uitgevoerd, is alleen een paar differentiële signalen vereist.

Nogmaals, door het zendteken 'D' als voorbeeld te gebruiken, kan de werkelijke golfvorm die in figuur 1-8 wordt getoond, worden verkregen met behulp van twee kanaalsondes (meestal aangeduid) van de sondes van de Pushi-oscilloscoop, die zijn aangesloten op de A/B-uiteinden van een van de differentiële signalen. Het is te zien dat de golfvorm aan het A/B-uiteinde complementair is. De golfvorm van de A-terminal is voorwaartse logica (positieve spanning bij inactiviteit) en de golfvorm op de B-terminal is omgekeerde logica (negatieve spanning bij inactiviteit).

2. Protocolspecificaties

2.1. UART-framestructuur

In de inleiding van het vorige gedeelte hebben we de werkelijke UART-golfvorm door de steenoscilloscoop waargenomen, dus hoe wordt deze golfvorm precies herkend als het teken 'D' en niet als iets anders? Dit omvat de definitie van de framestructuur van het UART-protocol. Zoals weergegeven in Afbeelding 2-1:

Wanneer twee apparaten moeten communiceren via het UART-protocol, moeten ze tegelijkertijd het volgende overeenkomen:

  • Tijdsduur per signaal T (baudrate = 1/T)
  • Het specifieke aantal bits in elk item in de framestructuur
  • Of er een controlecijfer is, en het mechanisme van het controlecijfer (oneven/even/…). ik

Met deze conventies hoeft het ontvangende apparaat alleen te wachten op de aankomst van het startbit en vervolgens de volgende golfvorm met regelmatige tussenpozen te bemonsteren om de specifieke verzonden informatie te verkrijgen. Als we de golfvorm van het teken 'D' als voorbeeld nemen, wordt het resolutieproces weergegeven in figuur 2-2:

2.1.1. baudrate

Baudrate is een zeer belangrijk concept van het UART-protocol, of alle asynchrone seriële protocollen, dat wil zeggen, het aantal bits dat kan worden weergegeven per tijdseenheid (1 seconde), of het kan ook worden uitgedrukt als het omgekeerde van de bitbreedte . Een UART-golfvorm met een baudrate van 115200 betekent bijvoorbeeld dat deze 115200 bits per seconde kan verwerken, wat betekent dat elk gegevensbit ongeveer 8.68 uS tijd in beslag neemt.

Asynchrone seriële protocollen zoals UART, om de fysieke verbinding van signalen te vereenvoudigen en de communicatiekosten te verlagen, hebben over het algemeen slechts één signaallijn en kunnen niet tegelijkertijd gegevens en kloksignalen verzenden. Om ervoor te zorgen dat de zendontvanger/het zendende apparaat de golfvorm correct kan oplossen, moet deze dezelfde baudrate-instelling hebben. Dezelfde golfvorm die verschillende baudrates gebruikt, kan totaal verschillende informatie verkrijgen. Voor het ontvangende apparaat kan alleen het startbit worden gebruikt als het synchronisatiepunt van een gegevensframe, en de andere gegevens worden bepaald door de baudrate om de specifieke bemonsteringslocatie te bepalen.

Nogmaals, als u de golfvorm van het teken 'D' als voorbeeld gebruikt, zoals weergegeven in figuur 2-4, als het met de verkeerde baudrate wordt ontvangen, kunt u volledig verkeerde gegevensinformatie krijgen.

2.1.2. Inactieve bits

Wanneer gegevens niet tussen apparaten worden overgedragen, duidt een aanhoudend hoog niveau op inactiviteit. Hoe langer de inactieve bitduur en hoe langer het interval tussen twee dataframes, hoe minder data er per tijdseenheid wordt verzonden.

2.1.3. Begin Bit

De UART-ontvanger detecteert altijd de niveauverandering op de signaallijn en wanneer de gegevens worden verzonden, trekt de afzender de signaallijn van het hoge niveau naar het einde van het lage niveau naar de inactieve toestand en houdt een beetje tijd vast. Wanneer de ontvanger een hoog-laag niveauverschuiving detecteert, begint deze signalen te ontvangen.

2.1.4. Gegevensbits

De databit bevat de daadwerkelijk verzonden data, die 5 tot 8 bits lang is als pariteit wordt gebruikt, en 5 tot 9 bits als pariteit niet wordt gebruikt. Over het algemeen zijn de databits 8 bits en worden de data eerst verzonden vanaf de minst significante bit, met de hoge bits als tweede.

2.1.5. Controleer cijfers

De controlecijfers kunnen worden gebruikt om de betrouwbaarheid van de verzending te verbeteren. Als het signaal verkeerd is vanwege interferentie in het transmissieproces en een fout veroorzaakt in het niveau van sommige posities, kan worden bepaald of de ontvangen gegevens en het controlecijfer overeenkomen door te berekenen of de ontvangen gegevens en de controlecijfers overeenkomen, dus om geldige informatie te verstrekken aan de applicatielaag om te beslissen om de corresponderende gegevens te accepteren/weg te gooien.

2.1.6. Stop Bit

Het stopbit vertegenwoordigt het einde van een gegevensframe en het werkelijke signaal is een tijdsperiode hoog. De lengte van het stopbit kan worden ingesteld op een stopbit van 1, 1.5 of 2 bits. In de meeste gevallen wordt een stopbit van 1 bit gebruikt.

Omdat UART een asynchroon protocol is, kan het begin van elk frame worden gesynchroniseerd met een sprongrand, maar de stopbit kan de relatieve positie alleen berekenen door de baudrate, en als een laag niveau wordt herkend op de stoppositie, een framefout is gegenereerd. Om het probleem dat wordt veroorzaakt door de fout in de baudrate te verminderen, kunnen tijdens het communicatieproces verschillende stopbitlengtes worden ingesteld om aan te passen.

3. Analyseer UART-communicatie met behulp van een logische analysator

3.1. Oscilloscoop versus logische analysator

Als het belangrijkste algemene test- en meetinstrument hebben oscilloscopen een natuurlijk voordeel bij het observeren van de details van analoge signalen. Zo kan real-time werking, met een hoge golfvormverversingsfrequentie, gemakkelijk plotselinge abnormale signalen waarnemen; Bij het uitvoeren van ruisevaluatie en optimalisatie van de signaalkwaliteit kan de oscilloscoop bijvoorbeeld de overeenkomsten en verschillen van signalen op dezelfde bus en verschillende knooppunten vergelijken om verborgen problemen met de signaalintegriteit te vinden.

De oscilloscoop heeft natuurlijk ook wat onhandige plaatsen, naast de weinige kanalen is het scherm over het algemeen klein, de bediening is niet computer + muis manier flexibel en beheersbaar deze morfologische problemen, voor de acquisitie en analyse van digitale signalen, de grootste probleem van de oscilloscoop is dat de opslagdiepte te klein is. Een oscilloscoop van enkele honderdduizenden yuan kan ook een opslagdiepte hebben van slechts een paar honderd Mpts. Tegelijkertijd zal, vanwege de beperking van de opslagdiepte, de werkelijke bemonsteringsfrequentie van de oscilloscoop scherp dalen wanneer het nodig is om een ​​iets langere tijdsopname uit te voeren, waardoor de verzamelde golfvorm het echte signaal niet kan herstellen, waardoor de betekenis van analyse.

Logische analysatoren zijn test- en meetinstrumenten die speciaal zijn ontworpen voor digitale signaalacquisitie en -analyse, en de verzamelde golfvormresultaten zijn alleen hoge en lage niveaus (dat wil zeggen, logische 0 en 1). Het compenseert echter het gebrek aan oscilloscopen bij het verwerven en analyseren van digitale signalen.

  1. 1. De meeste logische analysers worden op een pc gebruikt, met de krachtige prestaties van desktopprocessors en de interactieve ervaring van volwassen besturingssystemen, wat het gemak en de efficiëntie van digitale signaalanalyse aanzienlijk verbetert.
  2. 2. Het aantal logische analysatorkanalen is groot, de DSLogic logische analysator op instapniveau heeft 16 kanalen die tegelijkertijd kunnen worden verzameld, en de gebruiker kan ook logische analysatorproducten verkrijgen met tientallen of zelfs honderden kanalen tegen een zeer redelijke prijs kosten.
  3. 3. De opslagdiepte van de logische analysator is groter, DSLogic kan bijvoorbeeld een opslagdiepte van 16G bereiken in stream-modus en tegelijkertijd een vrij hoge samplefrequentie behouden, die het acquisitievermogen van de meeste oscilloscopen ver overtreft.
  4. 4. Logische analysatoren bieden over het algemeen uitgebreide protocoldecoderingsfuncties, die een diepgaande analyse van digitale signalen kunnen uitvoeren. Zo ondersteunt DSLogic momenteel meer dan 100 decoderingsprotocollen. De meeste oscilloscopen hebben beperkte decoderingsmogelijkheden en voor de meeste moeten de bijbehorende plug-ins apart worden aangeschaft.

Vervolgens zullen we ons concentreren op het gebruik van logische analysatoren voor de acquisitie en analyse van UART-signalen in verschillende situaties.

3.2. Opzetten van een testomgeving voor logische analysers

3.2.1. Verbinding met DSLogic

DSLogic is een draagbare logica-analysator op basis van USB-connectiviteit. De DSLogic-host is verantwoordelijk voor signaalacquisitie en caching en verzendt vervolgens de gegevens via USB naar de hostcomputersoftware DSView op de pc. DSView is verantwoordelijk voor de verwerking, weergave, analyse en de bijbehorende interactiefuncties tussen mens en computer.

Bij gebruik sluit u de DSLogic-host gewoon rechtstreeks aan op de USB-poort op de pc-kaart via een USB-gegevenskabel, opent u de DSView-software en bevestigt u dat de INDICATOR op de DSLogic-host groenblijvend wordt. Op dit punt is de verbinding en initialisatie van de logische analysator voltooid. Zoals weergegeven in Afbeelding 3-4, kunnen de huidige apparaatnaam in de linkerbovenhoek en de bijbehorende verbindingsstatus worden bekeken in de DSView-software.

3.2.2. UART-signaalverbinding:

Voor alle metingen moeten de testapparatuur en het te meten signaal gebaseerd zijn op een gemeenschappelijk referentievlak, dat gewoonlijk aarding wordt genoemd, zodat het gemeten signaal correct kan worden verkregen en gemeten. In sommige gevallen is er geen expliciete aarding, maar de meetresultaten lijken geen probleem te zijn, dit komt omdat de meetapparatuur en het gemeten signaal op andere manieren met de grond zijn verbonden, zoals dezelfde gebruikte voeding, of de referentie aarde is tegelijkertijd verbonden met de aardklem van het lichtnet. Bij rigoureuze metingen moet de meetapparatuur echter worden geaard volgens het te testen signaal. Hoe groter het lusoppervlak van de signaalaardingsklem van het gemeten signaal naar het meetapparaat, hoe gemakkelijker het is voor het signaal om te worden gestoord, wat resulteert in meetfouten of zelfs meetfouten.

Voor UART-signalen hoeft u bij toegang tot de logische analysator in het eenvoudigste geval slechts 2 draden aan te sluiten, één met de referentieaarde en één met het gemeten signaal. Voor de verschillende fysieke laagimplementaties van het UART-protocol dat we eerder noemden, zal de manier waarop de signalen zijn verbonden iets anders zijn.

Voor het UART-signaal op TTL-niveau hoeft u bijvoorbeeld, naast het aansluiten van de referentieaarde, alleen het te testen signaal (TX of RX) aan te sluiten op de overeenkomstige kanaalingang van de logische analysator.

Voor RS232-bussignalen kunnen we ofwel het bussignaal meten na niveautranslatie (DSLogic heeft een weerstandsspanningsbereik van +-30V bij de kabelingang, en het +-15V-signaalbereik van RS232 kan direct worden aangesloten), of we kunnen meten het interne digitale signaal vóór niveautranslatie. De bedradingsmethode is consistent met het TTL-signaal, het enige om op te merken is dat het RS232-signaal het niveau omdraait (negatieve spanning bij inactiviteit, dat wil zeggen laag niveau), bij het decoderen van het UART-protocol kunnen we het overeenkomstige signaalniveau omkeren in het decoderingsinstellingenvenster van DSView (Invert Signal-optie is ingesteld op ja).

De RS485-bus gebruikt differentiële signalen en wanneer we een logische analysator gebruiken voor signaalacquisitie, moeten we speciale aandacht besteden aan de aansluiting van het gemeten signaal. Allereerst moet de referentieplaats van de logische analysator worden verbonden met de referentieaarde van het corresponderende apparaat dat wordt getest RS485-transceiver, zodat de logische analysator gegarandeerd het juiste niveaureferentievlak heeft; Ten tweede hoeft de logische analysator voor differentiële signalen alleen hoge en lage niveaus van homopolariteit met het interne signaal te verwerven. Vanuit het perspectief van digitale signalen verbetert de differentiële manier alleen de betrouwbaarheid van de signaaloverdracht, zonder aanvullende informatie toe te voegen. Zoals weergegeven in afbeelding 3-7, sluit u bij het testen van het 485-bussignaal met een logische analysator de referentieaarde van de transceiver van het corresponderende apparaat en het A+-signaal op de differentiële bus aan.

Als alleen het B-signaal kan worden verzameld, kunnen we natuurlijk ook de UART-decoder instellen om het signaal om te keren om het juiste resultaat van de protocolresolutie te verkrijgen bij het decoderen in DSView.

3.2.3. Drempelinstellingen

De drempel van de logische analysator is de beoordelingsspanning van hoge en lage niveaus, dat wil zeggen, wanneer de ingangssignaalspanning hoger is dan de drempelspanning, is de acquisitie van hoog niveau; Wanneer de ingangssignaalspanning onder de drempelspanning ligt, is de acquisitie laag.

Voor het UART-protocol hebben we eerder geïntroduceerd dat het verschillende fysieke laagimplementaties heeft en dat verschillende fysieke laagimplementaties verschillende niveaustandaarden hebben. We hoeven alleen een overeenkomstige drempel te kiezen om onderscheid te maken tussen hoge en lage niveaus in verschillende gevallen. De drempels weergegeven in figuur 3-8 kunnen in principe aan deze eis voldoen.

In sommige gevallen kan de differentiële signaalamplitude van de RS485-bus over een groot bereik variëren als gevolg van configuratie of foutopsporing. Omdat de RS485-specificatie bepaalt dat zolang de differentiële spanning tussen AB groter is dan 200mV, deze als hoog kan worden beschouwd. Op dit punt kunnen we de steenoscilloscoop gebruiken om de werkelijke amplitude van het signaalniveau te observeren en vervolgens te beslissen over de juiste drempelinstelling. U hoeft er alleen voor te zorgen dat de drempelspanning die u instelt redelijkerwijs onderscheid kan maken tussen hoge en lage niveaus.

3.3. Eenvoudige UART-signaalacquisitie

De meeste UART-signalen zijn signalen met een lage snelheid, zoals de meest gebruikte baudrate van 115200, wat aangeeft dat de signaalfrequentie slechts 115.2 KHz is. Dergelijke signalen kunnen direct worden verkregen met behulp van de standaardinstellingen van DSLogic. Hier wordt, door het vaste 1s-interval van de host te nemen en herhaaldelijk het teken 'D' als voorbeeld te sturen, beschreven hoe een logische analysator moet worden gebruikt om dergelijke UART-signalen te verwerven en te analyseren.

3.3.1. Signaal acquisitie

Nadat de hardware- en signaalverbinding zijn voorbereid, klikt u rechtstreeks op de knop "Start" van de DSView-software om het te testen signaal te verkrijgen met de standaardinstelling (1 MHz samplefrequentie-acquisitietijd 1s). Als u de samplefrequentie en acquisitieduur wilt wijzigen, selecteert u de bijbehorende parameters direct in de bijbehorende vervolgkeuzelijst. Het instellingsprincipe van de bemonsteringsfrequentie wordt aanbevolen om 10 keer of meer van de maximale frequentie van het gemeten signaal te zijn, bijvoorbeeld voor UART-signalen met een baudrate van 115200 baud, de snelste signaalfrequentie is 115.2 KHz, wanneer de bemonsteringsfrequentie van 1 M is geselecteerd, heeft elk bitsignaal 8 of 9 bemonsteringspunten en is de bijbehorende fasefout +-1/8 (12.5%); Als een samplefrequentie van 10M is geselecteerd, zijn er 86 of 87 samplepunten per bit signaal, wat overeenkomt met een fasefout van +-1/86 (1.16%). Natuurlijk wordt het over het algemeen niet aanbevolen om een ​​te hoge samplefrequentie te gebruiken, want hoe hoger de samplefrequentie, hoe korter de tijd waarvoor deze kan worden verzameld, en de samplefrequentie die te hoog is, kan meerdere sprongen op de enkele sprong opleveren. rand van het langzame signaal, waardoor problemen ontstaan ​​bij de protocoldecodering. Afbeelding 3-9 toont de resulterende signaalgolfvorm die is verkregen met de standaardinstellingen.

Zoals te zien is in figuur 3-9, ontvangt kanaal 0 een signaal dat aanhoudend hoog is, maar vindt geen sprongen. Let goed op de tijdliniaal boven het golfvormvenster en de schuifbalk onderaan het venster om te weten dat het huidige venster slechts een deel van de verzamelde golfvorm weergeeft, niet alle signalen. Op dit punt kunt u zoomen met het muiswiel of met de rechtermuisknop klikken in het golfvormgebied om alle golfvormen voor de gehele acquisitieduur weer te geven. Verkrijg het resultaat dat wordt getoond in figuur 3-10.

Op basis van bovenstaande figuur willen we alleen kijken naar het overgangsgedeelte van kanaal 0. U kunt de golfvormweergave van andere kanalen uitschakelen in het venster Opties en de weergavehoogte van het kanaalsignaal aanpassen. Richt vervolgens de muis op de doelgolfvorm en tegelijkertijd door het muiswiel om de golfvorm van de puntige positie te vergroten; Als alternatief kunt u het gebied van de golfvorm selecteren waarop u wilt inzoomen door de rechtermuisknop in het vak ingedrukt te houden. Houd ook de linkermuisknop ingedrukt om de golfvorm naar links en rechts te verplaatsen. Verkrijg de golfvormdetails die worden getoond in Afbeelding 3-11.

Bij het observeren van de golfvorm kan het plaatsen van de muis over de pulsgolfvorm informatie weergeven zoals de pulsbreedte, periode, frequentie en werkcyclus van het huidige signaal. Tegelijkertijd kunt u ook een cursor toevoegen door op de linkermuisknop te dubbelklikken, en wanneer u de cursor verplaatst, wordt deze automatisch naar de nabijgelegen springrand uitgelijnd.

3.3.2. UART-decodering:

De signaalgolfvorm die door de logische analysator wordt verzameld, verandert alleen in de tijd bij hoge en lage niveaus (0/1), wat niet bevorderlijk is voor onze gerichte analyse van het proces en de inhoud van signaaloverdracht. Hoewel we het blote oog kunnen gebruiken om de protocolinhoud te vertalen die overeenkomt met de golfvorm volgens de protocolspecificatie, zal dit de efficiëntie van de analyse aanzienlijk verminderen. De ingebouwde decoder van DSView biedt uitgebreide protocoldecoderingsinhoud, waardoor saaie golfvormen worden omgezet in betekenisvolle tekens, markeringen en gegevensinhoud. Het vereenvoudigt de analyse en het begrip van signalen door technici aanzienlijk om foutmeldingen of kritieke gegevens te vinden.

In de DSView-software is de protocoldecodering van de verkregen golfvorm heel eenvoudig, open gewoon het "Decode" -paneel, zoek naar de bijbehorende decoder (hier selecteren we 1: UART-protocol) en stel de bijbehorende decoderopties in (inclusief weergave / kanaal /framestructuur/formaat, enz.). Eenmaal bepaald, begint de software het protocol van de UART op het geselecteerde kanaal te decoderen. Het gedecodeerde resultaat wordt weergegeven in het protocolkanaal. Dit wordt getoond in figuur 3-12.

Bij het selecteren van een decoder biedt DSView een handige protocolzoekfunctie, voer gewoon de sleuteltekens in het protocolzoekvak in, DSView geeft een lijst van alle decoders die deze tekens bevatten, waar de gebruiker de juiste decoder kan selecteren. Zoals te zien is in figuur 3, zijn er twee protocollen gerelateerd aan UART 13: UART en 0: UART, waarbij 1: UART een vereenvoudigde decoder is die geen bitsinformatie ontleden, noch het stapelen van protocollen van een hoger niveau ondersteunt. wanneer we alleen de gegevens willen krijgen die overeenkomen met de golfvorm, kunt u dit vereenvoudigde protocol gebruiken om de decoderingstijd en geheugenbronnen te verminderen.

Het instellingenvenster van de decoder heeft veel instellingsopties met betrekking tot decodering, en de inhoud van het instellingenvenster van verschillende protocollen zal anders zijn. Er zijn enkele opties die alle decoders moeten instellen, zoals de overeenkomst tussen kanaal- en protocolsignalen. Hier gebruiken we het UART-signaal dat is gegrepen door kanaal 0, dus het corresponderende kanaal dat moet worden gedecodeerd, moet worden ingesteld op kanaal 0.

En protocol-gerelateerde instellingsopties die we in detail hebben uitgelegd in de framestructuursectie, kunnen in de daadwerkelijke werking ook worden verkregen via de seriële poorthostcomputersoftware (seriële poortfoutopsporingsassistent, enz.) om deze informatie te verkrijgen. Dit wordt getoond in figuur 3-14.

Voor gedecodeerde gegevensinhoud ondersteunt DSView verschillende weergaveformaten. Het eerder verkregen UART-signaal geeft bijvoorbeeld het teken 'D' weer in de vorm van ASCII-codes, of het kan worden gewijzigd in de weergavemodus van hexadecimaal (Hex), en het resultaat zal 0x44 weergeven. Dit wordt getoond in figuur 3-15. Momenteel ondersteunde weergave-indelingen zijn: hex (hexadecimaal), dec (decimaal), oct (octaal), bin (binair) en ascii-code.

3.4. Verwerving van een enkele UART-transmissie

Wanneer de golfvorm die we willen vastleggen een incidenteel signaal is, weten we niet wanneer de golfvorm zal verschijnen, en als we de directe acquisitiemethode gebruiken, kunnen we meestal alleen de inactieve signaalgolfvorm vastleggen, en dat kunnen we niet het signaal opvangen op het moment van daadwerkelijke verzending.

Op dit moment kan het worden vastgelegd door te triggeren. Door de overeenkomstige triggervoorwaarden in te stellen, kunnen we de starttijd van signaalacquisitie regelen op basis van de verandering van de golfvorm, om de signaalgolfvorm die we willen zien nauwkeurig vast te leggen.

3.4.1. Buffermodus

DSLogic ondersteunt twee acquisitiemodi: Stream-modus en Buffer-modus. De gegevens die in de Stream-modus worden verzameld, worden in realtime naar de pc verzonden en vervolgens door DSView verwerkt. De gegevens die in de buffermodus worden verzameld, worden eerst in de cache van de interne hardwarecache van DSLogic opgeslagen en vervolgens, nadat de acquisitie is voltooid, naar de pc overgebracht en door DSView verwerkt.

Naast de voordelen van het bereiken van hogere samplefrequenties, ondersteunt de Buffer-modus ook meer triggering-opties en -instellingen, zoals triggering op meerdere niveaus, seriële triggering en het instellen van triggerposities. Stream-modus daarentegen ondersteunt alleen eenvoudige triggering.

3.4.2. Triggerinstellingen

Voor eenvoudige triggering kunnen we de triggeroptie direct naast het kanaal instellen. Het komt achtereenvolgens overeen met stijgende flank, hoge, dalende flank, laag niveau en elke randtrigger. Houd gewoon de standaard eenvoudige triggermodus in het triggerpaneel. Voor een UART-transmissie die niet weet wanneer deze plaatsvindt, kunnen we er bijvoorbeeld voor kiezen om de dalende flank te activeren. Wanneer het UART-signaal inactief blijft, is de trigger niet voldaan. DSLogic wacht op de activeringsvoorwaarde, zoals weergegeven in Afbeelding 3-17.

Wanneer de UART het eerste startbit begint te verzenden, wordt de triggerconditie geactiveerd en verkrijgt DSLogic de signaalgolfvorm op het moment van de trigger. Dit wordt getoond in figuur 3-18.

Laten we een complexer triggerscenario bekijken, zoals apparaat A dat constant willekeurig gegevens naar apparaat B verzendt, en apparaat B dat verschillende gegevens beantwoordt op basis van de gegevensinhoud die door apparaat A is verzonden. Als we willen weten welke gegevens apparaat A naar apparaat heeft verzonden B voordat we gegevens 0 verzenden, hoe stellen we de triggervoorwaarde in om de golfvorm op het overeenkomstige moment te vangen?

Er zijn hier twee problemen die moeten worden opgelost. Eerst moeten we de locatie van de trigger instellen zodat we de gegevens vóór de trigger kunnen zien, niet de gegevens na de trigger; Ten tweede moeten we de golfvormkenmerken vinden van apparaat B dat gegevens 0 verzendt en deze omzetten in de overeenkomstige triggerconditie.

UART-protocolanalyse

Afbeelding 3-19 Triggerpositie

Volgens de protocolregels van UART zal de golfvorm die data 0 verzendt een relatief breed continu laag niveau pulssignaal zijn. Als de baudrate van de UART 115200 is en de bemonsteringssnelheid die we hebben ingesteld op 1 MHz, wordt de golfvorm van data 0 weergegeven in figuur 3, wat een lage puls van ongeveer 20uS zal zijn.

Om de geavanceerde trigger of triggerpositie in te stellen, is ondersteuning voor de buffermodus vereist, u moet eerst de "Run-modus" instellen op "Buffermodus" in de "Opties", en niet de optie "RLE-hardwarecompressie" selecteren. Stel de geavanceerde triggerconditie in op kanaal 1 met een continu laag van 75 samplepunten (overeenkomend met een samplefrequentie van 1 MHz, wat een laag niveau van 75us is), en stel de triggerpositie in op 80% om de observatie van gegevens te vergemakkelijken voordat ze worden geactiveerd. De specifieke instellingen worden getoond in Afbeelding 3-21.

Volgens deze triggerconditie wordt deze geactiveerd wanneer apparaat B data 0 verzendt, en de verkregen golfvorm wordt weergegeven in Afbeelding 3-22.

3.4.3. Herhaal de verzameling

In sommige gevallen moeten we de status van sommige signalen dynamisch observeren, zoals de gegevensinhoud die elke keer door Burst wordt verzonden, maar we weten niet wanneer de gegevens worden verzonden en het is onmogelijk om vaak op de knop "Start" te klikken . DSView biedt een "herhaalde" acquisitiemodus die automatisch golfvormen verwerft en bijwerkt wanneer aan triggering wordt voldaan. Wanneer we enkele periodieke burst-signalen debuggen, is het erg handig om de resultaten van dynamische acquisitie en protocolparsering via de herhaalmodus te observeren.

De herhaalmodus kan worden ingesteld zoals weergegeven in Afbeelding 3-23. Het herhalingsinterval is de minimale verblijfstijd tussen twee monsters om de waarneming van de golfvorm en de decoderingsresultaten van de vorige acquisitie te vergemakkelijken.

3.5. Acquisitie van UART-transmissies op lange termijn

Wanneer het nodig is om ultralange golfvormen voor analyse te verwerven, kunnen we de Stream-modus gebruiken. DSLogic kan een bemonsteringsdiepte van 16G per kanaal bereiken in de Stream-modus. Bij een bemonsteringsfrequentie van 1 MHz kan de acquisitietijd 16G/1M ≈ 16000s bereiken, wat meer dan 4 uur is.

3.5.1.Stream-modus

De instelling van de Stream-modus wordt weergegeven in Afbeelding 3-24, en verschillende DSLogic-hardwareversies ondersteunen verschillende kanaalopties voor de stream-modus. Voor U3Pro16, gebaseerd op de USB3.0-poort, kan het 3 kanalen @ tot 1GHz sample rate, 6 kanalen @ tot 500MHz sample rate, 12 kanalen @ tot 250MHz sample rate en 16 kanalen @ tot 125MHz sample rate bereiken.

Wanneer de hoeveelheid verzamelde gegevens relatief groot is, kan het 0: UART-protocol worden gebruikt voor decodering, vergeleken met 1: UART, dat de uitvoer van bitsinformatie weglaat, geen protocolstapeling op hoog niveau ondersteunt en de decoderingstijd kan verkorten en de geheugenbezetting te verminderen. De andere functies zijn hetzelfde als 1: UART. Het decoderingseffect wordt getoond in figuur 3-25.

3.5.2. De lijst met protocollen wordt weergegeven

Zoals te zien is in de volgende afbeelding, is het grafische decoderingsresultaat volledig gesynchroniseerd met de verkregen golfvorm in de tijd, wat ons helpt de golfvorm te begrijpen en het probleem te vinden, maar tegelijkertijd is het vanwege de weergaveschaal van de tijd niet bevorderlijk is voor het bekijken van het decoderingsresultaat. Lijstweergaven compenseren deze tekortkoming, waardoor het gemakkelijk is om grote hoeveelheden gedecodeerde inhoud te bekijken en te analyseren.

DSView biedt een manier om tussen grafische en lijstresultaten te springen. Klik op een rij in de lijstresultaten om automatisch naar het corresponderende golfvormresultaat te springen, en u kunt ook kiezen of u automatisch wilt inzoomen op de golfvorm tijdens het springen, of de huidige zoomverhoudingskolom van de golfvorm wilt corrigeren. Bovendien, wanneer we de golfvorm op een bepaald moment bekijken en we willen naar de positie springen waar het decoderingsresultaat dat overeenkomt met deze golfvorm in de lijst wordt weergegeven, hoeft u alleen maar op de positioneringsknop in de rechterbovenhoek van de lijstweergavevenster.

Bovendien kan de gedecodeerde inhoud via de lijstweergave naar een bestand worden geëxporteerd. Zoals weergegeven in de bovenstaande afbeelding, kunt u door op de knop "Opslaan" te klikken die in de lijst wordt weergegeven, ervoor kiezen om de momenteel gedecodeerde inhoud naar een csv- of txt-bestand te exporteren, wat handig is voor meer gegevensverwerking van derden, zoals invoer naar matlab voor analyse of als gegevensinvoer voor andere software.

3.5.3. Gegevens zoeken decoderen

Een ander voordeel van de lijstweergave is dat de gedecodeerde resultaten kunnen worden gebruikt als strings voor het zoeken naar resultaten, zoals het zoeken naar specifieke bewerkingen, of specifieke bytes aan gegevens, waarmee snel de locatie kan worden gevonden die moet worden bekeken.

Voer het trefwoord in waarnaar u wilt zoeken in het zoekvak en druk vervolgens op de knoppen vooruit/achteruit om de gedecodeerde inhoud te vinden die het trefwoord bevat, en de golfvorminterface springt naar de juiste locatie voor analyse. Als u de resultaten van een segment ontleedt, kunt u op een rij in de checklist klikken en de knoppen Vooruit/Achteruit zoeken naar de vorige en volgende overeenkomsten, beginnend met dit gedrag in plaats van helemaal opnieuw te beginnen.

Voor het UART-protocol ondersteunt DSView ook het zoeken naar gegevens met meerdere rijen. Kan worden gebruikt om enkele aaneengesloten tekenreeksresultaten te vinden die in uw gegevens worden weergegeven. Zoals te zien is in Afbeelding 3-29, voegt een zoekactie met meerdere regels meerdere trefwoorden samen met het teken '-'.

3.5.4. Golfvorm zoeken

DSView ondersteunt niet alleen het zoeken naar gedecodeerde resultaten, maar ook de zoekfunctie van de originele golfvorm. Golfvormen kunnen in veel scènes snel worden gelokaliseerd. Wanneer de golfvorm bijvoorbeeld plotseling wordt verzonden, omdat de inactieve periode relatief lang is, is het onmogelijk om de gedetailleerde golfvorm meerdere keren tegelijkertijd te zien verzonden, kunt u de golfvorm zoeken gebruiken en onmiddellijk naar de volgende golfvormsprong springen na het bekijken van de golfvorm op het vorige moment om ervoor te zorgen dat de zoomverhouding ongewijzigd blijft.

Controleer de werkbalk "Zoeken", het zoekvak verschijnt onder het softwarevenster, klik op het zoekvak, open het venster met zoekinstellingen, bepaal de kanaalsprongrand, u kunt links en rechts zoeken naar de golfvorm die aan de criteria voldoet sleutels. Tegelijkertijd kunt u de zoekcursor ook handmatig verplaatsen om te bepalen waar het zoeken begint.

Wanneer zoeken is geselecteerd, verschijnt een cursor met een "S"-tag, de beginstatus is grijs. Als u op links/rechts klikt om te zoeken en een golfvorm te vinden die aan de criteria voldoet, wordt de cursor blauw en gaat automatisch naar de zoeklocatie . Als u de "S"-cursor handmatig verplaatst, wordt de cursor weer grijs.

3.5.5. Cursorgebruik

DSView ondersteunt een breed scala aan cursorbewerkingen, waardoor niet alleen timingmetingen met de cursor mogelijk zijn, maar ook speciale golfvormen markeren en volgen met de cursor. Wanneer de golfvorm inactief is of het interval lang is, kunt u een cursor invoegen op elke interessante positie, en wanneer u naar een interessante golfvorm wilt springen, hoeft u alleen maar met de rechtermuisknop in het liniaalgebied te klikken en vervolgens op de cursorvolgnummer waarnaar u wilt springen, dat naar de corresponderende cursorpositie kan springen.

Als u de cursor wilt verplaatsen, hoeft u alleen de muis in de buurt van de cursor te bewegen, wanneer de cursor vet wordt weergegeven, klikt u op de linkermuisknop om te selecteren, de cursor zal de muisbeweging volgen, de positie bepalen en nogmaals op de linkerknop klikken om de cursor los te laten. Als u wilt dat de cursor naar een van de springranden van een bepaalde kanaalgolfvorm snapt, hoeft u de muis alleen maar in de buurt van de springrand te bewegen en de cursor zal automatisch naar de rand van de sprong springen.

3.5.6. Muis metingen

Naast cursorgebaseerde metingen biedt DSView meer handige muismetingen. Bijvoorbeeld metingen van de huidige pulsbreedte, periode, duty cycle en frequentie (u hoeft alleen de muis over de veranderende puls te plaatsen); Meting van het aantal randen (door op de start- en eindposities op de golfvorm te klikken, worden automatisch de sprongranden van dit interval geteld); en meting van de randafstand (muisklik op de beginrand en ga naar de eindrand).

Zoals weergegeven in Afbeelding 3-31, beweeg de muis naar de positie van de beginovergangsrand, klik met de linkermuisknop, selecteer de beginovergangsrand, beweeg de muis naar de positie van de eindovergangsrand en de afstand tussen de twee overgangsranden (duur/bemonsteringsintervalpunt) worden weergegeven en er wordt nogmaals op de linkermuisknop geklikt om de meting te voltooien.

4. Veelgestelde vragen

4.1. Bepaal de onbekende baudrate

Wanneer we de baudrate van de UART-golfvorm niet van tevoren kunnen verkrijgen, kunnen we de werkelijke baudrate ook raden aan de hand van de verkregen golfvorm. DSView biedt een "Guess bitrate"-decoder om de baudrate-parameters van een willekeurige golfvormreeks te raden. Het principe van Guess-bitrate is om op zijn beurt de smalste pulsbreedte in de golfvorm te vinden, als de golfvormbreedte van een bit, en vervolgens de reciproke als de baudrate te berekenen. Er kunnen dus meerdere resultaten zijn, we hoeven alleen te observeren of de bijbehorende puls een redelijke pulsbreedte heeft en vervolgens het maximale baudrate-resultaat te selecteren. Dit wordt getoond in figuur 4-1.

Zodra de baudrate is verkregen, kan deze worden ingesteld op de opties voor de UART-decoder. Omdat het UART-protocol elk startbit opnieuw synchroniseert, zal de fout van de baudrate slechts in één gegevensframe accumuleren, en zolang de fout binnen één frame de grens van het bitbit niet overschrijdt, kan het juiste decoderingsresultaat worden verkregen .

Als er een kleine steekproef van de golfvorm is, zoals geen puls van een enkele bitbreedte in de golfvorm, is de geraden baudsnelheid natuurlijk waarschijnlijk onjuist, wat resulteert in een onjuist decoderingsresultaat. Als er een golfvorm is die niet voldoet aan het protocol, geeft de UART-decoder ook mogelijke fouthints, zoals framefouten, zoals weergegeven in Afbeelding 4-2. Ervaren technici kunnen de baudrate aanpassen door de golfvorm en decoderingsresultaten te observeren om de juiste decoderingsresultaten te verkrijgen.

4.2. Decodering van anti-vertrouwenstekens

In de vorige sectie hebben we vermeld dat het UART-protocol kan worden verzonden door verschillende fysieke signalen, en sommige fysieke laagsignalen kunnen een omgekeerde relatie hebben met het protocolsignaal (hoog en laag niveau uitwisselbaar), zoals RS232 of het B-signaal in het RS485 differentieel signaal. Wanneer het signaal dat we verzamelen wordt omgekeerd, kan de UART-decoder van DSView ook worden ingesteld om het juiste decoderingsresultaat te verkrijgen.

De gebruiker hoeft alleen het "Signaal omkeren?" in de instellingen van de UART-decoder. De optie staat op "ja". De decodering van het omgekeerde signaal wordt getoond in de volgende afbeelding.

4.3. Decodering van UART-communicatie met meerdere groepen

De UART-decoder van DSView is opzettelijk ontworpen als een eenkanaalsbenadering, die willekeurige kanaalinstellingen voor multiplexcommunicatie bij het decoderen mogelijk maakt. Voor een full-duplex UART-communicatie, die zowel een TX-signaal als een RX-signaal heeft, hoeven we bijvoorbeeld slechts twee UART-decoders toe te voegen om overeen te komen met de decodering van TX en RX.

Zoals te zien is in de onderstaande afbeelding, is het het geval waar drie UART-signalen tegelijkertijd worden gedecodeerd.

4.4. Decoderingsfout veroorzaakt door de startpositie

Voor elk communicatieproces moet het apparaat starten vanuit de beginstatus om de communicatie-inhoud correct te ontvangen, dat wil zeggen, het protocolframe correct identificeren en analyseren. Hetzelfde geldt voor logische analysatoren, als de verwerving van een signaal precies in het midden van een gegevensframe begint, leidt de verkeerde startpositie waarschijnlijk tot een verkeerd decoderingsresultaat. Zoals te zien is in de volgende afbeelding, blijft het apparaat de string "DreamSourceLab" verzenden, maar omdat de locatie van de eerste opname zich precies in het midden van het dataframe bevindt, wordt de decodering van de eerste golfvorm vervormd.

Om onjuiste decodering van gegevens te voorkomen, kunnen we de startpositie en eindpositie van decodering kunstmatig instellen, om decoderingsfouten veroorzaakt door afgekapte dataframes te voorkomen. De decoderingspositie kan de gespecificeerde positie van elke cursor zijn, en de bewerking hoeft alleen de corresponderende begin- en eindposities in de instellingen van de decoder in te stellen na het invoegen van de corresponderende cursor. Zoals weergegeven in de volgende afbeelding, voorkomt het instellen van de startpositie een onjuiste decodering van de eerste afgeknotte golfvorm.

5. Geavanceerde analyse

5.1. Parsing van meerdere lagen protocol

UART is een zeer veelgebruikt basisprotocol en veel van de transmissieprotocollen die in praktische toepassingen worden gebruikt, zijn uitgebreid op basis van UART. Bijvoorbeeld: DMX512, LIN, MIDI en Modbus, enz., de onderliggende communicatiebasis is het UART-protocol. ik

Volgens deze functie ondersteunt DSView ook het parseren van stapelen van meerlaagse protocollen. Wanneer we een decoder van een complex protocol toevoegen, bouwt DSView automatisch de hele protocolstack vanaf het hoogste niveau, wat de decoderingsresultaten rijker en perfecter maakt, wat zeer nuttig is voor de diepgaande analyse en het begrip van het protocol door de gebruiker.

Laten we Modbus RTU als voorbeeld nemen om het proces van DSView-analyse van meerlaagse protocollen te begrijpen. Op basis van de UART-byte-overdrachtsfunctie specificeert Modbus RTU de specifieke betekenis van elke byte in detail, zodat de framestructuur van Modbus wordt gevormd door meerdere UART-protocolframes samen te combineren. Dit is weergegeven in de volgende afbeelding.

Wanneer u DSView gebruikt voor dergelijke protocoldecodering, hoeft u alleen het corresponderende protocol in het protocolzoekvak in te voeren en toe te voegen. DSView bouwt automatisch de instellingenpagina voor het hele stapelprotocol, zoals weergegeven in de volgende afbeelding, en de gebruiker kan de bijbehorende instellingen maken.

Zoals te zien is in de volgende afbeelding, is de stapelstructuur van het protocol duidelijk te zien aan het decoderingsresultaat van de Modbus RTU. De Modbus voor elk frame bestaat uit 8 UART-byteframes. De inhoud van een Modbus-frame zal ook duidelijke opmerkingen hebben die de specifieke betekenis ervan aangeven. Wanneer een transmissiefout optreedt, kan een dergelijk decoderingsresultaat de locatie van de fout heel duidelijk lokaliseren, evenals de oorzaak van de fout (of het nu een probleem is met de onderliggende UART of een probleem met de Modbus-protocollaag). Als u de onderliggende details niet wilt zien, kunt u de bijbehorende gedecodeerde inhoud verbergen op de instellingenpagina van de decoder.

Wees de eerste om te reageren

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd.


*