Analiza protocolului UART

1. Baza acordului

1.1. Introducere în acord

UART este „Universal Asynchronous Receiver/Transmitter”, prescurtare pentru Universal Asynchronous Transceiver. În anii 1860, pentru a rezolva problema comunicării cu computerul și telemașină, Bell a inventat protocolul UART, care convertește semnalele de intrare paralele în semnale de ieșire seriale. Datorită naturii sale simple și practice, UART a devenit un protocol de comunicare foarte utilizat. Porturile seriale la care suntem expuși zilnic, RS232, RS485 și alte magistrale, utilizarea internă este practic protocolul UART.

Pentru a înțelege și analiza mai bine relația dintre protocoale și magistrale, de obicei împărțim o specificație completă de comunicare în straturi fizice, straturi de protocol și straturi de aplicație. Stratul fizic definește doar caracteristicile semnalului adevărat (cum ar fi tensiunea, curentul, capacitatea de antrenare etc.) și corespondența dintre semnalul electric și semnalul logic 0 și 1; Stratul de protocol nu-i pasă de modul în care sunt implementate 0-urile și 1-urile subiacente, ci specifică doar specificațiile de protocol ale semnalelor logice și ale procesului de comunicare (cum ar fi începutul, datele și sfârșitul etc.); Stratului de aplicație nu îi pasă de modul în care sunt obținute datele, ci doar definește semnificația reprezentării datelor și modul de implementare a logicii specifice de afaceri.

Cea mai simplă aplicare a protocolului UART, de obicei stratul fizic are nevoie doar de două linii de transmisie, una pentru transmisie și alta pentru recepție, realizând astfel o comunicare full-duplex. Pentru transmisiile unidirecționale, puteți utiliza și o singură linie de transmisie. Cel mai tipic exemplu al unei astfel de aplicații este porturile RX/TX ale microcontrolerului conectate între ele, permițând comunicarea UART bazată pe nivel TTL. Pentru diferite distanțe de transmisie și cerințe de fiabilitate, înlocuirea diferitelor implementări ale stratului fizic poate obține magistralele noastre comune RS232, RS485 și alte magistrale de comunicație.

1.2. Diferite implementări ale stratului fizic

Deoarece intrarea în stratul de protocol UART este un semnal logic 0/1, semnalul logic 0/1 poate fi distins prin standarde de nivel diferite în stratul fizic. Pentru nevoi de comunicare diferite, pot fi utilizate diferite straturi fizice. De exemplu, comunicare simplă la bord sau scenarii comune de depanare a dispozitivului, comunicarea protocolului UART între două dispozitive poate fi efectuată folosind un nivel simplu LVTTL/TTL.

Portul serial universal folosește nivelul RS232, care poate crește distanța de transmisie și poate rezista la un anumit grad de interferență a semnalului. Costul constă în faptul că la nivelul stratului fizic este necesar un cip de translație a nivelului corespunzător, transmițătorul trebuie să convertească semnalul intern de nivel înalt și scăzut într-un semnal de tensiune +/- mai mare, iar capătul de recepție trebuie să convertească +/ - semnal de tensiune într-un semnal intern de nivel înalt și scăzut.

În cazul comunicațiilor industriale, pentru a îmbunătăți în continuare distanța de transmisie și a spori fiabilitatea semnalului, se utilizează în general standardul de nivel RS485. Semnalele obișnuite de nivel înalt și scăzut sunt convertite într-o pereche de semnale diferențiale la capătul de transmisie, iar semnalele diferențiale sunt convertite în semnale obișnuite de nivel înalt și scăzut la capătul de recepție. În plus, RS485 permite conectarea a până la 128 de transceiver-uri pe magistrală, în timp ce TTL sau RS232 sunt conexiuni punct la punct.

1.2.1. Comunicare UART bazată pe TTL

Comunicarea UART bazată pe TTL este cel mai simplu caz de utilizare pentru aplicațiile de protocol UART. Adică, nivelurile ridicate și scăzute ale ieșirii digitale I/O sunt transmise direct ca semnal fizic real. În ceea ce privește conexiunea fizică, doar dispozitivul trebuie să fie un punct comun, iar comunicarea unidirecțională a dispozitivului poate fi finalizată printr-o linie de semnal. Dacă este necesar full duplex bidirecțional, sunt utilizate două linii de semnal.

Pentru a compara diferențele în implementarea diferitelor straturi fizice, putem observa modul în care semnalele reale ale diferitelor straturi fizice diferă atunci când sunt trimise aceleași date. Aici, luând caracterul de transmisie „D” ca exemplu, prin osciloscopul de piatră, observați direct semnalul transmis de TTL (terminalul de masă al sondei este conectat la capătul de masă comun al dispozitivului, iar capătul semnalului sondei este conectat la linia albastră de semnal din figura de mai sus) și forma de undă a semnalului prezentată în Figura 1-4 poate fi obținută. După cum se poate observa din forma de undă, atunci când nu există transmisie de date, semnalul UART va rămâne la un nivel ridicat (amplitudinea specifică a semnalului este determinată de tensiunea de alimentare a I/O), semnalul va sări în timpul transmisiei de date. , iar semnalul va reveni la starea inactiv de nivel înalt după finalizarea transmisiei.

1.2.2. Comunicare UART bazată pe RS232

Pentru a spori capacitatea unității de a crește distanța și fiabilitatea transmisiei, magistrala RS232 utilizează un semnal de tensiune bipolar pentru transmisia fizică. Înainte ca semnalul să fie trimis/primit, semnalul intern și semnalul magistralei sunt convertite unul la altul prin intermediul unui cip de schimbare a nivelului. Metoda de conectare este exact aceeași cu nivelul TTL, iar întregul strat fizic este doar un strat în plus de translație a nivelului.

