Interfață UART: descriere, utilizare

Majoritatea dezvoltatorilor de sisteme încorporate știu ce este UART: receptor/transmițător asincron universal. Este un periferic de microcontroler care convertește octeții de intrare și de ieșire într-un flux de date serial. Un bit de pornire inițiază începutul transmisiei fluxului de biți, iar un bit de oprire (sau doi) termină cuvântul de date. În plus, pentru a detecta erorile în timpul transmiterii datelor, UART poate introduce un bit de verificare în flux. Figura 1 arată un exemplu tipic de ceea ce inginerii se așteaptă să vadă atunci când transmit date printr-un UART.

USART - Universal Synchronous/Asynchronous Receiver/Transmitter (receptor/transmițător universal sincron/asincron) este un dispozitiv periferic de microcontroler care convertește octeții de intrare și de ieșire într-un flux de date serial. Hm. Definiția USART nu este diferită de UART, cu excepția unui cuvânt adăugat „sincron”. Dar trebuie să existe niște diferențe mai semnificative? În caz contrar, USART ar fi cunoscut pur și simplu ca UART.

Da, există diferențe și sunt foarte semnificative. Prima diferență între USART și UART este modul în care datele seriale pot fi sincronizate. Semnalele de ceas UART sunt generate intern de microcontroler și sunt sincronizate cu fluxul de date la tranziția bitului de pornire. Nu există semnale de ceas de intrare asociate cu datele, așa că pentru a procesa corect datele primite, receptorul trebuie să știe din timp care va fi rata de transfer.

În schimb, USART poate fi configurat să funcționeze în modul sincron. În acest mod, perifericul de expediere generează un semnal de sincronizare, pe care perifericul de recepție îl poate extrage din fluxul de date fără informații a priori despre viteza de transmisie. O altă opțiune este posibilă atunci când este alocată o linie separată pentru semnalul de sincronizare. Utilizarea unui semnal de ceas extern permite USART să funcționeze la viteze de până la 4 Mbit/s - imposibil de atins cu UART-urile standard.

O altă diferență importantă între USART și UART este numărul de protocoale periferice acceptate. UART este simplu și poate oferi doar mici variații ale formatului de bază - numărul de biți de oprire și metoda de control al erorilor (paritate pară sau impară). USART este mult mai complex și este capabil să genereze fluxuri de date compatibile cu multe protocoale standard; IrDA, LIN, Smart Card, Driver Enable pentru RS-485 și Modbus sunt doar câteva dintre ele. Cu toate acestea, USART poate, la fel ca UART, să funcționeze în modul asincron, ceea ce îi permite să genereze exact aceleași tipuri de date seriale așa cum se arată în Figura 1.

Perifericele USART și UART au capacități distinct diferite și pot fi utile în situații diferite, astfel încât un designer poate găsi ambele interfețe într-un microcontroler standard. De exemplu, luați familia de microcontrolere STM32, principala zonă de aplicare a cărei aplicații sunt micro-putere. Printre dispozitivele periferice de pe cipurile acestor dispozitive se numără atât USART, cât și UART. USART este proiectat pentru a face „greutatea” comunicațiilor seriale în perioadele de consum „înalt” de energie. Când microcontrolerul este în modul de repaus sau în modul de consum redus, se utilizează un UART, care este capabil să realizeze comunicații la viteză redusă fără a depăși limita de energie admisă.

Deci, putem spune că USART și UART sunt același lucru? Din punct de vedere tehnic, răspunsul corect este „nu”. USART are de obicei un set de caracteristici îmbunătățite peste UART și este capabil să proceseze fluxuri de date temporizate la viteze de multe ori mai mari decât vitezele UART. Într-adevăr, un USART poate îndeplini toate funcțiile unui UART și, poate, de aceea, în multe aplicații, dezvoltatorii, având în mână toată puterea unui USART, le folosesc ca simple UART, ignorând beneficiile tacării sincrone. Nu este de mirare că atât de mulți oameni folosesc acești termeni ca și cum ar fi sinonimi.

Isteria a adus o mulțime de întrebări despre cum să conectați placa la un computer. Și mulți oameni nici măcar nu înțeleg ce este un UART. Și am decis să vă spun aici ce instrument puternic este.

Routerul se transformă într-un computer dacă conectați o tastatură și afișați la ea prin UART

De la CW la portul COM

Protocolul UART (receptor/transmițător asincron universal) sau, în rusă, UART (receptor/emițător asincron universal) este cel mai vechi și cel mai răspândit astăzi protocol fizic transmiterea datelor. Cel mai faimos din familia UART este protocolul RS-232 (cunoscut în mod popular sub numele de portul COM, același care se află pe computerul dvs.). Aceasta este probabil cea mai veche interfață de computer. A supraviețuit până în zilele noastre și nu și-a pierdut relevanța.

Trebuie spus că interfața UART a apărut inițial în SUA ca mijloc de transmitere a mesajelor telegrafice și au existat cinci biți de lucru (ca în codul Morse). Pentru transmisie au fost folosite dispozitive mecanice. Apoi au venit computerele și codurile ASCII care necesitau șapte biți. La începutul anilor 60, binecunoscutul tabel ASCII de 8 biți a venit să-l înlocuiască, iar apoi formatul de transmisie a început să ocupe un octet întreg, plus trei biți de control.

În 1971, când a început deja boom-ul microcircuitelor, Gordon Bell a realizat cipul UART WD1402A pentru computerele Western Digital PDP. Pe la începutul anilor 80, National Semiconductor a creat cipul 8520. În anii 90, a fost inventat un tampon pentru interfață, care a făcut posibilă transferul de date la viteze mai mari. Această interfață, care nu a suferit practic nicio modificare, a supraviețuit până în prezent.

