- Soorten communicatieprotocollen
- Overdrachtsmodi in seriële communicatie
- Kloksynchronisatie
- Andere termen met betrekking tot seriële communicatie
- Synchrone seriële protocollen
- Asynchrone seriële protocollen
- Conclusie
Voordat we beginnen met seriële communicatieprotocollen, laten we de terminologie in drie delen opsplitsen. De communicatie is een zeer bekende terminologie die de uitwisseling van informatie tussen twee of meer media inhoudt. In embedded systemen betekent de communicatie de uitwisseling van gegevens tussen twee microcontrollers in de vorm van bits. Deze uitwisseling van databits in de microcontroller wordt gedaan door een aantal gedefinieerde regels die bekend staan als communicatieprotocollen. Als de gegevens nu in serie worden verzonden , dwz na elkaar, dan staat het communicatieprotocol bekend als Serial Communication Protocol. Meer in het bijzonder worden de databits een voor een achtereenvolgens verzonden via de databus of het communicatiekanaal in seriële communicatie.
Soorten communicatieprotocollen
Er zijn verschillende soorten gegevensoverdracht beschikbaar in de digitale elektronica, zoals seriële communicatie en parallelle communicatie. Evenzo zijn de protocollen onderverdeeld in twee typen, zoals Serial Communication Protocol en Parallel Communication Protocol. Voorbeelden van parallelle communicatieprotocollen zijn ISA, ATA, SCSI, PCI en IEEE-488. Evenzo zijn er verschillende voorbeelden van seriële communicatieprotocollen zoals CAN, ETHERNET, I2C, SPI, RS232, USB, 1-draads en SATA enz.
In dit artikel worden de verschillende soorten seriële communicatieprotocollen besproken. Seriële communicatie is de meest gebruikte benadering om informatie over te dragen tussen randapparatuur voor gegevensverwerking. Elk elektronisch apparaat, of het nu een personal computer (pc) of mobiel is, werkt op seriële communicatie. Het protocol is de veilige en betrouwbare vorm van communicatie met een reeks regels die worden geadresseerd door de bronhost (afzender) en bestemmingshost (ontvanger), vergelijkbaar met parallelle communicatie.
Overdrachtsmodi in seriële communicatie
Zoals hierboven al is gezegd, worden in seriële communicatie gegevens verzonden in de vorm van bits, dwz binaire pulsen, en het is algemeen bekend dat de binaire de logische HOOG vertegenwoordigt en nul de logische LAAG. Er zijn verschillende soorten seriële communicatie, afhankelijk van het type transmissiemodus en gegevensoverdracht. De transmissiemodi zijn geclassificeerd als Simplex, Half Duplex en Full Duplex.
Simplex-methode:
Bij de simplex-methode kan elk van het medium, dwz de zender of de ontvanger, tegelijkertijd actief zijn. Dus als de afzender de gegevens verzendt, kan de ontvanger alleen accepteren en vice versa. Simplexmethode is dus eenrichtingscommunicatietechniek. De bekende voorbeelden van de simplex-methode zijn televisie en radio.
Half duplex-methode:
Bij de half duplex-methode kunnen zowel de zender als de ontvanger actief zijn, maar niet tegelijkertijd. Dus als de afzender aan het zenden is, kan de ontvanger accepteren maar niet verzenden en omgekeerd. De bekende voorbeelden van de half duplex is het internet waar de gebruiker een verzoek om gegevens verstuurt en deze van de server haalt.
Full duplex-methode:
Bij de full duplex-methode kunnen zowel de ontvanger als de zender tegelijkertijd gegevens naar elkaar verzenden. Het bekende voorbeeld is de mobiele telefoon.
Afgezien hiervan speelt de klok voor een juiste datatransmissie een belangrijke rol en is deze een van de belangrijkste bronnen. Een storing van de klok resulteert in onverwachte gegevensoverdracht, zelfs soms tot gegevensverlies. De kloksynchronisatie wordt dus erg belangrijk bij het gebruik van seriële communicatie.
Kloksynchronisatie
De klok is anders voor seriële apparaten en is ingedeeld in twee typen, namelijk. Synchrone seriële interface en asynchrone seriële interface.
Synchrone seriële interface:
Het is een point-to-point-verbinding van master naar slave. In dit type interface gebruiken alle apparaten een enkele CPU-bus om gegevens en klok te delen. De gegevensoverdracht wordt sneller met dezelfde bus om klok en gegevens te delen. Ook is er geen mismatch in baudrate in deze interface. Aan de zenderzijde is er een verschuiving van de gegevens naar een seriële lijn, waarbij de klok als een afzonderlijk signaal wordt geleverd, aangezien er geen start-, stop- en pariteitsbits aan de gegevens worden toegevoegd. Aan de ontvangerzijde worden de gegevens geëxtraheerd met behulp van de klok die door de zender wordt geleverd en worden de seriële gegevens teruggezet naar de parallelle vorm. De bekende voorbeelden zijn I2C en SPI.
Asynchrone seriële interface:
In een asynchrone seriële interface is het externe kloksignaal afwezig. De asynchrone seriële interfaces zijn vooral terug te vinden in toepassingen over lange afstanden en passen perfect bij de stabiele communicatie. In de asynchrone seriële interface zorgt de afwezigheid van een externe klokbron ervoor dat het afhankelijk is van verschillende parameters, zoals dataflowcontrole, foutcontrole, baudsnelheidscontrole, transmissiecontrole en ontvangstcontrole. Aan de zenderzijde is er een verschuiving van parallelle gegevens naar de seriële lijn met behulp van zijn eigen klok. Het voegt ook de start-, stop- en pariteitscontrolebits toe. Aan de ontvangerzijde extraheert de ontvanger de gegevens met behulp van zijn eigen klok en converteert de seriële gegevens terug naar de parallelle vorm na het verwijderen van de start-, stop- en pariteitsbits. De bekende voorbeelden zijn RS-232, RS-422 en RS-485.
Andere termen met betrekking tot seriële communicatie
Afgezien van kloksynchronisatie zijn er bepaalde dingen die u moet onthouden bij het serieel verzenden van gegevens, zoals baudrate, databitselectie (framing), synchronisatie en foutcontrole. Laten we deze termen kort bespreken.
Baudsnelheid: baudsnelheid is de snelheid waarmee de gegevens tussen de zender en ontvanger worden overgedragen in de vorm van bits per seconde (bps). De meest gebruikte baudsnelheid is 9600. Maar er zijn andere opties voor de baudsnelheid, zoals 1200, 2400, 4800, 57600, 115200. Hoe meer de baudrate zal zijn, de gegevens worden tegelijkertijd overgedragen. Ook voor de datacommunicatie moet de baudrate hetzelfde zijn voor zowel zender als ontvanger.
Framing: Framing verwijst naar het aantal databits dat van zender naar ontvanger moet worden verzonden. Het aantal databits verschilt per toepassing. De meeste toepassingen gebruiken 8 bits als standaard databits, maar kunnen ook worden geselecteerd als 5, 6 of 7 bits.
Synchronisatie: synchronisatie Bits zijn belangrijk om een stuk gegevens te selecteren. Het vertelt het begin en het einde van de databits. De zender stelt start- en stopbits in op het dataframe en de ontvanger zal het overeenkomstig identificeren en de verdere verwerking uitvoeren.
Foutcontrole: De foutcontrole speelt een belangrijke rol tijdens seriële communicatie, aangezien er veel factoren zijn die de ruis in de seriële communicatie beïnvloeden en toevoegen. Om van deze fout af te komen, worden de pariteitsbits gebruikt, waarbij de pariteit controleert op even en oneven pariteit. Dus als het dataframe het even aantal enen bevat, staat het bekend als even pariteit en wordt de pariteitsbit in het register ingesteld op 1. Evenzo als het dataframe een oneven aantal enen bevat, staat het bekend als oneven pariteit en wist het oneven pariteitsbit in het register.
Protocol is net als een gemeenschappelijke taal die het systeem gebruikt om de gegevens te begrijpen. Zoals hierboven beschreven, is het seriële communicatieprotocol onderverdeeld in typen, namelijk synchroon en asynchroon. Nu zullen beide in detail worden besproken.
Synchrone seriële protocollen
Het synchrone type seriële protocollen zoals SPI, I2C, CAN en LIN worden in verschillende projecten gebruikt, omdat het een van de beste bronnen is voor randapparatuur aan boord. Dit zijn ook de meest gebruikte protocollen in grote toepassingen.
SPI-protocol
De Serial Peripheral Interface (SPI) is een synchrone interface waarmee verschillende SPI-microcontrollers met elkaar kunnen worden verbonden. In SPI zijn aparte draden nodig voor data en kloklijn. Ook de klok zit niet in de datastroom en moet als apart signaal worden geleverd. De SPI kan worden geconfigureerd als master of als slave. De vier basissignalen van SPI (MISO, MOSI, SCK en SS), Vcc en Ground maken deel uit van de datacommunicatie. Er zijn dus 6 draden nodig om gegevens van de slave of master te verzenden en te ontvangen. Theoretisch kan de SPI een onbeperkt aantal slaves hebben. De datacommunicatie wordt geconfigureerd in SPI-registers. De SPI kan tot 10 Mbps aan snelheid leveren en is ideaal voor snelle datacommunicatie.
De meeste microcontrollers hebben ingebouwde ondersteuning voor SPI en kunnen rechtstreeks worden aangesloten op een SPI-ondersteund apparaat:
- SPI-communicatie met PIC-microcontroller PIC16F877A
- Hoe SPI-communicatie te gebruiken in STM32 Microcontroller
- Hoe SPI in Arduino te gebruiken: communicatie tussen twee Arduino-kaarten
I2C seriële communicatie
Inter Integrated Circuit (I2C) tweeregelige communicatie tussen verschillende IC's of modules waarbij twee lijnen SDA (Serial Data Line) en SCL (Serial Clock Line) zijn. Beide lijnen moeten worden aangesloten op een positieve voeding met behulp van een pull-up-weerstand. I2C kan snelheden tot 400 Kbps leveren en het gebruikt een 10 bit of 7 bit adresseringssysteem om een specifiek apparaat op de i2c-bus te targeten, zodat het maximaal 1024 apparaten kan aansluiten. Het heeft een beperkte communicatieduur en is ideaal voor communicatie aan boord. I2C-netwerken zijn eenvoudig op te zetten omdat het slechts twee draden gebruikt en nieuwe apparaten eenvoudig op de twee gemeenschappelijke I2C-buslijnen kunnen worden aangesloten. Hetzelfde als SPI, microcontroller heeft over het algemeen I2C-pinnen om elk I2C-apparaat aan te sluiten:
- Hoe I2C-communicatie te gebruiken in STM32 Microcontroller
- I2C communicatie met PIC Microcontroller PIC16F877
- Hoe I2C in Arduino te gebruiken: communicatie tussen twee Arduino-kaarten
USB
USB (Universal Serial Bus) is een breed protocol met verschillende versies en snelheden. Er kunnen maximaal 127 randapparatuur op één USB-hostcontroller worden aangesloten. USB fungeert als "plug and play" -apparaat. De USB wordt gebruikt in bijna apparaten zoals toetsenborden, printers, media-apparaten, camera's, scanners en muis. Het is ontworpen voor eenvoudige installatie, snellere gegevensclassificatie, minder bekabeling en hot swapping. Het heeft de omvangrijkere en langzamere seriële en parallelle poorten vervangen. USB maakt gebruik van differentiële signalering om interferentie te verminderen en overdracht op hoge snelheid over een lange afstand mogelijk te maken.
Een differentiële bus is gebouwd met twee draden, de ene vertegenwoordigt de verzonden gegevens en de andere het complement. Het idee is dat de 'gemiddelde' spanning op de draden geen informatie draagt, waardoor er minder storing optreedt. Bij USB mogen de apparaten een bepaalde hoeveelheid stroom verbruiken zonder de host te vragen. USB gebruikt slechts twee draden voor gegevensoverdracht en is sneller dan de seriële en parallelle interface. USB-versies ondersteunen verschillende snelheden zoals 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5 Gbps (USB v3.0). De lengte van de individuele USB-kabel kan oplopen tot 5 meter zonder hub en 40 meter met hub.
KAN
Het Controller Area Network (CAN) wordt gebruikt in bijvoorbeeld automotive om communicatie tussen ECU's (Engine Control Units) en sensoren mogelijk te maken. Het CAN-protocol is robuust, goedkoop en op berichten gebaseerd en dekt in veel toepassingen - bijv. Auto's, vrachtwagens, tractoren, industriële robots. Het CAN-bussysteem maakt centrale foutdiagnose en configuratie over alle ECU's mogelijk. CAN-berichten krijgen prioriteit via ID's, zodat ID's met de hoogste prioriteit niet worden onderbroken. Elke ECU bevat een chip om alle verzonden berichten te ontvangen, de relevantie te bepalen en dienovereenkomstig te handelen - dit maakt eenvoudige wijziging en opname van extra knooppunten mogelijk (bijv. CAN-bus dataloggers). De toepassingen omvatten het starten / stoppen van voertuigen, systemen om botsingen te vermijden. De CAN-bussystemen kunnen snelheden tot 1 Mbps leveren.
Microwire
MICROWIRE is een 3-draads seriële interface van 3 Mbps, in wezen een subset van de SPI-interface. Microwire is een seriële I / O-poort op microcontrollers, dus de Microwire-bus is ook te vinden op EEPROM's en andere perifere chips. De 3 lijnen zijn SI (Serial Input), SO (SerialOutput) en SK (Serial Clock). De seriële ingang (SI) -lijn naar de microcontroller, SO is de seriële uitgangslijn en SK is de seriële kloklijn. Gegevens worden verschoven op de dalende flank van SK en worden gewaardeerd op de stijgende flank. SI wordt verschoven op de stijgende flank van SK. Een extra busverbetering van MICROWIRE wordt MICROWIRE / Plus genoemd. Het belangrijkste verschil tussen de twee bussen lijkt te zijn dat de MICROWIRE / Plus-architectuur binnen de microcontroller complexer is. Het ondersteunt snelheden tot 3 Mbps.
Asynchrone seriële protocollen
Het asynchrone type seriële protocollen is zeer essentieel als het gaat om betrouwbare gegevensoverdracht over langere afstanden. Voor asynchrone communicatie is geen tijdklok nodig die beide apparaten gemeen hebben. Elk apparaat luistert onafhankelijk en zendt digitale pulsen uit die gegevensbits vertegenwoordigen met een overeengekomen snelheid. Asynchrone seriële communicatie wordt soms transistor-transistorlogica (TTL) serieel genoemd, waarbij het hoge spanningsniveau logisch 1 is en de lage spanning gelijk is aan logisch 0. Bijna elke microcontroller op de markt heeft tegenwoordig ten minste één universele asynchrone ontvanger- Zender (UART) voor seriële communicatie. De voorbeelden zijn RS232, RS422, RS485 etc.
RS232
De RS232 (aanbevolen standaard 232) is een veelgebruikt protocol dat wordt gebruikt om verschillende randapparatuur aan te sluiten, zoals monitoren, CNC's enz. De RS232 wordt geleverd met mannelijke en vrouwelijke connectoren. De RS232 is een point-to-point-topologie met maximaal één aangesloten apparaat en bestrijkt afstanden tot 15 meter bij 9600 bps. Informatie over de RS-232-interface wordt digitaal verzonden door logische 0 en 1. De logische "1" (MARK) komt overeen met een spanning in het bereik van -3 tot -15 V. De logische "0" (SPACE) komt overeen met een spanning in het bereik van +3 tot +15 V. Het wordt geleverd in DB9-connector met 9 pinouts zoals TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
De RS422 is vergelijkbaar met RS232 die het mogelijk maakt om gelijktijdig berichten op aparte lijnen te verzenden en te ontvangen, maar gebruikt hiervoor een differentieel signaal. In het RS-422-netwerk kan er slechts één verzendend apparaat en maximaal 10 ontvangende apparaten zijn. De gegevensoverdrachtsnelheid in RS-422 is afhankelijk van de afstand en kan variëren van 10 kbps (1200 meter) tot 10 Mbps (10 meter). De RS-422-lijn bestaat uit 4 draden voor datatransmissie (2 gedraaide draden voor transmissie en 2 gedraaide draden voor ontvangst) en een gemeenschappelijke GND-aardingsdraad. De spanning op de datalijnen kan in het bereik liggen van -6 V tot +6 V. Het logische verschil tussen A en B is groter dan +0,2 V. Logisch 1 komt overeen met het verschil tussen A en B kleiner dan -0,2 V. De RS-422-standaard definieert geen specifiek type connector, meestal kan het een aansluitblok of een DB9-connector zijn.
RS485
Omdat RS485 gebruikmaakt van meerpunts-topologie, wordt het het meest gebruikt in de industrieën en is het protocol dat de voorkeur geniet. RS422 kan 32 lijndrivers en 32 ontvangers in differentiële configuraties aansluiten, maar met behulp van extra repeaters en signaalversterkers tot 256 apparaten. De RS-485 definieert geen specifiek type connector, maar het is vaak een aansluitblok of een DB9-connector. De snelheid van werken is ook afhankelijk van de lengte van de lijn en kan op 10 meter 10 Mbit / s bereiken. De spanning op de lijnen ligt in het bereik van -7 V tot +12 V. Er zijn twee soorten RS-485, zoals half-duplex-modus RS-485 met 2 contacten en full-duplex-modus RS-485 met 4 contacten. Bekijk de links voor meer informatie over het gebruik van RS485 met andere microcontrollers:
- RS-485 MODBUS seriële communicatie met Arduino UNO als slaaf
- RS-485 seriële communicatie tussen Raspberry Pi en Arduino Uno
- RS485 seriële communicatie tussen Arduino Uno en Arduino Nano
- Seriële communicatie tussen STM32F103C8 en Arduino UNO via RS-485
Conclusie
Seriële communicatie is een van de meest gebruikte communicatie-interfacesystemen in elektronica en embedded systemen. De gegevenssnelheden kunnen verschillen voor verschillende toepassingen. De seriële communicatieprotocollen kunnen een doorslaggevende rol spelen bij het omgaan met dit soort toepassingen. Het kiezen van het juiste seriële protocol wordt dus erg belangrijk.