De asemenea, folosind caracterul de transmisie „D” ca exemplu, sonda osciloscopului Pushi este conectată la capătul semnalului și poate fi capturată forma de undă reală prezentată în Figura 1-6. Se poate observa că forma de undă RS232 este tensiune negativă atunci când este inactiv, iar când există transmisie de date, semnalul începe să sară între tensiunile pozitive și negative și revine la starea de tensiune negativă inactiv după finalizarea transmisiei.

1.2.3. Comunicare UART bazată pe RS485

RS485 este proiectat pentru medii industriale complexe, iar cea mai mare caracteristică a magistralei RS485 este utilizarea transmisiei de semnal diferenţial în comparaţie cu straturile fizice ale altor protocoale UART. Înainte ca semnalul să fie trimis, semnalul single-ended este convertit într-un semnal diferențial de către transceiver-ul RS485 și apoi trimis către magistrală pentru transmisie; De asemenea, înainte de recepție, semnalul diferențial de pe magistrală este convertit de transceiver într-un semnal cu un singur capăt și apoi trimis la controlerul UART pentru recepție. Pe magistrala RS485, sunt necesare două perechi de linii de semnal diferenţial (adică 4 linii de semnal) pentru comunicarea bidirecţională full-duplex. Dacă se realizează doar comunicația bidirecțională semi-duplex, este necesară doar o pereche de semnale diferențiale.

Din nou, folosind caracterul de transmisie „D” ca exemplu, forma de undă reală prezentată în Figura 1-8 poate fi achiziționată folosind două sonde de canal (la care se face referire în mod obișnuit) ale sondelor osciloscopului Pushi, care sunt conectate la capetele A/B a unuia dintre semnalele diferenţiale. Se poate observa că forma de undă la capătul A/B este complementară. Forma de undă a terminalului A este logică înainte (tensiune pozitivă când este inactiv) iar forma de undă a terminalului B este logică inversă (tensiune negativă când este inactiv).

2. Specificații protocol

2.1. Structura cadrului UART

În introducerea secțiunii anterioare, am observat forma de undă UART reală prin osciloscopul de piatră, deci cum este exact această formă de undă recunoscută ca caracterul „D” și nu altceva? Aceasta implică definirea structurii de cadru a protocolului UART. După cum se arată în Figura 2-1:

Când două dispozitive trebuie să comunice prin protocolul UART, trebuie să convină în același timp asupra următoarelor:

  • Durata de timp per semnal T (rată de transmisie = 1/T)
  • Numărul specific de biți din fiecare articol din structura cadrului
  • Dacă există o cifră de verificare și mecanismul cifrei de verificare (impar/par/…). )

Cu aceste convenții, dispozitivul receptor trebuie doar să aștepte sosirea bitului de pornire și apoi să probeze forma de undă ulterioară la intervale regulate pentru a obține informațiile specifice transmise. Luând ca exemplu forma de undă a caracterului „D”, procesul de rezoluție este prezentat în Figura 2-2:

2.1.1. Rata baud

Rata baud este un concept foarte important al protocolului UART, sau al tuturor protocoalelor seriale asincrone, adică numărul de biți care pot fi reprezentați pe unitatea de timp (1 secundă), sau poate fi exprimat și ca reciproca lățimii biților . De exemplu, o formă de undă UART cu o viteză de transmisie de 115200 înseamnă că poate găzdui 115200 de biți pe secundă, ceea ce înseamnă că fiecare bit de date reprezintă aproximativ 8.68 uS de timp.

Protocoalele seriale asincrone, cum ar fi UART, pentru a simplifica conexiunea fizică a semnalelor și pentru a reduce costurile de comunicare, au în general o singură linie de semnal și nu pot transmite date și semnale de ceas în același timp. Pentru ca transceiver-ul/dispozitivul de transmisie să rezolve corect forma de undă, acesta trebuie să fie la aceeași setare a vitezei de transmisie. Aceeași formă de undă folosind viteze baud diferite poate obține informații complet diferite. Pentru dispozitivul de recepție, doar bitul de pornire poate fi utilizat ca punct de sincronizare al unui cadru de date, iar celelalte date sunt determinate de rata de transmisie pentru a determina locația specifică de eșantionare.

Din nou, folosind forma de undă a caracterului „D” ca exemplu, așa cum se arată în Figura 2-4, dacă este recepționată la o viteză de transmisie greșită, este posibil să obțineți informații de date complet greșite.

2.1.2. Biți inactiv

Când datele nu sunt transferate între dispozitive, un nivel ridicat susținut indică inactivitate. Cu cât durata biților inactiv este mai mare și cu cât intervalul dintre două cadre de date este mai lung, cu atât se transmit mai puține date pe unitatea de timp.

2.1.3. Start Bit

Receptorul UART va detecta întotdeauna schimbarea nivelului pe linia de semnal, iar atunci când datele sunt transmise, expeditorul va trage linia de semnal de la nivelul înalt până la sfârșitul nivelului scăzut în starea inactiv și va menține un pic de timp. Când receptorul detectează o schimbare de nivel înalt-jos, începe să primească semnale.

2.1.4. Biți de date

Bitul de date conține datele reale transmise, care au o lungime de 5 până la 8 biți dacă este utilizată paritatea și 5 până la 9 biți dacă nu este utilizată paritatea. În general, biții de date sunt de 8 biți, iar datele sunt trimise mai întâi de la bitul cel mai puțin semnificativ, iar biții înalți vin pe al doilea.

2.1.5. Verifică cifrele

Cifrele de verificare pot fi folosite pentru a îmbunătăți fiabilitatea transmisiei. Dacă semnalul este greșit din cauza interferenței în procesul de transmisie și provoacă o eroare la nivelul unor poziții, se poate determina dacă datele primite și cifra de verificare se potrivesc, calculând dacă datele primite și cifrele de verificare se potrivesc, deci ca să furnizeze informații valide stratului de aplicație pentru a decide să accepte/renunțe datele corespunzătoare.

2.1.6. Stop Bit