Fizica interfeței

Pentru a înțelege ce face diferitele interfețe UART similare și diferite, să ne uităm la principiul de funcționare al celui mai popular și iubit protocol, RS-232. Nu voi descrie cu meticulozitate toate complexitățile lucrării sale. S-au scris zeci de megaocteți de articole despre asta, iar dacă știi să folosești Google, poți găsi cu ușurință toate informațiile necesare. Dar vă voi spune elementele de bază, din fericire, cu ele puteți conduce deja totul rece și tot felul de trucuri sunt folosite foarte rar.

Principalele noastre linii de operare sunt RXD și TXD, sau pur și simplu RX și TX. Linia de transmisie este TXD (Date transmise), iar portul RXD (Date primite) este cel de recepție.
Aceste linii de porturi COM sunt utilizate în timpul transmisiei fără control hardware al fluxului de date. Cu un flux hardware, sunt utilizate linii de interfață suplimentare (DTS, RTS etc.). Ieșirea TX a emițătorului este conectată la intrarea RX a receptorului și invers. Principiul de funcționare electric al RS-232 diferă de logica TTL standard de 5 volți. În acest protocol, zeroul logic este de la +3 la +12 volți și, respectiv, unul de la -3 la -12. Intervalul de la -3 la +3 volți este considerat o zonă de incertitudine. Vă rugăm să rețineți că toate tensiunile sunt indicate în raport cu carcasa computerului sau cu masă. Acum, cred că înțelegeți de ce există două tensiuni într-o sursă de alimentare a computerului: -12 și +12 volți. Au fost introduse special pentru funcționarea portului COM.


Recepția semnalului prin RS-232 (preluat din cartea „PC Hardware Interfaces” de M. Guk)

O amplitudine atât de mare a tensiunilor de operare, de până la 24 de volți, este necesară în primul rând pentru imunitatea la zgomot a liniilor de comunicație. Conform standardului, lungimea cablului prin care transportăm datele poate fi de 15 m Deși, în practică, oamenii au reușit să-l facă să funcționeze chiar și la 25 m. Parametrii electrici ai RS-232 sunt principala caracteristică alte protocoale ale familiei UART.

Următoarele caracteristici - formatul mesajului și rata de transfer de date - sunt pe deplin aplicabile tuturor tipurilor de UART și asigură compatibilitatea acestora prin scheme simple de interfață.

Un mesaj standard durează 10 biți. Dar această regulă se aplică numai setărilor standard ale porturilor COM. În principiu, poate fi reconfigurat astfel încât să înțeleagă chiar și interfața One-Wire. În modul inactiv, când linia nu transmite nimic, este într-o stare logică, sau -12 volți. Începutul unei transmisii este indicat prin transmiterea unui bit de pornire, care este întotdeauna zero. Apoi urmează transmisia a opt biți de date. Transmiterea este completată de un bit de paritate și un bit de oprire. Bitul de paritate verifică datele transmise. Bitul de pornire ne spune că transferul de date este complet. Trebuie remarcat faptul că bitul STOP poate ocupa 1, 1,5 și 2 biți. Nu credeți că aceștia sunt biți fracționați, acest număr vorbește doar despre durata lui. Bitul de oprire, ca și bitul de pornire, este zero.


Semnal UART pe ecranul osciloscopului. Bitul de pornire, datele și bitul de oprire sunt vizibile. Mulțumesc lui DIHALT pentru poză

Viteza de operare

Chiar dacă nu ai fost niciodată nevoit să lucrezi cu un port COM înainte, cel puțin în modem ar trebui să cunoști vitezele nominale de funcționare: 9600, 28800, 33600, 56000 etc. Câți biți pe secundă scapă din portul nostru? Uite, să presupunem că viteza noastră este de 9600 de biți pe secundă. Aceasta înseamnă că trimiterea unui bit va dura 1/9600 dintr-o secundă, iar trimiterea unui octet va dura 11/9600. Și această viteză pentru un octet este corectă numai dacă bitul de oprire ocupă un bit. Dacă ocupă doi biți de oprire, atunci transmisia va fi 12/9600. Acest lucru se datorează faptului că, împreună cu biții de date, se transmit și biți speciali: bit de pornire, oprire și paritate. Gama de viteză a portului COM este standardizată. De regulă, toate dispozitivele funcționează la trei viteze standard: 9600, 19200, 115200. Dar sunt posibile și alte opțiuni, chiar și folosind viteze non-standard sau viteze care se modifică în timp - am dat peste acest lucru la debriefing-ul următor dispozitiv.

Un protocol atât de diferit

Există multe tipuri de UART. Nu le voi enumera numele, pentru că dacă vorbești engleză, le vei putea căuta pe Google. Dar cele mai importante nu pot fi ignorate! Permiteți-mi să vă reamintesc că principala diferență dintre interfețe este mediul și metoda de transfer de date. Datele pot fi transmise chiar și prin fibră optică.

A doua cea mai comună interfață după RS-232 este RS-485. Este un standard industrial, iar transmisia se realizează prin cabluri în pereche răsucite, ceea ce îi conferă o bună imunitate la zgomot și viteze de transmisie crescute de până la 4 megabiți pe secundă. Lungimea firului aici poate ajunge la 1 km. De obicei, este folosit în fabrici pentru a controla diverse mașini.

Trebuie spus că IRDA, sau comunicarea în infraroșu, care este încorporată în majoritatea telefoanelor și PDA-urilor, este, de asemenea, în esență un UART. Numai datele sunt transmise nu prin fire, ci folosind radiații infraroșii.

