- Tipuri de protocoale de comunicare
- Moduri de transmisie în comunicarea în serie
- Sincronizare ceas
- Alți termeni legați de comunicarea în serie
- Protocoale seriale sincrone
- Protocoale seriale asincrone
- Concluzie
Înainte de a începe cu protocoalele de comunicare în serie, Să rupem terminologia în trei părți. Comunicarea este foarte bine cunoscut o terminologie care implică schimbul de informații între două sau mai multe medii. În sistemele încorporate, comunicarea înseamnă schimbul de date între două microcontrolere sub formă de biți. Acest schimb de biți de date în microcontroler este realizat de un set de reguli definite cunoscute sub numele de protocoale de comunicații. Acum, dacă datele sunt trimise în serie, adică unul după altul, atunci protocolul de comunicație este cunoscut sub numele de Serial Communication Protocol. Mai precis, biții de date sunt transmiși unul câte unul în mod secvențial pe magistrala de date sau pe canalul de comunicație în Comunicație Serială.
Tipuri de protocoale de comunicare
Există diferite tipuri de transfer de date disponibile în electronica digitală, cum ar fi comunicarea în serie și comunicarea în paralel. În mod similar, protocoalele sunt împărțite în două tipuri, cum ar fi Protocolul de comunicare în serie și Protocoalele de comunicare în paralel. Exemple de protocoale de comunicații paralele sunt ISA, ATA, SCSI, PCI și IEEE-488. În mod similar, există mai multe exemple de protocoale de comunicații seriale, cum ar fi CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire și SATA etc.
În acest articol, vor fi discutate diferitele tipuri de protocoale de comunicare în serie. Comunicarea în serie este cea mai utilizată abordare pentru a transfera informații între periferice de procesare a datelor. Fiecare dispozitiv electronic, indiferent dacă este computer personal (PC) sau mobil, rulează pe comunicații seriale. Protocolul este forma sigură și fiabilă de comunicare având un set de reguli adresate de gazda sursă (expeditor) și gazda de destinație (receptor) asemănătoare comunicării paralele.
Moduri de transmisie în comunicarea în serie
După cum sa menționat mai sus, în comunicarea serială datele sunt trimise sub formă de biți, adică impulsuri binare și este bine cunoscut faptul că, unul binar reprezintă logica ÎNALT și zero reprezintă logica LOW. Există mai multe tipuri de comunicații seriale, în funcție de tipul de mod de transmisie și de transfer de date. Modurile de transmisie sunt clasificate ca Simplex, Half Duplex și Full Duplex.
Metoda Simplex:
În metoda simplex, oricare dintre medii, adică expeditorul sau receptorul, poate fi activ la un moment dat. Deci, dacă expeditorul transmite datele, receptorul poate accepta doar și invers. Deci metoda simplex este o tehnică de comunicare unidirecțională. Exemplele binecunoscute ale metodei simplex sunt Televiziunea și Radio.
Metoda jumătate duplex:
În metoda duplex, atât expeditorul, cât și receptorul pot fi active, dar nu în același timp. Deci, dacă expeditorul transmite, atunci receptorul poate accepta, dar nu poate trimite și în mod similar invers. Exemplele binecunoscute ale semi-duplexului sunt internetul în care utilizatorul trimite o cerere de date și le primește de la server.
Metoda duplex complet:
În metoda full duplex, atât receptorul, cât și emițătorul își pot trimite date reciproc în același timp. Exemplul binecunoscut este telefonul mobil.
În afară de aceasta, pentru transmiterea adecvată a datelor, ceasul joacă un rol important și este una dintre sursele principale. Defecțiunea ceasului are ca rezultat transmiterea neașteptată a datelor, chiar și uneori pierderea datelor. Deci, sincronizarea ceasului devine foarte importantă atunci când se utilizează comunicații seriale.
Sincronizare ceas
Ceasul este diferit pentru dispozitivele seriale și este clasificat în două tipuri, respectiv. Interfață serială sincronă și interfață serială asincronă.
Interfață serial sincronă:
Este o conexiune punct-la-punct de la un maestru la un sclav. În acest tip de interfață, toate dispozitivele folosesc o singură magistrală CPU pentru a partaja date și ceas. Transmiterea datelor devine mai rapidă cu aceeași magistrală pentru a partaja ceasul și datele. De asemenea, nu există nicio potrivire în rata de transmisie în această interfață. În partea transmițătorului, există o deplasare a datelor pe linia serială, oferind ceasul ca semnal separat, deoarece nu există start, stop și biți de paritate sunt adăugați la date. În partea receptorului, datele sunt extrase folosind ceasul furnizat de emițător și convertește datele seriale înapoi în forma paralelă. Exemplele cunoscute sunt I2C și SPI.
Interfață serial asincronă:
În interfața serială asincronă, semnalul de ceas extern este absent. Interfețele seriale asincrone pot fi văzute mai ales în aplicații pe distanțe lungi și se potrivesc perfect pentru comunicații stabile. În interfața serială asincronă, absența sursei de ceas externe îl face să se bazeze pe mai mulți parametri, cum ar fi controlul fluxului de date, controlul erorilor, controlul ratei de transmisie, controlul transmisiei și controlul recepției. Pe partea transmițătorului, există o deplasare a datelor paralele pe linia serial folosind propriul ceas. De asemenea, adaugă biții de pornire, oprire și verificare a parității. Pe partea receptorului, receptorul extrage datele folosind propriul ceas și convertește datele seriale înapoi în forma paralelă după ce a eliminat biții de pornire, oprire și paritate. Exemplele binecunoscute sunt RS-232, RS-422 și RS-485.
Alți termeni legați de comunicarea în serie
În afară de sincronizarea ceasului, există anumite lucruri de reținut atunci când transferați date în serie, cum ar fi Baud Rate, selectarea biților de date (încadrare), sincronizarea și verificarea erorilor. Să discutăm pe scurt acești termeni.
Baud Rate: Baud rate este rata la care datele sunt transferate între emițător și receptor sub formă de biți pe secundă (bps). Cea mai utilizată rată de transmisie este 9600. Dar există și o altă selecție a ratei de transmisie, cum ar fi 1200, 2400, 4800, 57600, 115200. De asemenea, pentru comunicarea datelor, rata de transmisie trebuie să fie aceeași atât pentru emițător, cât și pentru receptor.
Încadrare: Încadrarea se referă la numărul de biți de date care trebuie trimiși de la emițător la receptor. Numărul de biți de date diferă în cazul aplicației. Majoritatea aplicației folosește 8 biți ca biți de date standard, dar poate fi selectat și ca 5, 6 sau 7 biți.
Sincronizare: biții de sincronizare sunt importanți pentru a selecta o parte din date. Acesta indică începutul și sfârșitul biților de date. Transmițătorul va seta biții de pornire și oprire pe cadrul de date, iar receptorul îl va identifica în consecință și va efectua procesarea ulterioară.
Controlul erorilor: Controlul erorilor joacă un rol important în timp ce comunicarea serială, deoarece există mulți factori care afectează și adaugă zgomotul în comunicația serială. Pentru a scăpa de această eroare, se utilizează biții de paritate, unde paritatea va verifica paritatea pară și impară. Deci, dacă cadrul de date conține numărul par de 1, atunci este cunoscut sub numele de paritate pară și bitul de paritate din registru este setat la 1. În mod similar, dacă cadrul de date conține număr impar de 1, atunci este cunoscut sub numele de paritate impar și șterge bit de paritate ciudat în registru.
Protocolul este la fel ca un limbaj comun pe care sistemul îl folosește pentru a înțelege datele. Așa cum s-a descris mai sus, protocolul de comunicație serial este împărțit în tipuri, adică Sincron și Asincron. Acum ambele vor fi discutate în detaliu.
Protocoale seriale sincrone
Tip sincron de protocoale seriale, cum ar fi SPI, I2C, CAN și LIN sunt folosite în diferite proiecte, deoarece este una dintre cele mai bune resurse pentru periferice la bord. De asemenea, acestea sunt protocoalele utilizate pe scară largă în aplicațiile majore.
Protocolul SPI
Interfața serială periferică (SPI) este o interfață sincronă care permite interconectarea mai multor microcontrolere SPI. În SPI, sunt necesare fire separate pentru date și linia de ceas. De asemenea, ceasul nu este inclus în fluxul de date și trebuie furnizat ca un semnal separat. SPI poate fi configurat fie ca master, fie ca slave. Cele patru semnale SPI de bază (MISO, MOSI, SCK și SS), Vcc și Ground fac parte din comunicarea datelor. Deci, are nevoie de 6 fire pentru a trimite și primi date de la sclav sau master. Teoretic, SPI poate avea un număr nelimitat de sclavi. Comunicarea datelor este configurată în registre SPI. SPI poate livra până la 10 Mbps de viteză și este ideal pentru comunicarea de date de mare viteză.
Majoritatea microcontrolerelor au suport încorporat pentru SPI și pot fi conectate direct la dispozitivul compatibil SPI:
- Comunicare SPI cu microcontroler PIC PIC16F877A
- Cum se utilizează comunicarea SPI în microcontrolerul STM32
- Cum se folosește SPI în Arduino: comunicare între două plăci Arduino
Comunicare în serie I2C
Comunicare pe două linii între circuit integrat (I2C) între diferite circuite integrate sau module în care două linii sunt SDA (Serial Data Line) și SCL (Serial Clock Line). Ambele linii trebuie conectate la o sursă de alimentare pozitivă utilizând un rezistor de tragere. I2C poate oferi viteză de până la 400Kbps și folosește un sistem de adresare de 10 biți sau 7 biți pentru a viza un anumit dispozitiv de pe magistrala i2c, astfel încât să poată conecta până la 1024 de dispozitive. Are o comunicare de lungime limitată și este ideală pentru comunicarea la bord. Rețelele I2C sunt ușor de configurat, deoarece utilizează doar două fire, iar dispozitivele noi pot fi pur și simplu conectate la cele două linii comune de magistrală I2C. La fel ca SPI, microcontrolerul are, în general, pini I2C pentru a conecta orice dispozitiv I2C:
- Cum se utilizează comunicarea I2C în microcontrolerul STM32
- Comunicare I2C cu microcontroler PIC PIC16F877
- Cum se folosește I2C în Arduino: comunicare între două plăci Arduino
USB
USB (Universal Serial Bus) are un protocol larg, cu diferite versiuni și viteze. La un singur controller host USB pot fi conectate maximum 127 de periferice. USB funcționează ca dispozitiv „plug and play”. USB-ul este utilizat în aproape dispozitive precum tastaturi, imprimante, dispozitive media, camere, scanere și mouse. Este proiectat pentru instalare ușoară, date mai rapide, mai puține cabluri și schimburi la cald. A înlocuit porturile seriale și paralele mai voluminoase și mai lente. USB utilizează semnalizarea diferențială pentru a reduce interferențele și pentru a permite transmisia de mare viteză pe o distanță mare.
O magistrală diferențială este construită cu două fire, una dintre ele reprezintă datele transmise, iar cealaltă completarea acesteia. Ideea este că tensiunea „medie” de pe fire nu conține nicio informație, rezultând mai puține interferențe. În USB, dispozitivelor li se permite să extragă o anumită cantitate de energie fără a întreba gazda. USB utilizează doar două fire pentru transferul de date și sunt mai rapide decât interfața serială și paralelă. Versiunile USB acceptă viteze diferite, cum ar fi 1,5 Mbps (USB v1.0), 480 Mbps (USB 2.0), 5 Gbps (USB v3.0). Lungimea cablului USB individual poate ajunge până la 5 metri fără hub și 40 de metri cu hub.
POATE SA
Rețeaua de control a zonei (CAN) este utilizată, de exemplu, în industria auto, pentru a permite comunicarea între ECU-uri (unități de control al motorului) și senzori. Protocolul CAN este robust, low-cost și bazat pe mesaje și acoperă în multe aplicații - de exemplu, mașini, camioane, tractoare, roboți industriali. Sistemul de magistrală CAN permite diagnosticarea și configurarea centralizată a erorilor pe toate ECU-urile. Mesajele CAN sunt prioritizate prin ID-uri, astfel încât ID-urile cu cea mai mare prioritate să nu fie întrerupte. Fiecare ECU conține un cip pentru primirea tuturor mesajelor transmise, decide relevanța și acționează în consecință - acest lucru permite modificarea și includerea ușoară a unor noduri suplimentare (de exemplu, înregistratoare de date pentru magistrala CAN). Aplicațiile includ pornirea / oprirea vehiculelor, sisteme de evitare a coliziunilor. Sistemele de magistrală CAN pot oferi viteză de până la 1 Mbps.
Microwire
MICROWIRE este o interfață serială cu 3 fire de 3 Mbps, în esență, un subset al interfeței SPI. Microwire este un port serial I / O pe microcontrolere, deci magistrala Microwire va fi găsită și pe EEPROM-uri și alte cipuri periferice. Cele 3 linii sunt SI (Serial Input), SO (SerialOutput) și SK (Serial Clock). Linia de intrare serial (SI) către microcontroler, SO este linia de ieșire serială, iar SK este linia de ceas serial. Datele sunt mutate pe marginea descendentă a SK și sunt evaluate pe marginea ascendentă. SI este mutat pe marginea ascendentă a SK. O îmbunătățire suplimentară a magistralei pentru MICROWIRE se numește MICROWIRE / Plus. Principala diferență dintre cele două autobuze pare să fie că arhitectura MICROWIRE / Plus din microcontroler este mai complexă. Suportă viteze de până la 3 Mbps.
Protocoale seriale asincrone
Tipul asincron de protocoale seriale este foarte esențial atunci când vine vorba de transfer de date fiabil pe distanțe mai mari. Comunicarea asincronă nu necesită un ceas de sincronizare comun pentru ambele dispozitive. Fiecare dispozitiv ascultă și trimite în mod independent impulsuri digitale care reprezintă biți de date la o rată convenită. Comunicația serială asincronă este uneori denumită serială tranzistor-tranzistor logică (TTL), unde nivelul de înaltă tensiune este logica 1, iar tensiunea joasă echivalează cu logica 0. Aproape fiecare microcontroler de pe piață are astăzi cel puțin un receptor asincron universal- Transmițător (UART) pentru comunicații seriale. Exemplele sunt RS232, RS422, RS485 etc.
RS232
RS232 (standard recomandat 232) este un protocol foarte comun utilizat pentru a conecta diferite periferice, cum ar fi monitoare, CNC-uri etc. RS232 vine în conectori masculi și feminini. RS232 este topologie punct-la-punct cu maxim un dispozitiv conectat și acoperă distanțe de până la 15 metri la 9600 bps. Informațiile despre interfața RS-232 sunt transmise digital prin 0 și 1. Logica „1” (MARK) corespunde unei tensiuni cuprinse între -3 și -15 V. „0” (SPACE) logic corespunde unei tensiune în intervalul de la +3 la +15 V. Acesta vine în conector DB9 care are 9 pinouts, cum ar fi TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 este similar cu RS232, care permite să trimită și să primească simultan mesaje pe linii separate, dar utilizează un semnal diferențial pentru aceasta. În rețeaua RS-422, nu poate exista decât un singur dispozitiv de transmisie și până la 10 dispozitive de recepție. Viteza de transfer a datelor în RS-422 depinde de distanță și poate varia de la 10 kbps (1200 metri) la 10 Mbps (10 metri). Linia RS-422 este de 4 fire pentru transmiterea datelor (2 fire răsucite pentru transmisie și 2 fire răsucite pentru recepție) și un fir comun de masă GND. Tensiunea pe liniile de date poate fi în intervalul de la -6 V la +6 V. Diferența logică dintre A și B este mai mare de +0,2 V. Logica 1 corespunde diferenței dintre A și B mai mică de -0,2 V. Standardul RS-422 nu definește un tip specific de conector, de obicei poate fi un bloc de borne sau un conector DB9.
RS485
Deoarece RS485 folosește topologie cu mai multe puncte, este cel mai utilizat în industrie și este protocolul preferat de industrie. RS422 poate conecta 32 de drivere de linie și 32 de receptoare într-o configurație diferențială, dar cu ajutorul unor repetoare suplimentare și amplificatoare de semnal de până la 256 de dispozitive. RS-485 nu definește un tip specific de conector, dar este adesea un bloc de borne sau un conector DB9. Viteza de funcționare depinde și de lungimea liniei și poate ajunge la 10 Mbit / s la 10 metri. Tensiunea pe linii este cuprinsă între -7 V și +12 V. Există două tipuri de RS-485, cum ar fi modul semi-duplex RS-485 cu 2 contacte și modul full duplex RS-485 cu 4 contacte. Pentru a afla mai multe despre utilizarea RS485 cu alte microcontrolere, verificați linkurile:
- Comunicare serială RS-485 MODBUS folosind Arduino UNO ca Slave
- Comunicare în serie RS-485 între Raspberry Pi și Arduino Uno
- Comunicare în serie RS485 între Arduino Uno și Arduino Nano
- Comunicare în serie între STM32F103C8 și Arduino UNO folosind RS-485
Concluzie
Comunicarea în serie este unul dintre sistemele de interfață de comunicații utilizate pe scară largă în electronică și sisteme încorporate. Vitezele de date pot fi diferite pentru diferite aplicații. Protocoalele de comunicare în serie pot juca un rol decisiv atunci când se ocupă de acest tip de aplicații. Așadar, alegerea protocolului Serial potrivit devine foarte importantă.