Bitul de oprire reprezintă sfârșitul unui cadru de date, iar semnalul real este o perioadă de timp ridicată. Lungimea bitului de oprire poate fi setată la un bit de oprire de 1, 1.5 sau 2 biți. În cele mai multe cazuri, se folosește un bit de oprire de 1 bit.

Deoarece UART este un protocol asincron, începutul fiecărui cadru poate fi sincronizat cu o margine de salt, dar bitul de oprire poate calcula doar poziția relativă după rata de transmisie, iar dacă un nivel scăzut este recunoscut la poziția de oprire, o eroare de cadru. este generată. În procesul de comunicare, pentru a reduce problema cauzată de eroarea ratei baud, pot fi setate diferite lungimi de biți de oprire pentru a se adapta.

3. Analizați comunicarea UART folosind un analizor logic

3.1. Osciloscop vs analizor logic

Fiind principalul instrument de testare și măsurare de uz general, osciloscoapele au un avantaj natural în observarea detaliilor semnalelor analogice. De exemplu, operarea în timp real, cu o rată mare de reîmprospătare a formei de undă, poate observa cu ușurință semnale anormale bruște; De exemplu, atunci când se efectuează evaluarea zgomotului și optimizarea calității semnalului, osciloscopul poate compara asemănările și diferențele semnalelor de pe aceeași magistrală și de diferite noduri pentru a găsi probleme ascunse de integritate a semnalului.

Cu toate acestea, osciloscopul are în mod natural și unele locuri incomode, în plus față de puținele canale, ecranul este în general mic, funcționarea nu este computer + mouse mod flexibil și controlabil aceste probleme morfologice, pentru achiziția și analiza semnalelor digitale, cel mai mare problema osciloscopului este că adâncimea de stocare este prea mică. Un osciloscop de câteva sute de mii de yuani poate avea, de asemenea, o adâncime de stocare de doar câteva sute de Mpts. În același timp, din cauza limitării adâncimii de stocare, atunci când este necesar să se facă o achiziție de timp puțin mai lungă, rata reală de eșantionare a osciloscopului va scădea brusc, rezultând că forma de undă colectată nu poate restabili semnalul real, pierzându-se semnificația analizei.

Analizoarele logice sunt instrumente de testare și măsurare special concepute pentru achiziția și analiza semnalului digital, iar rezultatele formelor de undă colectate sunt doar niveluri ridicate și scăzute (adică 0 și 1 logic). Cu toate acestea, compensează lipsa osciloscoapelor în achiziționarea și analizarea semnalelor digitale.

  1. 1. Majoritatea analizoarelor logice sunt operate pe un PC, cu performanța puternică a procesoarelor desktop și experiența interactivă a sistemelor de operare mature, ceea ce îmbunătățește considerabil confortul și eficiența analizei semnalului digital.
  2. 2. Numărul de canale de analiză logică este mare, analizorul logic DSLogic entry-level are 16 canale care pot fi colectate în același timp, iar utilizatorul poate obține, de asemenea, produse de analiză logică cu zeci sau chiar sute de canale la un nivel foarte rezonabil. cost.
  3. 3. Adâncimea de stocare a analizorului logic este mai mare, de exemplu, DSLogic poate atinge o adâncime de stocare de 16G în modul stream și, în același timp, poate menține o rată de eșantionare destul de mare, depășind cu mult capacitatea de achiziție a majorității osciloscoapelor.
  4. 4. Analizatoarele logice oferă, în general, funcții bogate de decodare a protocolului, care pot efectua o analiză aprofundată a semnalelor digitale. De exemplu, DSLogic acceptă în prezent peste 100 de protocoale de decodare. Majoritatea osciloscoapelor au capacități limitate de decodare și majoritatea necesită achiziționarea separată a plug-in-urilor corespunzătoare.

În continuare, ne vom concentra asupra modului de utilizare a analizoarelor logice pentru achiziția și analiza semnalelor UART în diferite situații.

3.2. Stabiliți un mediu de testare pentru analizoarele logice

3.2.1. Conexiune la DSLogic

DSLogic este un analizor logic portabil bazat pe conectivitate USB. Gazda DSLogic este responsabilă pentru achiziția semnalului și memorarea în cache și apoi transmite datele prin USB către software-ul computerului gazdă DSView de pe computer. DSView este responsabil pentru procesarea, afișarea, analiza și funcțiile de interacțiune om-calculator corespunzătoare.

Când utilizați, pur și simplu conectați gazda DSLogic direct la portul USB de pe placa PC printr-un cablu de date USB, deschideți software-ul DSView și confirmați că INDICATORUL de pe gazda DSLogic devine veșnic verde. În acest moment, conectarea și inițializarea analizorului logic este finalizată. După cum se arată în Figura 3-4, numele actual al dispozitivului din colțul din stânga sus și starea conexiunii corespunzătoare pot fi observate pe software-ul DSView.

3.2.2. Conexiune semnal UART

Pentru toate măsurătorile, echipamentul de testare și semnalul de măsurat trebuie să se bazeze pe un plan de referință comun, care este denumit în mod obișnuit împământare, astfel încât semnalul măsurat să poată fi achiziționat și măsurat corect. În unele cazuri, nu există o împământare explicită, dar rezultatele măsurătorii par să nu fie o problemă, deoarece echipamentul de măsurare și semnalul măsurat sunt conectate la pământ în alte moduri, cum ar fi aceeași sursă de alimentare utilizată sau referința. împământarea este conectată la borna de împământare a rețelei în același timp. Cu toate acestea, atunci când se efectuează măsurători riguroase, echipamentul de măsurare ar trebui să fie împământat conform semnalului testat. Cu cât aria buclei a terminalului de împământare a semnalului este mai mare de la semnalul măsurat la dispozitivul de măsurare, cu atât este mai ușor ca semnalul să fie interferat, rezultând erori de măsurare sau chiar erori de măsurare.

Pentru semnalele UART, la accesarea analizorului logic, cel mai simplu caz trebuie doar să conecteze 2 fire, unul la masa de referință și unul la semnalul măsurat. Pentru diferitele implementări de nivel fizic ale protocolului UART pe care le-am menționat mai devreme, modul în care sunt conectate semnalele va fi ușor diferit.