Cardurile SMART (SIM, TV prin satelit, carduri bancare) - chiar dispozitivele pe care orice phreaker care se respectă visează să le fure - folosesc și iubitul nostru UART. Adevărat, există transmisie de date semi-duplex, iar logica de funcționare poate fi de 1,8/3,3 și 5 volți. Se pare că RX este lipit cu TX la un capăt și la celălalt - ca urmare, unul transmite, celălalt ascultă în acel moment și invers. Acest lucru este reglementat de standardul smart card. Astfel știm exact câți octeți vom trimite și câți ne va răspunde cardul. Subiectul merită un articol separat. În general, amintiți-vă că UART este aproape peste tot.


Dispozitive care au un UART la bord, în sensul acelor de ceasornic: mouse, cititor-emulator de carduri SMART, PDA Palm m105, placă de depanare pentru microcontrolerul ATtiny2313 (sau AT89C2051), modem.

Împerecherea interfeței

Mi-am enervat deja ochii cu diferite interfețe, dar cum să lucrez cu ele? Ei bine, este clar cu RS-232 obișnuit, dar, să spunem, cu o sursă de alimentare de 5 volți? Este simplu: există diverse cipuri de conversie gata făcute. De regulă, ele conțin numerele „232” în marcaje. Dacă vedeți un microcip cu aceste numere în diagramă, fiți siguri: cel mai probabil este un convertor. Toate interfețele UART sunt interfațate prin astfel de microcircuite cu o conexiune mică. Nu voi vorbi despre interfețele industriale, ci voi vorbi despre acele convertoare care ne interesează în primul rând.

Cel mai faimos convertor de interfață este un microcircuit dezvoltat de MAXIM, care a primit o parte din numele său (max232). Necesita patru condensatoare de la 0,1 microfarad la 4 microfarad și o sursă de alimentare de 5 volți. În mod uimitor, acest circuit integrat de 5 volți generează o tensiune negativă pentru interfața UART de 5 volți cu RS-232.

Există cipuri pentru conectarea USB la UART, de exemplu, cipul ft232rl. Ubuntu are deja drivere încorporate pentru acest cip. Pentru Windows va trebui să le descărcați de pe site-ul oficial. După instalarea driverelor, în sistem va apărea un port COM virtual și cu acesta puteți controla deja diverse dispozitive. Vă sfătuiesc să nu acceptați aceste microcircuite ca fiind singurele posibile. Există un număr mare de analogi mai ieftini și mai interesanți, așa că căutați pe Google și veți înțelege că lumea UART este cool.

În general, microcircuitele sunt destul de scumpe și uneori te poți descurca cu circuite mai complexe, dar mai ieftine folosind o pereche de tranzistoare.

Ce ne oferă asta?

După cum înțelegeți, interfața UART este prezentă în multe dispozitive care conțin un fel de procesor sau controler. Voi spune chiar mai multe: dacă există un controler acolo, atunci eart este absolut acolo (dar nu poate fi folosit întotdeauna). De regulă, această interfață este utilizată pentru configurarea și verificarea funcționalității dispozitivului. Adesea, producătorul tace despre prezența acestei interfețe în produs, dar nu este greu de găsit: trebuie doar să descărcați manualul procesorului și veți ști unde se află interfața. După ce obțineți acces fizic la hardware prin interfața noastră, îl puteți personaliza după bunul plac sau chiar îl puteți face să funcționeze așa cum aveți nevoie, și nu așa cum a intenționat producătorul. În general, pentru a profita la maximum de un dispozitiv modest. Cunoașterea acestui protocol face, de asemenea, posibilă urmărirea cu urechea la ceea ce se întâmplă în liniile de schimb între diferite procesoare, deoarece producătorii organizează adesea rețele UART întregi în dispozitivul lor. În general, există multe aplicații, principalul lucru este să înțelegeți intuitiv cum se face.

Să actualizăm routerul

Zilele trecute am configurat un router WiFi WL-520GU și, după ce am citit articolul lui Step „Mărirea nivelului pentru un punct de acces” (][ #106), am instalat cu succes Linux acolo. Dar am probleme la montarea partiției de swap a hard diskului meu. Așa că a devenit necesar să ne uităm la jurnalul de boot al punctului de acces - dacă partiția a fost montată sau nu - și, după cum se spune, din mers, pentru a face imediat modificările necesare. Cu al șaselea simț, am bănuit că routerul meu trebuie pur și simplu să aibă un UART. Am luat o șurubelniță Phillips și am început să o demont. Este o chestiune banală, dar există o captură - șuruburile ascunse sunt situate sub picioarele de cauciuc (dacă decideți să o repetați, amintiți-vă că dacă o demontați, vă veți pierde garanția). Ceea ce am văzut a fost o placă destul de plictisitoare, unde totul este „chip-in-one”: un procesor central, care include totul, o memorie RAM externă, o unitate flash, un convertor de putere și un rând de conectori cu butoane. Dar placa avea un suport de contact nelipit, sau mai degrabă, găuri pentru pini. Erau patru. Aici este UART, asta e evident! Chiar și fără multimetru, puteți vedea de pe placă că acele cele mai exterioare sunt de +3,3 volți, iar al doilea este împământat. Contactele din mijloc sunt RX și, respectiv, TX. Care este cea care este ușor de determinat prin împingerea științifică (arderea interfeței este foarte problematică).
Aș dori să remarc imediat că interfața UART arată diferit în fiecare router. În cele mai multe cazuri, acestea nu sunt găuri lipite pe placă. Adevărat, într-un router de la ASUS am găsit chiar și un conector complet etichetat.

Asamblarea convertorului

Pentru a conecta routerul la un computer, trebuie să asociați interfețele RS-232 cu UART al routerului. În principiu, vă puteți conecta la USB folosind cipul FT232RL menționat mai sus - ceea ce am făcut când am verificat prima dată routerul. Dar acest microcircuit este într-un pachet destul de greu de lipit, așa că vom vorbi despre soluții mai simple. Și anume, cipul MAX232. Dacă veți fi alimentat de un router, atunci cel mai probabil vor fi 3,3 volți, deci este mai bine să utilizați MAX3232, care se găsește de obicei în PDA-uri (schema de cablare este ușor de găsit pe Internet). Dar routerul meu avea putere de +5 volți la intrare și am o mare varietate de aceste microcircuite, așa că nu m-am deranjat. Pentru asamblare vom avea nevoie de condensatori de 0,1 uF (4 bucăți) și de microcircuitul în sine. Lipim totul conform schemei tradiționale și începem experimentele.


Surse pentru asamblare

Am instalat imediat un conector tată cu 9 pini la ieșire, astfel încât să pot conecta cu ușurință un cablu de modem nul. Dacă vă amintiți, în zilele DOS, astfel de cabluri erau folosite pentru a face o rețea de două computere și a le tăia la Dyuknyukem. Firul pentru scopurile noastre nu este greu de asamblat. Adevărat, nu va fi un modem nul complet și nu veți putea juca prea mult prin el, dar direcționarea punctului de acces va fi exact! Veți avea nevoie de doi conectori mamă cu 9 pini, carcase pentru ei și un fir, de exemplu, de la un mouse sau o tastatură veche (principalul este că are trei fire). Mai întâi conectăm împământările - acesta este al cincilea contact al conectorilor; Luați orice fir și lipiți-l la al 5-lea pin pe ambele părți. Dar cu RX și TX trebuie să faci ceva mai viclean. De la un capăt al firului lipim la al 3-lea contact, iar de la celălalt - la al 2-lea. La fel și cu al treilea fir, doar de la un capăt lipim la al 2-lea contact, de la celălalt - la al 3-lea. Ideea este că TX trebuie să transmită către RX. Ascundem conectorii lipiți în carcasă - iar cablul null modem este gata!


Pini lipiți pe placa routerului.

Pentru ușurință de instalare, am lipit un conector pin în placa de bază a routerului și un conector invers în suport cu MAX232 și am introdus cartonul ca și cum ar fi un slot. RX și TX ale routerului sunt selectate experimental.


Placă asamblată

Acum trebuie să pornim cipul convertor. Avem deja un fir comun direct în conectorul de pe placa de bază a routerului. Dar + 5 volți este situat chiar la intrarea de alimentare a routerului, în locul în care este conectat adaptorul. Determinăm punctul în care se află 5 volți cu un voltmetru, măsurând diferite noduri în raport cu masa routerului.
Conectați alimentarea. Pornim și începem experimentele noastre rău intenționate.


Ardeți o gaură pentru ca firele să iasă


Port COM lipit


Toată lumea este aici. Vă rugăm să rețineți că firul roșu de alimentare merge la conectorul adaptorului de router. Nodul din interior se face pentru a rupe firele lipite cu o smucitură.

Configurarea terminalului

Trebuie să setăm un program terminal. În Windows, totul este destul de simplu: lansați Hyper Terminal, dezactivați verificarea datelor software și hardware, setați viteza la 115200 și un bit de oprire. Dar în Linux, lucrurile sunt puțin mai complicate. Am Ubuntu și vă voi spune despre asta. În primul rând, află cum se numește portul COM în ansamblul tău. În cazul meu, COM1 a fost ttyS0 (dacă utilizați cipul FT232, de exemplu, se va numi ttyUSB0). Pentru a lucra cu el, am folosit software-ul minicom.

Rulați-l cu parametrii: minicom -l -8 -c on -s. Apoi, selectați „Setări portului serial”:
Port serial /dev/ttyS0

* Baud/paritate/biți 115200 8N1
* Controlul fluxului hardware - nr
* Controlul fluxului software - nr

Salvați setările. Software-ul va încerca să inițializeze modemul - nu acordați atenție. Pentru a deschide meniul, apăsați . Acolo puteți modifica setările, de exemplu: porniți/dezactivați ecoul - E.
Setări

Nu recomand conectarea cipul convertor la router pentru a verifica funcționalitatea acestuia. Este permis doar să luați mâncare din el. Testul este foarte simplu - trebuie să faci legătura între RX și TX. Mai întâi, puneți legătura între al 2-lea și al 3-lea contact din portul COM - verificați setările terminalului. Scrii ceva pe tastatură: dacă personajele revin, atunci totul este OK. Verifică și cablul, aceleași contacte. Apoi conectați microcircuitul și puneți un jumper la ieșire. Subliniez acest lucru pentru că, de exemplu, am avut probleme și nimic nu a funcționat până când am verificat totul și am găsit un bug.

După toate setările, îl puteți conecta în siguranță la router și căutați RX-TX pe router, eliminând periodic alimentarea de la acesta. Dacă totul este făcut corect, atunci când este aplicată alimentarea, veți vedea jurnalul de pornire al routerului. Felicitări, acum ai root hardware complet, ca și cum ai fi așezat la un monitor cu o tastatură de router.


Logare de pornire a routerului în programul minicom

Înot autonom

De acord, a face același lucru printr-un program terminal care este mai convenabil de făcut prin SSH nu este gheață. Am vrut să transform routerul într-un computer Linux independent, cu propria sa arhitectură inteligentă. Pentru a face acest lucru, este necesar ca datele de la tastatură să fie transmise prin UART și afișate pe monitor prin intermediul acesteia. Lipirea și dezvoltarea dispozitivului a fost leneșă. Atunci a venit ideea de a folosi PDA-ul, care strângea praf și era inactiv, în aceste scopuri. De fapt, handheld-ul va juca rolul de tastatură și controler de afișare și va servi și ca interfață pentru interfețe.

Mai întâi am încercat vechiul Palm m100. Dar se pare că are o memorie tampon foarte mică, iar cantitatea de date care vin de la router l-a făcut să se simtă rău. Am luat altul - un PDA industrial, cu port COM normal și terminal terminal. L-am conectat, l-am introdus în dock și, ca urmare, am primit un mic computer Linux. În principiu, în loc de un PDA industrial costisitor, majoritatea dispozitivelor portabile care rulează sistemul de operare WinCE vor face principalul lucru să găsească software-ul de terminal adecvat.


computer Linux :)