De exemplu, pentru semnalul UART la nivel TTL, pe lângă conectarea la masă de referință, trebuie doar conectat semnalul (TX sau RX) pentru a fi testat la intrarea canalului corespunzătoare a analizorului logic.

Pentru semnalele magistralei RS232, putem fie măsura semnalul magistralei după translația nivelului (DSLogic are o gamă de tensiune de rezistență de +-30V la intrarea cablului, iar intervalul de semnal +-15V al RS232 poate fi conectat direct), fie putem măsura semnalul digital intern înainte de traducerea nivelului. Metoda sa de cablare este în concordanță cu semnalul TTL, singurul lucru de reținut este că semnalul RS232 inversează nivelul (tensiune negativă atunci când este inactiv, adică nivel scăzut), atunci când decodificăm protocolul UART, putem inversa nivelul semnalului corespunzător în fereastra de setare a decodării a DSView (opțiunea Invertire semnal este setată la da).

Busul RS485 folosește semnale diferențiale, iar atunci când folosim un analizor logic pentru achiziția semnalului, trebuie să acordăm o atenție deosebită conexiunii semnalului măsurat. În primul rând, locul de referință al analizorului logic trebuie să fie conectat la pământul de referință al dispozitivului corespunzător supus testului transceiver RS485, astfel încât analizatorul logic să poată fi garantat că are planul de referință de nivel corect; În al doilea rând, pentru semnalele diferențiale, analizorul logic trebuie doar să dobândească niveluri ridicate și scăzute de homopolaritate cu semnalul intern. Din perspectiva semnalelor digitale, modul diferențial nu face decât să îmbunătățească fiabilitatea transmisiei semnalului, fără a adăuga informații suplimentare. După cum se arată în Figura 3-7, atunci când testați semnalul magistralei 485 folosind un analizor logic, conectați masa de referință a transceiver-ului dispozitivului corespunzător și semnalul A+ pe magistrala diferențială.

Desigur, dacă numai semnalul B poate fi colectat, putem seta și decodorul UART să inverseze semnalul pentru a obține rezultatul corect al rezoluției protocolului la decodare în DSView.

3.2.3. Setări prag

Pragul analizorului logic este tensiunea de judecată a nivelurilor înalte și scăzute, adică atunci când tensiunea semnalului de intrare este mai mare decât tensiunea de prag, achiziția este la nivel înalt; Când tensiunea semnalului de intrare este sub tensiunea de prag, achiziția este scăzută.

Pentru protocolul UART, am introdus anterior că are implementări diferite ale stratului fizic, iar implementările diferitelor niveluri fizice au standarde de nivel diferite. Trebuie doar să alegem un prag corespunzător pentru a distinge între nivelurile ridicate și cele scăzute în diferite cazuri. Pragurile prezentate în Figura 3-8 pot îndeplini practic această cerință.

În unele cazuri, amplitudinea semnalului diferenţial al magistralei RS485 poate varia într-o gamă largă din cauza configurării sau depanării. Deoarece specificația RS485 stipulează că atâta timp cât tensiunea diferențială dintre AB este mai mare de 200mV, aceasta poate fi considerată ridicată. În acest moment, putem folosi osciloscopul de piatră pentru a observa amplitudinea actuală a nivelului de semnal și apoi decidem asupra setării pragului adecvate. Trebuie doar să vă asigurați că tensiunea de prag pe care o setați poate distinge în mod rezonabil între nivelurile ridicate și cele scăzute.

3.3. Achiziție simplă de semnal UART

Cele mai multe semnale UART sunt semnale de viteză mică, cum ar fi rata de transmisie cea mai frecvent utilizată de 115200, ceea ce indică faptul că frecvența semnalului este de numai 115.2 KHz. Astfel de semnale pot fi achiziționate direct folosind setările implicite ale DSLogic. Aici, luând intervalul fix de 1s gazdă și trimițând în mod repetat caracterul „D” ca exemplu, descrie cum să utilizați un analizor logic pentru a achiziționa și analiza astfel de semnale UART.

3.3.1. Achiziție de semnal

După ce hardware-ul și conexiunea semnalului sunt pregătite, faceți clic pe butonul „Start” al software-ului DSView direct pentru a achiziționa semnalul testat la setarea implicită (timpul de achiziție al ratei de eșantionare de 1MHz 1s). Dacă doriți să modificați rata de eșantionare și durata achiziției, selectați parametrii corespunzători direct în caseta derulantă corespunzătoare. Principiul de setare a ratei de eșantionare este recomandat să fie de 10 ori sau mai mult decât frecvența maximă a semnalului măsurat, de exemplu, pentru semnalele UART cu o rată de transmisie de 115200 baud, cea mai rapidă frecvență a semnalului este de 115.2 KHz, când rata de eșantionare de 1 M este selectat, fiecare semnal de bit va avea 8 sau 9 puncte de eșantionare, iar eroarea de fază corespunzătoare este +-1/8 (12.5%); Când este selectată o rată de eșantionare de 10M, vor exista 86 sau 87 de puncte de eșantionare pe bit de semnal, corespunzând unei erori de fază de +-1/86 (1.16%). Desigur, în general, nu este recomandat să utilizați o frecvență de eșantionare prea mare, deoarece cu cât este mai mare rata de eșantionare, cu atât mai scurt este timpul pentru care poate fi colectată, iar rata de eșantionare prea mare poate colecta mai multe salturi pe un singur salt. marginea semnalului lent, provocând astfel probleme decodării protocolului. Figura 3-9 arată forma de undă a semnalului rezultată obținută folosind setările implicite.