Rezultate

Deci, am arătat un mic exemplu de utilizare a UART. Dacă intrați în acest protocol, atunci credeți-mă, veți deveni pur și simplu stăpânul diferitelor piese hardware. Este disponibil aproape peste tot și prin el puteți conecta lucruri aparent complet diferite. De exemplu, cu unele setări minore, un telefon mobil este conectat la același router prin EART și internetul este distribuit de la acesta. În general, există o mulțime de aplicații. Nu vă fie teamă să experimentați, să vă educați și să vă realizați ideile.

Această postare este o versiune editată pentru Habr a articolului meu din Hacker nr. 05/09 „Instrumentul principal al unui phreaker”.

Literatură:
1. Mikhail Guk „Interfețele hardware pentru PC” este pur și simplu o biblie a elevilor pe computerele personale.

UART - Universal Asynchronous Receiver-Transmitter, sau în rusă Universal Asynchronous Receiver-Transmitter - UART. Folosit pentru a organiza comunicarea între un computer și diverse dispozitive digitale din electronice. Interfața convertește datele transmise în cod serial, astfel încât să poată fi transmise pe o linie digitală către un alt dispozitiv electronic. Există încă o descriere directă a protocolului UART, dar descrierea sa indirectă poate fi văzută în standardele pentru binecunoscutele protocoale fizice RS-232, RS-422, RS-423, RS-485

Care este diferența dintre aceste interfețe. Într-o interfață serială, datele sunt trimise pe un fir secvențial, unul după altul, în timp ce o interfață „paralelă” are o magistrală formată din mai multe fire, de-a lungul cărora părți ale mesajului sunt transmise în paralel.

Principalul avantaj al transmisiei paralele este că un grup de biți este trimis odată. În plus, transmisia paralelă a datelor este utilizată și în interiorul microcontrolerului, deci nu este necesară nicio conversie suplimentară. Dar există și dezavantaje semnificative. Principalul este că biții de-a lungul firelor pot să nu ajungă în paralel și sunt necesare soluții de circuite suplimentare pentru a primi mesaje precise. Acest lucru limitează viteza de transfer.

În transmisia în serie, biții de date transmise trebuie mai întâi convertiți în cod paralel, ceea ce necesită timp suplimentar. Dar, pe de altă parte, nu este nevoie să sincronizați secvența de biți de-a lungul fiecărui fir individual, ceea ce în acest caz crește posibilitățile de transfer de date de mare viteză.

Transceiver-ul Universal Asynchronous - UART a fost folosit de la începutul anilor 60 ai secolului trecut și de atunci a suferit o modernizare serioasă. Chiar și în secolul 21, protocoalele seriale UART reprezintă încă una dintre principalele metode de schimb de biți între diferite dispozitive digitale pe distanțe scurte.

UART este baza a ceea ce a fost utilizat atât de larg în trecut. În forma sa cea mai simplă, interfața UART constă din trei fire: transmisie, recepție și masă.


Un dezavantaj semnificativ al unui transceiver asincron universal constă în faptul că nu este posibil să se determine care dintre dispozitivele digitale este master și care este slave (master / slave). De obicei, aceasta determină cine proiectează circuitul poate numi acest fir ca TX și poate specifica funcționarea dispozitivului, conform figurii de mai jos:


În acest caz, microcontrolerul primește și transmite date. Și poți face așa:


În conformitate cu această schemă, microcontrolerul transmite întotdeauna (TX) la receptor (RX) și invers. Care dintre cele două scheme este încă corectă? Se pare că ambele, totul depinde doar de producătorul cipului și de dispozitivul digital finit.

Atenție, TX conectat la TX și RX-RX va arde cipul în majoritatea cazurilor, deci acesta este un bun exemplu de citire a documentației înainte de a conecta cipurile prin UART, deoarece există mai multe metode de conectare.

Dacă receptorul și transmițătorul sunt pe aceeași placă de circuit imprimat, atunci nivelul semnalului în timpul recepției și transmisiei este aproape egal cu nivelul tensiunii de alimentare a microcontrolerului. Să presupunem că nivelul logic - „1” va fi transmis cu un potențial de 3,3 V și zero, cu un potențial de cel mult 0,5 volți. Odată cu transmiterea semnalului pe distanțe mari, problemele încep să apară sub formă de distorsiuni ale semnalului și cresc, apar erori de transmisie, până la o oprire completă.

Pentru a elimina astfel de probleme, se adaugă buffer-uri suplimentare la liniile de transmisie și recepție, care amplifică semnalul. După aceasta, ele pot fi transmise pe zeci de metri fără pierderi de informații. Dar în curent continuu, o tensiune de -3V..-15V este utilizată pentru a transmite nivelul unei unități logice, iar pentru „0” - +3V la +15V.


În loc de sincronizare, UART utilizează un așa-numit „bit de pornire” care pregătește circuitul digital pentru transmiterea mesajelor. După bitul de pornire există date, iar apoi un „bit de oprire” este trimis la linie, indicând finalizarea transferului de informații. Împreună există 10 biți: primul este bitul de pornire, 8 biți de date și ultimul bit de oprire, vezi oscilograma transmisiei de date prin protocolul de interfață UART în figura de mai jos.


Biții sunt transmiși la o anumită rată de transmisie, care este măsurată în biți pe secundă sau, baud. Deci 9600 baud este echivalent cu 9600 bps. Și din moment ce transmitem 10 biți pe mesaj, asta înseamnă că la această viteză putem transmite 960 de mesaje într-o secundă.

Valoarea ratei de transmisie nu este transmisă împreună cu mesajul, atunci ratele de transmisie egale trebuie să fie presetate în receptor și transmițător. Interfața UART permite desincronizarea cronometrului cu până la 5%. În acest interval, poate primi și primi date de informații corecte.

Putem spune cu 100% încredere că fiecare microcontroler modern include o interfață serială universală - UART. Știind cum să lucrați cu acest port, puteți coordona funcționarea dispozitivelor electronice vechi și moderne, puteți transmite sau primi date către diverse dispozitive electronice.

În microcontrolerele moderne, în loc de o interfață UART, acestea folosesc un standard USART pe deplin compatibil (emițător-receptor universal asincron/sincron).

USART este un UART mai flexibil, cu funcții suplimentare. În USART, puteți ajusta lungimea cuvântului la intervale mai mari (de la 5 la 9) decât în ​​UART (de la 8 la 9). În USART, este posibilă atât transmisia de date sincronă, cât și asincronă (în UART se realizează numai asincron). Pentru transmisia sincronă, pe lângă două linii - date și putere, este utilizată o magistrală suplimentară (XCK) cu semnal de ceas. Cu această configurare, USART se intersectează deja cu interfața SPI și poate fi folosit ca „master” în interfața SPI.

Să luăm în considerare cazul clasic când interfața este asincronă (adică cu o linie de sincronizare lipsă).

Transmiterea datelor în interfața UART are loc câte un bit la intervale de timp egale. Această perioadă este stabilită de viteza UART și pentru un anumit tip de conexiune este indicată în baud, care corespunde numărului de biți pe secundă. În electronică există o gamă general acceptată de viteze tipice: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400;460800; 921600 baud;

Viteza (S, baud) și durata biților (T, secunde) sunt legate de formula binecunoscută

Octeții de date sunt trimiși în pachete (primul bit vine înainte de octetul de date și al doilea bit vine după, numărul de biți este opțional)


Pentru a primi și transmite date în interfața UART, sunt utilizate doar două linii de date și masă:

magistrala de transmitere a datelor (TXD sau TX);
linie de recepție de date (RXD sau RX);
pământ (GND).

Nivelurile logice unu și zero sunt similare cu nivelurile tipice TTL:

Buturuga. "1" - +5 volți;
Buturuga. "0" 0 Volți.

Un tip de interfață UART - RS-485

Rețelele construite pe baza interfețelor RS-485 și RS-422 sunt transceiver-uri conectate folosind cabluri torsadate. RS-485 se bazează pe principiul transmisiei diferenţiale (echilibrate) a datelor. Baza sa se bazează pe transmiterea unui semnal pe două fire. Mai mult, primul fir (A) al interfeței poartă semnalul original, iar al doilea fir poartă copia sa inversă. Cu cuvinte simple, dacă A este „1”, atunci B este „0” și invers, adică există întotdeauna o diferență de potențial între cele două fire ale unei perechi răsucite: la nivelul „1” este pozitiv, la „ zero” este negativ.

Interfața RS-232 (standard EIA) a fost creată pentru a interfața un computer personal (PC) și un echipament de transmisie a datelor (modem) folosind modul de transmisie sincron-asincron pe distanțe de până la câțiva metri. Standardul oferă două tipuri de conectori DB25 și DB9 cu 8 semnale. Datele sunt transmise prin intermediul a 2 circuite independente RxD, transceiver de interfață TxD (UART1, UART2 în Fig. 1.14) și permit utilizarea modului de schimb duplex, restul de 6 semnale sunt destinate controlului schimbului de date. În implementările moderne ale interfeței, aceste semnale nu sunt utilizate; Algoritmii de control aplicați, în loc să genereze semnale de control, transmit mesaje de control împreună cu datele de bază prin circuitele de semnal RxD, TxD.

Orez. 1.14. interfata RS232

Pentru funcțiile de gestionare și control al datelor, puteți utiliza algoritmi și instrumente ale protocoalelor standard ale stratului de legătură. Acești algoritmi de comandă și control sunt implementați ca o extensie a interfeței UART folosind formatul său standard de mesaj, de obicei pe un singur octet. Inițializarea cu selecția parametrilor și a modurilor trebuie efectuată înainte de a începe lucrul, interfața nu conține niciun mijloc de inițializare automată.

În prezent, interfața este utilizată ca facilitate de nivel fizic în interfețe punct la punct cu rate scăzute de transfer de date de 2,4 – 115,2 kbit/s. Cel mai des folosit este modul asincron cu un format de mesaj separat: bit de pornire – 5-8 biți de date – bit de oprire (cadru UART). Biții de pornire și oprire marchează începutul și sfârșitul unui mesaj și permit sincronizarea transceiver-urilor și controlul lungimii mesajului; bitul de pornire este un semnal logic zero pentru 1 ciclu de ceas, iar bitul de oprire este un semnal logic.