După cum se poate observa din Figura 3-9, canalul 0 dobândește un semnal care este persistent ridicat, dar nu găsește niciun salt. Observați cu atenție rigla de timp de deasupra ferestrei formei de undă și bara de defilare din partea de jos a ferestrei pentru a ști că fereastra curentă afișează doar o parte din forma de undă colectată, nu toate semnalele. În acest moment, puteți mări cu rotița mouse-ului sau puteți face clic dreapta în zona formei de undă pentru a afișa toate formele de undă pe întreaga durată de achiziție. Obțineți rezultatul prezentat în Figura 3-10.

Pe baza figurii de mai sus, dorim să ne uităm doar la partea de tranziție a canalului 0. Puteți dezactiva afișarea formei de undă a altor canale în fereastra Opțiuni și ajustați înălțimea de afișare a semnalului canalului. Apoi îndreptați mouse-ul spre forma de undă țintă și, în același timp, prin rotița mouse-ului pentru a mări forma de undă a poziției ascuțite; Alternativ, puteți selecta zona formei de undă pe care doriți să o măriți ținând apăsat butonul din dreapta al mouse-ului în casetă. De asemenea, țineți apăsat butonul stâng al mouse-ului pentru a muta forma de undă la stânga și la dreapta. Obțineți detaliile formei de undă prezentate în Figura 3-11.

La observarea formei de undă, plasarea mouse-ului peste forma de undă a pulsului poate afișa informații precum lățimea impulsului, perioada, frecvența și ciclul de lucru al semnalului curent. În același timp, puteți adăuga și un cursor făcând dublu clic pe butonul din stânga al mouse-ului, iar când mutați cursorul, acesta se va alinia automat la marginea de salt din apropiere.

3.3.2. decodare UART

Forma de undă a semnalului colectată de analizorul logic se modifică în timp doar la niveluri înalte și scăzute (0/1), ceea ce nu este propice analizei noastre țintite a procesului și conținutului transmisiei semnalului. Deși putem folosi ochiul liber pentru a traduce conținutul protocolului corespunzător formei de undă conform specificației protocolului, aceasta va reduce foarte mult eficiența analizei. Decodorul încorporat al DSView oferă conținut bogat de decodare a protocolului, transformând formele de undă plictisitoare în caractere, markeri și conținut de date semnificative. Facilitează foarte mult analiza și înțelegerea semnalelor de către ingineri pentru a găsi mesaje de eroare sau date critice.

În software-ul DSView, decodarea protocolului a formei de undă dobândite este foarte simplă, trebuie doar să deschideți panoul „Decodare”, să căutați decodorul corespunzător (aici selectam 1: protocol UART) și să setați opțiunile de decodor corespunzătoare (inclusiv afișaj/canal). /structură/format cadru etc.). Odată determinat, software-ul va începe să decodeze protocolul UART pe canalul selectat. Rezultatul decodificat este afișat în canalul de protocol. Acest lucru este prezentat în Figura 3-12.

Când selectați un decodor, DSView oferă o funcție convenabilă de căutare a protocolului, trebuie doar să introduceți caracterele cheie în caseta de căutare a protocolului, DSView va lista toate decodoarele care conțin aceste caractere, unde utilizatorul poate selecta decodorul corect. După cum se arată în Figura 3-13, există două protocoale legate de UART 0: UART și 1: UART, unde 0: UART este un decodor simplificat care nu analizează informații despre biți și nici nu acceptă stivuirea protocoalelor de nivel superior, când dorim doar să obținem datele corespunzătoare formei de undă, puteți utiliza acest protocol simplificat pentru a reduce timpul de decodare și resursele de memorie.

Fereastra de setări a decodorului are multe opțiuni de setare legate de decodare, iar conținutul ferestrei de setări a diferitelor protocoale va fi diferit. Există câteva opțiuni pe care toate decodoarele trebuie să le seteze, cum ar fi corespondența dintre semnalele de canal și de protocol. Aici folosim semnalul UART captat de canalul 0, astfel încât canalul corespunzător care trebuie decodat ar trebui să fie setat la canalul 0.

Și opțiunile de setare legate de protocol le-am explicat în detaliu în secțiunea structurii cadrului, în funcționarea efectivă pot fi obținute și prin intermediul software-ului computerului gazdă portului serial (asistent de depanare a portului serial etc.) pentru a obține aceste informații. Acest lucru este prezentat în Figura 3-14.

Pentru conținutul de date decodat, DSView acceptă diferite formate de afișare. De exemplu, semnalul UART achiziționat anterior afișează caracterul „D” sub formă de coduri ASCII sau poate fi modificat la modul de afișare hexazecimal (Hex), iar rezultatul va afișa 0x44. Acest lucru este prezentat în Figura 3-15. Formatele de afișare acceptate în prezent sunt: ​​hex (hexazecimal), dec (zecimal), oct (octal), bin (binar) și cod ascii.

3.4. Achiziționarea unei singure transmisii UART

Când forma de undă pe care dorim să o captăm este un semnal ocazional, nu știm când va apărea forma de undă și, dacă folosim metoda de achiziție directă, este posibil să putem captura doar forma de undă a semnalului inactiv de cele mai multe ori și nu putem captează semnalul în momentul transmiterii efective.

În acest moment, poate fi capturat prin declanșare. Prin setarea condițiilor de declanșare corespunzătoare, putem controla ora de începere a achiziției semnalului în funcție de schimbarea formei de undă, astfel încât să captăm cu precizie forma de undă a semnalului pe care dorim să o vedem.

3.4.1. Modul tampon

DSLogic acceptă două moduri de achiziție: modul Stream și modul Buffer. Datele colectate în modul Stream sunt transmise la computer în timp real și apoi procesate de DSView. Datele colectate în modul Buffer sunt mai întâi stocate în memoria cache hardware internă a DSLogic, apoi transferate pe computer după finalizarea achiziției și procesate de DSView.

Pe lângă avantajele de a obține rate de eșantionare mai mari, modul Buffer acceptă și mai multe opțiuni și setări de declanșare, cum ar fi declanșarea pe mai multe niveluri, declanșarea în serie și setarea pozițiilor de declanșare. Modul Stream, pe de altă parte, acceptă doar declanșarea simplă.