Modul de transmitere a datelor duplex presupune funcționarea independentă a receptorului și emițătorului interfeței. Prin urmare, acestea conțin circuite de control independente și registre de date. De obicei, scrierea unui octet de date în registrul transmițătorului începe procedura de transmitere a cadrului UART, iar finalizarea recepționării unui cadru UART generează un semnal că octetul de date este gata pentru a fi citit din registrul receptorului.

Datorită algoritmilor de control simpli, versatilității și posibilității de schimb de date duplex, interfața UART este utilizată pe scară largă ca interfață de comunicație serială standard între diferite echipamente de automatizare. De exemplu, microcontrolerele AVR, PIC și multe alte familii conțin implementare hardware încorporată a interfeței UART, prin care se pot conecta dispozitive externe care oferă suport pentru alte interfețe moderne LVDS, 1-W, IrDA, RS-485, CAN, etc.

Unele caracteristici și caracteristici ale microcircuitelor UART de la această companie sunt prezentate în Fig. 1.16.

Dacă hardware-ul utilizat nu conține o interfață UART încorporată, puteți utiliza cipuri UART speciale. Aceste microcircuite (Fig. 1.15) convertesc formatul de date paralel în serie, asigură stocarea datelor în dispozitive de stocare tampon, generează semnalele necesare de control al interfeței, întrerup solicitările de procesare a datelor transmise de interfață etc. EXAR este un lider recunoscut în domeniu

producția de cipuri UART.

Orez. 1.15. Transfer de date folosind cipuri UART

Orez. 1.16. Clasificarea cipurilor EXAR UART

Cel mai simplu UART pe 8 biți este cipul ST16C450 (Fig. 1.17).

Orez. 1.17. Schema bloc ST16C450

Acest dispozitiv este pe deplin compatibil cu standardul industrial 16450 și are următoarele caracteristici:

Control separat al recepției și transmisiei;

Viteza de transmisie controlată de software (de la 50 bps la 1,5 Mbps);

Semnale de control modem (CTS, RTS, DSR, DTR, RI și CD);

Lungimea programabilă a caracterelor transmise (5, 6, 7 și 8 biți);

Generarea și detectarea biților de paritate;

Consum redus de curent – ​​1,2 mA.

Pe lângă UART-urile tradiționale cu o magistrală paralelă de 8 biți, EXAR produce UART-uri pe 32 de biți pentru lucrul cu magistrala PCA. Bufferele interne FIFO sunt proiectate pentru a descărca nucleul procesorului și pentru a reduce numărul de întreruperi pentru întreținerea UART. De exemplu, un cip UART XR16C85x cu un FIFO de 128 de octeți poate stoca o întreagă pagină de date, mărind timpul de transfer fără a întrerupe procesorul.

S-a remarcat anterior că interfața RS-232 prevede utilizarea a două tipuri de conectori: DB9 și DB25. Atribuirea contactelor conectorului este dată în tabel. 1.2.

Tabelul 1.2

Contact nr.

Contact nr.

Scop

Detector de semnal de linie (purtător).

Primirea datelor

Transfer de date

Pregătirea terminalului

Pământ de semnal

Pregătirea datelor

Cerere de transfer

Gata de transfer

Indicator de apel

Destul de des, semnalele de interfață sunt generate cu niveluri logice standard (0-5 V), iar conform protocolului RS-232, nivelurile de tensiune sunt ±12 V. Transceiver-uri pentru conversia nivelurilor fizice ale semnalelor de interfață UART, numite drivere de port COM, sunt produse de mulți producători de circuite integrate. Microcircuitele diferă în ceea ce privește numărul de receptoare și emițătoare, tensiunile de alimentare, consumul de energie, viteza maximă de transmisie, precum și prezența condensatoarelor încorporate și alți parametri.

Liderii în producția de microcircuite în acest domeniu sunt Maxim și Analog Devices. Lista de microcircuite driver/receptoare de linie RS-232 fabricate de Maxim constă din 150 de articole, un fragment din listă este dat în tabel. 1.3. O listă similară pentru dispozitivele analogice este dată în tabel. 1.4.

În aplicațiile standard, interfața RS-232 este utilizată pentru a conecta două dispozitive. Unul dintre aceste dispozitive este un transmițător, iar celălalt este un receptor. În acest sens, semnalele liniei de comunicație RS-232 sunt generate și procesate diferit de receptor și transmițător.

Viteza (kbps)

Modul de economisire a energiei

stare RxD

Condensatoare

Tensiune de alimentare (V)

Consum de curent (mA)

Viteza (kbps)

Modul de economisire a energiei

stare RxD

Condensatoare

Tensiune de alimentare (V)

Consum de curent (mA)

Dispozitivul emițător (de exemplu, un computer) dintr-un sistem de transmisie de date este de obicei numit echipament terminal de date sau DTE (Echipament terminal de date), iar receptorul (de exemplu, un modem) este numit dispozitiv de echipament de comunicație de date sau DCE (Data). Echipamente de comunicare). Direcția de transmisie a semnalului între DTE și DCE este prezentată în tabel. 1.5.

După cum se vede din tabel. 1.5, fiecare semnal este scos pentru un dispozitiv și intrare pentru altul. De exemplu, pentru un dispozitiv DTE, semnalul de date de transmisie TD este o ieșire, iar pentru un dispozitiv DCE, semnalul TD este o intrare. Dispozitivul DCE generează semnalul DCD (dacă este un modem, atunci detectează prezența unui semnal purtător în linia telefonică), iar dispozitivul DTE primește acest semnal etc.

dispozitiv DTE

Direcția de transmisie

dispozitiv DCE

- * ¦¦

În unele cazuri, se pune sarcina de a asigura funcționarea interfeței RS-232 între două dispozitive de același tip, de exemplu, este necesar să se furnizeze o conexiune DTE-DTE (computer-to-computer). Conexiunile dintre conectori în acest caz sunt determinate de programele de comunicare utilizate de calculatoare. Într-o configurație minimă, cablul care conectează cele două dispozitive trebuie să conțină trei fire: unul pentru combinarea masei semnalului SG, al doilea și al treilea pentru transmiterea semnalelor TD și RD (Fig. 1.18), iar conexiunea încrucișată a semnalelor trebuie să fie efectuat. Un astfel de cablu, de exemplu, poate asigura o conexiune între două computere folosind programul Hyper Terminal încorporat în Windows.

Dacă computerul „presupune” că funcționează cu un modem, atunci, în acest caz, puteți utiliza un cablu de modem nul (Fig. 1.19). În această figură, numerele indică contactele conectorului DB25M, iar linia întreruptă indică firul „masă de protecție” - GND.

Orez. 1.18. Opțiune RS-232 cu trei fire

Orez. 1.19. Conexiuni null modem pentru cabluri RS-232

Alegerea opțiunii de conectare este determinată de condițiile de generare a semnalelor de control și de testare ale dispozitivelor DTE. Trebuie remarcat faptul că opțiunea de cablu „a” este cea mai populară și ar trebui utilizată în cazurile în care nu există suficiente informații despre caracteristicile de implementare ale interfețelor dispozitivelor conectate. Opțiunea de cablu „g” vă permite să „convingeți” computerul că dispozitivul DTE extern este întotdeauna gata să primească și să transmită semnale.

Orez. 1.23. Circuit de alimentare pentru dispozitivul I/O de la portul COM

Articole și Lifehacks

Mulți utilizatori sunt interesați de tot ce ține de conectarea plăcii la un PC. În același timp, se întreabă care sunt setările uart din telefon. Articolul nostru este dedicat în mod special acestui instrument, precum și aplicării sale în domeniul tehnologiilor mobile.

Ce este UART într-un telefon și de ce trebuie să-l configurați?

Din engleză, UART sau receptor-transmițător asincron universal, poate fi tradus ca un mijloc universal asincron de recepție și transmitere. În acest moment, acesta este nu numai cel mai cunoscut, ci și un protocol de transfer de informații destul de vechi.

Cel mai comun protocol UART este RS-232, adică un port com instalat pe un computer desktop. Particularitatea sa constă în faptul că nici astăzi nu își pierde relevanța și este utilizat în mod activ. Standardul industrial RS-485 este, de asemenea, cunoscut pe scară largă.

Să adăugăm că UART1 și UART2 sunt folosite pentru a conecta cablul de firmware, precum și pentru conectarea la un computer. Conectorul de sistem al dispozitivului nostru celular conține porturi precum UART1, UART2 și USB. Să adăugăm că portul infraroșu este, de fapt, și un UART. Singura diferență este în metoda de transmitere a datelor (nu prin cablu, ci în infraroșu). Cardurile SIM folosesc și acest protocol, deși oferă o metodă semi-duplex de transmitere a informațiilor.

Cererea de împerechere a interfeței merită o atenție specială. Astăzi există microcircuite speciale pentru asta. Un bun exemplu este cipul ft232rl, conceput pentru a interfața UART cu USB. Cu toate acestea, nu ar trebui să vă blocați, deoarece există mijloace analogice de interfață mai ieftine, dar foarte interesante.

De ce este necesară interfața UART? De regulă, cu acesta putem verifica și ajusta performanța dispozitivului nostru.

Adesea, producătorii de echipamente mobile nu se concentrează pe suportarea acestui protocol. Pentru a verifica acest lucru cu siguranță, este recomandat să descărcați manualul pentru procesorul care are un UART. Vom putea nu numai să obținem acces fizic la dispozitiv folosind protocolul nostru, ci și să configuram funcționarea acestuia la discreția noastră - adesea deloc în modul în care a intenționat producătorul.

Deci, am aflat care este această interfață. Cu toate acestea, numai instrucțiunile detaliate de configurare ne pot oferi o înțelegere a setărilor uart într-un telefon.

Instrucțiuni pentru configurarea UART în telefon

Pentru a configura protocolul, apelați meniul de inginerie al telefonului formând *#3646633#, apoi mergeți la următorul meniu. Pentru a face acest lucru, accesați „Dispozitiv” > „Setare UART” > „Setare UART”.

Vedem elemente precum „PS Config” și „TST Config”. Primul punct este responsabil pentru schimbul de informații cu un computer printr-un cablu USB, iar al doilea este necesar pentru depanarea software-ului, datorită căruia dezvoltatorii identifică defecțiuni.

Fiecare articol conține parametri pentru redirecționarea fluxului către dispozitiv (UART 1-3 sau USB) și viteza unui astfel de flux. Nu avem nevoie de portul de testare, adică „TST Config”, și nu îl atingem. În ceea ce privește „PS Config”, trebuie să aveți grijă de anumite setări. Setați valoarea la „UART1”. Driverul de pe un PC indică de obicei rata de biți (de exemplu, 115200). Setați aceeași viteză pentru UART1 (sau „Auto”).

De asemenea, puteți seta „Port USB” în loc de UART1, cu toate acestea, în acest caz, atunci când conectați un cablu USB, nu este garantat că modul USB va fi afișat. Reporniți dispozitivul și încercați din nou conectarea.