3.4.2. Setări de declanșare

Pentru o declanșare simplă, putem seta opțiunea de declanșare direct lângă canal. Corespunde secvenţial cu muchia ascendentă, înaltă, muchie descendentă, nivel scăzut şi orice declanşare de margine. Doar păstrați modul implicit de declanșare simplu în panoul de declanșare. De exemplu, pentru o transmisie UART care nu știe când are loc, putem alege să declanșăm marginea de cădere. Când semnalul UART rămâne inactiv, declanșatorul nu este satisfăcut. DSLogic așteaptă sosirea condiției de declanșare, așa cum se arată în Figura 3-17.

Când UART începe să transmită primul bit de pornire, condiția de declanșare este activată, iar DSLogic dobândește forma de undă a semnalului în momentul declanșării. Acest lucru este prezentat în Figura 3-18.

Să luăm în considerare un scenariu de declanșare mai complex, cum ar fi dispozitivul A care trimite în mod constant date către dispozitivul B la întâmplare și dispozitivul B care răspunde la date diferite în funcție de conținutul de date trimis de dispozitivul A. Dacă vrem să știm ce date a trimis Dispozitivul A către Dispozitiv B înainte de a trimite datele 0, cum setăm condiția de declanșare pentru a prinde forma de undă în momentul corespunzător?

Există două probleme care trebuie rezolvate aici, mai întâi trebuie să setăm locația declanșatorului astfel încât să putem vedea datele înainte de declanșare, nu datele de după declanșare; În al doilea rând, trebuie să găsim caracteristicile formei de undă ale dispozitivului B care trimite date 0 și să le convertim în condiția de declanșare corespunzătoare.

Analiza protocolului UART

Figura 3-19 Poziția declanșatorului

Conform regulilor de protocol ale UART, forma de undă care trimite datele 0 va fi un semnal de puls continuu relativ larg de nivel scăzut. Dacă viteza de transmisie a UART este 115200 și rata de eșantionare pe care o setăm este de 1MHz, forma de undă a datelor 0 este prezentată în Figura 3-20, care va fi un impuls de nivel scăzut de aproximativ 78.125uS.

Pentru a seta declanșarea avansată sau poziția de declanșare necesită suport pentru modul tampon, trebuie mai întâi să setați „Modul de rulare” la „Modul tampon” în „Opțiuni” și nu selectați opțiunea „Comprimare hardware RLE”. Setați condiția de declanșare avansată la canalul 1 cu un nivel scăzut continuu de 75 de puncte de eșantionare (corespunzător unei rate de eșantionare de 1 MHz, care este un nivel scăzut de 75 us) și setați poziția de declanșare la 80% pentru a facilita observarea datelor înainte de declanșare. Setările specifice sunt prezentate în Figura 3-21.

În conformitate cu această condiție de declanșare, este declanșată atunci când dispozitivul B trimite date 0, iar forma de undă achiziționată este prezentată în Figura 3-22.

3.4.3. Repetați colecția

În unele cazuri, trebuie să observăm dinamic starea unor semnale, cum ar fi conținutul de date trimis de Burst de fiecare dată, dar nu știm când sunt trimise datele și este imposibil să facem clic frecvent pe butonul „Start”. . DSView oferă un mod de achiziție „repetat” care achiziționează și actualizează automat formele de undă atunci când declanșarea este îndeplinită. Când depanăm unele semnale periodice de explozie, este foarte convenabil să observăm rezultatele achiziției dinamice și ale analizei protocolului prin modul de repetare.

Modul de repetare poate fi setat așa cum se arată în Figura 3-23. Intervalul de repetiție este timpul minim de așteptare dintre două eșantioane pentru a facilita observarea formei de undă și rezultatele decodării achiziției anterioare.

3.5. Achiziția de transmisii UART pe termen lung

Când este necesar să obținem forme de undă ultra-lungi pentru analiză, putem folosi modul Stream. DSLogic poate atinge o adâncime de eșantionare de 16G per canal în modul Stream. La o rată de eșantionare de 1MHz, timpul de achiziție poate ajunge la 16G/1M ≈ 16000s, care este mai mult de 4 ore.

3.5.1.Modul flux

Configurarea modului Stream este prezentată în Figura 3-24, iar diferitele versiuni hardware DSLogic acceptă diferite opțiuni de canal pentru modul stream. Pentru U3Pro16, bazat pe portul USB3.0, poate realiza 3 canale @ frecvență de eșantionare de până la 1 GHz, 6 canale @ frecvență de eșantionare de până la 500 MHz, 12 canale @ frecvență de eșantionare de până la 250 MHz și 16 canale @ frecvență de eșantionare de până la 125 MHz.

Când cantitatea de date colectate este relativ mare, protocolul 0:UART poate fi utilizat pentru decodare, în comparație cu 1:UART, care omite informațiile despre biți, nu acceptă stivuirea de protocol la nivel înalt și poate scurta timpul de decodare. și reduce ocuparea memoriei. Celelalte funcții sunt aceleași cu 1: UART. Efectul de decodare este prezentat în Figura 3-25.

3.5.2. Se afișează lista de protocoale

După cum se arată în figura următoare, rezultatul decodării grafice este complet sincronizat cu forma de undă dobândită în timp, ceea ce ne ajută să înțelegem forma de undă și să găsim problema, dar, în același timp, din cauza scării de afișare a timpului, nu este favorabil pentru vizualizarea rezultatului decodării. Afișările listelor compensează acest neajuns, facilitând vizualizarea și analizarea unor cantități mari de conținut decodat.

DSView oferă o modalitate de a trece între rezultatele grafice și cele din listă. Faceți clic pe orice rând din rezultatele listei pentru a sări automat la rezultatul formei de undă corespunzător și, de asemenea, puteți alege dacă să măriți automat forma de undă atunci când săriți sau să fixați coloana actuală a raportului de mărire a formei de undă. În plus, atunci când vedem forma de undă la un moment dat, dacă dorim să sărim în poziția în care rezultatul decodării corespunzător acestei forme de undă este afișat în listă, trebuie doar să faceți clic pe butonul de poziționare din colțul din dreapta sus al fereastra de afișare a listei.

În plus, conținutul decodat poate fi exportat într-un fișier prin afișarea listei. După cum se arată în figura de mai sus, făcând clic pe butonul „Salvare” afișat în listă, puteți alege să exportați conținutul decodat în prezent într-un fișier csv sau txt, ceea ce este convenabil pentru procesarea datelor de la terți, cum ar fi intrarea în matlab pentru analiză sau ca date de intrare pentru alt software.

3.5.3. Decodificați căutarea datelor

Un alt avantaj al afișajului listei este că rezultatele decodificate pot fi folosite ca șiruri de caractere pentru căutări de rezultate, cum ar fi căutarea unor operațiuni specifice sau octeți specifici de date, care pot localiza rapid locația care trebuie vizualizată.

Introduceți cuvântul cheie pe care doriți să îl căutați în caseta de căutare, apoi apăsați butoanele înainte/înapoi pentru a găsi conținutul decodat care conține cuvântul cheie, iar interfața formei de undă va sări în locația potrivită pentru analiză. Dacă analizați rezultatele unui segment, puteți face clic pe un rând din lista de verificare, iar butoanele Înainte/Înapoi caută potrivirile anterioare și următoare începând cu acest comportament în loc să înceapă de la zero.

Pentru protocolul UART, DSView acceptă și căutarea de date pe mai multe rânduri. Poate fi folosit pentru a găsi unele rezultate de șir învecinate care apar în datele dvs. După cum se arată în Figura 3-29, o căutare de date pe mai multe linii concatenează mai multe cuvinte cheie cu caracterul „-”.

3.5.4. Căutare forme de undă

DSView acceptă nu numai căutarea rezultatelor decodificate, ci și funcția de căutare a formei de undă originale. Formele de undă pot fi localizate rapid în multe scene. De exemplu, atunci când forma de undă este transmisă brusc, deoarece perioada de inactivitate este relativ lungă, este imposibil să vedeți forma de undă detaliată transmisă de mai multe ori în același timp, puteți utiliza căutarea formei de undă și să sari imediat la următorul salt al formei de undă după vizualizarea formei de undă în momentul anterior pentru a vă asigura că raportul de zoom este neschimbat.

Verificați bara de instrumente „Căutare”, caseta de căutare va apărea sub fereastra software-ului, faceți clic pe caseta de căutare, deschideți fereastra de setări de căutare, determinați marginea de salt a canalului, puteți căuta forma de undă care îndeplinește criteriile din stânga și din dreapta chei. În același timp, puteți muta manual cursorul de căutare pentru a determina unde începe căutarea.

Când este selectată căutarea, apare un cursor cu o etichetă „S”, starea inițială este gri, dacă dați clic stânga/dreapta pentru a căuta și a găsi o formă de undă care îndeplinește criteriile, cursorul va deveni albastru și se va muta automat la locația de căutare. . Dacă mutați manual cursorul „S”, cursorul devine din nou gri.

3.5.5. Utilizarea cursorului

DSView acceptă o gamă largă de operații cu cursorul, permițând nu numai măsurarea timpului cu cursorul, ci și marcarea și urmărirea formelor de undă speciale cu cursorul. Când forma de undă este inactivă sau intervalul este lung, puteți insera un cursor în fiecare poziție de interes, iar când doriți să săriți la o formă de undă de interes, trebuie doar să faceți clic dreapta în zona riglei și apoi să faceți clic pe numărul secvenței cursorului la care doriți să săriți, care poate sări la poziția corespunzătoare a cursorului.

Dacă doriți să mutați cursorul, trebuie doar să mutați mouse-ul lângă cursor, când cursorul apare îngroșat, faceți clic pe butonul stâng al mouse-ului pentru a selecta, cursorul va urma mișcarea mouse-ului, va determina poziția și faceți clic din nou pe butonul stânga pentru a elibera cursorul. Când doriți ca cursorul să se alinieze la una dintre marginile de salt ale unei anumite forme de undă de canal, trebuie doar să mutați mouse-ul lângă marginea de salt, iar cursorul se va alinia automat la marginea săriturii.

3.5.6. Măsurătorile mouse-ului

Pe lângă măsurătorile bazate pe cursor, DSView oferă măsurători mai convenabile ale mouse-ului. De exemplu, măsurători ale lățimii pulsului curent, perioadei, ciclului de lucru și frecvenței (trebuie doar să plasați mouse-ul peste pulsul în schimbare); Măsurarea numărului de margini (făcând clic pe pozițiile de început și de sfârșit de pe forma de undă vor număra automat marginile de salt ale acestui interval); și măsurarea distanței la margine (clic mouse-ul pe marginea de pornire și treceți la marginea finală).

După cum se arată în Figura 3-31, mutați mouse-ul în poziția marginii de tranziție de început, faceți clic pe butonul stâng al mouse-ului, selectați marginea de tranziție de pornire, mutați mouse-ul în poziția marginii de tranziție de sfârșit și distanța dintre cele două Vor fi afișate marginile de tranziție (durată/punct de interval de eșantionare) și se va face clic din nou pe butonul stâng al mouse-ului pentru a finaliza măsurarea.

4. Întrebări frecvente

4.1. Determinați viteza de transmisie necunoscută

Când nu putem obține viteza de transmisie a formei de undă UART în avans, putem, de asemenea, ghici viteza de transmisie reală după forma de undă dobândită. DSView oferă un decodor „Guess bitrate” pentru a ghici parametrii baud rate ai unui șir de forme de undă arbitrare. Principiul ratei de biți Guess este de a găsi cea mai îngustă lățime a impulsului în forma de undă, la rândul său, ca lățimea formei de undă a unui bit, și apoi să se calculeze reciproca ca rată de baud. Deci, pot exista rezultate multiple, trebuie doar să observăm dacă impulsul corespunzător este o lățime rezonabilă a impulsului și apoi să selectăm rezultatul ratei baud maxime. Acest lucru este prezentat în Figura 4-1.

Odată obținută rata de transmisie, aceasta poate fi setată la opțiunile pentru decodorul UART. Deoarece protocolul UART resincronizează fiecare bit de pornire, eroarea vitezei de transmisie se va acumula doar într-un cadru de date și, atâta timp cât eroarea dintr-un cadru nu depășește limita bitului de bit, se poate obține rezultatul corect al decodării. .

Desigur, dacă există un eșantion mic al formei de undă, cum ar fi niciun impuls cu o lățime de un singur bit în forma de undă, atunci rata de transmisie ghicită este probabil să fie incorectă, rezultând un rezultat de decodificare incorect. Când există o formă de undă care nu este conformă cu protocolul, decodorul UART va oferi, de asemenea, posibile indicii de eroare, cum ar fi eroarea de cadru, așa cum se arată în Figura 4-2. Inginerii cu experiență pot ajusta rata baud observând forma de undă și rezultatele decodării pentru a obține rezultate corecte de decodificare.

4.2. Decodificarea semnelor anti-încredere

În secțiunea anterioară am menționat că protocolul UART poate fi transmis prin diferite semnale fizice, iar unele semnale din stratul fizic pot avea o relație inversă cu semnalul de protocol (interschimbabil de nivel înalt și scăzut), cum ar fi RS232 sau semnalul B în semnalul diferenţial RS485. Când semnalul pe care îl colectăm este inversat, decodorul UART al DSView poate fi, de asemenea, setat pentru a obține rezultatul corect al decodării.

Utilizatorul trebuie doar să înlocuiască „Semnalul inversat?” în setările decodorului UART. Opțiunea este setată la „da”. Decodificarea semnalului invers este prezentată în figura următoare.

4.3. Decodificarea comunicării UART multigrup

Decodorul UART de la DSView este proiectat în mod deliberat pentru a fi o abordare cu un singur canal, care facilitează setările de canal arbitrare pentru comunicarea multiplexată la decodare. De exemplu, pentru o comunicare UART full-duplex, care are atât un semnal TX, cât și un semnal RX, trebuie doar să adăugăm două decodoare UART pentru a corespunde decodării TX și RX.

După cum se arată în figura de mai jos, este cazul în care trei semnale UART sunt decodificate în același timp.

4.4. Eroare de decodare cauzată de poziția de pornire

Pentru orice proces de comunicare, dispozitivul trebuie să plece din starea inițială pentru a recepționa corect conținutul comunicației, adică a identifica și analiza corect cadrul de protocol. Același lucru este valabil și pentru analizoarele logice, dacă achiziția unui semnal începe exact în mijlocul unui cadru de date, atunci poziția de pornire greșită este probabil să conducă la un rezultat de decodificare greșit. După cum se arată în figura următoare, dispozitivul continuă să trimită șirul „DreamSourceLab”, dar deoarece locația primei capturi se află exact în mijlocul cadrului de date, decodificarea primei forme de undă devine confuză.

Pentru a evita decodificarea incorectă a datelor, putem seta artificial poziția de pornire și poziția finală a decodării, astfel încât să evităm erorile de decodare cauzate de cadrele de date trunchiate. Poziția de decodare poate fi poziția specificată a oricărui cursor, iar operația trebuie doar să seteze pozițiile de început și de sfârșit corespunzătoare în setările decodorului după introducerea cursorului corespunzător. După cum se arată în figura următoare, setarea poziției de pornire evită decodificarea incorectă a primei forme de undă trunchiate.

5. Analiză avansată

5.1. Analiza protocolului pe mai multe straturi

UART este un protocol de bază foarte utilizat, iar multe dintre protocoalele de transmisie utilizate în aplicațiile practice sunt extinse pe baza UART. De exemplu: DMX512, LIN, MIDI și Modbus, etc., baza de comunicare de bază este protocolul UART. 、

Conform acestei caracteristici, DSView acceptă, de asemenea, stivuirea de analiză a protocoalelor cu mai multe straturi. Când adăugăm un decodor al unui protocol complex, DSView va construi automat întreaga stivă de protocoale de la nivelul superior, ceea ce face ca rezultatele decodării să fie mai bogate și mai perfecte, ceea ce este de mare ajutor pentru analiza aprofundată și înțelegerea protocolului de către utilizator.

Să luăm Modbus RTU ca exemplu pentru a înțelege procesul de analiză a protocoalelor multistrat prin DSView. Pe baza funcției de transfer de octeți UART, Modbus RTU specifică în detaliu semnificația specifică a fiecărui octet, astfel încât structura de cadre a Modbus să fie formată prin combinarea mai multor cadre de protocol UART împreună. Acest lucru este prezentat în figura următoare.

Când utilizați DSView pentru o astfel de decodare a protocolului, trebuie doar să introduceți protocolul corespunzător în caseta de căutare a protocolului și să îl adăugați. DSView creează automat pagina de setări pentru întregul protocol de stivuire, așa cum se arată în figura următoare, iar utilizatorul poate face setările corespunzătoare.

După cum se arată în figura următoare, structura de stivuire a protocolului poate fi văzută clar din rezultatul decodării Modbus RTU. Modbus-ul pentru fiecare cadru constă din 8 cadre UART octeți. Conținutul unui cadru Modbus va avea, de asemenea, comentarii clare care indică sensul său specific. Când apare o eroare de transmisie, un astfel de rezultat de decodificare poate localiza foarte clar locația erorii, precum și cauza erorii (fie că este o problemă cu UART-ul de bază sau o problemă cu stratul de protocol Modbus). Dacă nu doriți să vedeți detaliile de bază, puteți ascunde conținutul decodat corespunzător pe pagina de setări a decodorului.

Fii primul care comenteaza

Lasă un comentariu

Adresa ta de email nu va fi publicată.


*