- Typer kommunikasjonsprotokoller
- Overføringsmodi i seriell kommunikasjon
- Kloksynkronisering
- Andre vilkår relatert til seriell kommunikasjon
- Synkrone serielle protokoller
- Asynkrone serielle protokoller
- Konklusjon
Før vi begynner med serielle kommunikasjonsprotokoller, la oss bryte terminologien i tre deler. Den kommunikasjon er meget godt kjent terminologi som innbefatter utveksling av informasjon mellom to eller flere medier. I innebygde systemer betyr kommunikasjonen utveksling av data mellom to mikrokontrollere i form av biter. Denne utvekslingen av databiter i mikrokontroller gjøres av noen sett med definerte regler kjent som kommunikasjonsprotokoller. Nå hvis dataene sendes i serie, dvs. den ene etter den andre, er kommunikasjonsprotokollen kjent som Serial Communication Protocol. Mer spesifikt blir databitene overført en om gangen på sekvensiell måte over databussen eller kommunikasjonskanalen i seriell kommunikasjon.
Typer kommunikasjonsprotokoller
Det er forskjellige typer dataoverføring tilgjengelig i digital elektronikk, for eksempel seriell kommunikasjon og parallell kommunikasjon. Tilsvarende er protokollene delt inn i to typer som Serial Communication Protocol og Parallel Communication Protocols. Eksempler på parallelle kommunikasjonsprotokoller er ISA, ATA, SCSI, PCI og IEEE-488. Tilsvarende er det flere eksempler på serielle kommunikasjonsprotokoller som CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire og SATA etc.
I denne artikkelen vil de forskjellige typene serielle kommunikasjonsprotokoller bli diskutert. Seriell kommunikasjon er den mest brukte tilnærmingen for å overføre informasjon mellom periferiutstyr for databehandling. Hver elektronikk, enten det er PC (PC) eller mobil, kjører på seriell kommunikasjon. Protokollen er den sikre og pålitelige kommunikasjonsformen som har et sett med regler adressert av kildeverten (avsender) og destinasjonsverten (mottaker) som ligner på parallellkommunikasjon.
Overføringsmodi i seriell kommunikasjon
Som allerede nevnt ovenfor sendes data i seriell kommunikasjon i form av biter, dvs. binære pulser, og det er velkjent at binær en representerer logikken HØY og null representerer logikken LAV. Det er flere typer seriell kommunikasjon avhengig av type overføringsmodus og dataoverføring. Overføringsmodusene er klassifisert som Simplex, Half Duplex og Full Duplex.
Enkeltsidig metode:
I simpleks-metoden kan en av mediumene, dvs. senderen eller mottakeren, være aktiv om gangen. Så hvis avsenderen overfører dataene, kan mottakeren bare godta og omvendt. Så simplex-metoden er enveiskommunikasjonsteknikk. De velkjente eksemplene på simpleks-metoden er TV og radio.
Half Duplex Method:
I halv dupleksmetoden kan både avsender og mottaker være aktive, men ikke samtidig. Så hvis avsenderen sender, kan mottakeren akseptere, men ikke sende, og omvendt. De kjente eksemplene på halv dupleks er internett hvor brukeren sender en forespørsel om data og får den fra serveren.
Full dupleks metode:
I full dupleksmetode kan både mottaker og sender sende data til hverandre samtidig. Det velkjente eksemplet er mobiltelefon.
Bortsett fra dette, for riktig dataoverføring, spiller klokken en viktig rolle, og den er en av de viktigste kildene. Feil på klokken resulterer i uventet dataoverføring, selv noen ganger tap av data. Så kloksynkroniseringen blir veldig viktig når du bruker seriell kommunikasjon.
Kloksynkronisering
Klokken er forskjellig for serielle enheter, og den er klassifisert i to typer nemlig. Synkront serielt grensesnitt og asynkront serielt grensesnitt.
Synkront serielt grensesnitt:
Det er en punkt-til-punkt-forbindelse fra en mester til slave. I denne typen grensesnitt bruker alle enhetene en enkelt CPU-buss for å dele data og klokke. Dataoverføringen blir raskere med samme buss for å dele klokke og data. Det er heller ingen feil i baudrate i dette grensesnittet. På sendersiden er det en forskyvning av dataene til seriell linje som gir klokken som et separat signal, da det ikke er start-, stopp- og paritetsbiter blir lagt til dataene. På mottakersiden blir dataene hentet ut ved hjelp av klokken som senderen gir, og konverterer seriedataene tilbake til den parallelle formen. De kjente eksemplene er I2C og SPI.
Asynkront serielt grensesnitt:
I asynkront serielt grensesnitt er det eksterne klokkesignalet fraværende. De asynkrone serielle grensesnittene kan sees stort sett i langdistanseapplikasjoner og passer perfekt for stabil kommunikasjon. I asynkront serielt grensesnitt gjør fraværet av ekstern klokkilde det avhengig av flere parametere som datastrømskontroll, feilkontroll, overføringshastighetskontroll, overføringskontroll og mottakskontroll. På sendersiden er det en forskyvning av parallelle data på seriellinjen ved hjelp av sin egen klokke. Det legger også til start-, stopp- og paritetskontrollbiter. På mottakersiden trekker mottakeren ut dataene ved hjelp av sin egen klokke og konverterer seriedataene tilbake til den parallelle formen etter å ha fjernet start-, stopp- og paritetsbitene. De kjente eksemplene er RS-232, RS-422 og RS-485.
Andre vilkår relatert til seriell kommunikasjon
Bortsett fra kloksynkronisering er det visse ting å huske når du overfører data serielt, for eksempel baudrate, valg av databit (innramming), synkronisering og feilkontroll. La oss diskutere disse vilkårene kort.
Baudrate: Baudrate er hastigheten som dataene overføres mellom senderen og mottakeren i form av biter per sekund (bps). Den mest brukte overføringshastigheten er 9600. Men det er et annet utvalg av overføringshastighet, for eksempel 1200, 2400, 4800, 57600, 115200. Jo mer overføringshastigheten vil være fett, blir dataene overført om gangen. Også for datakommunikasjonen må overføringshastigheten være den samme for både sender og mottaker.
Innramming: Innramming refereres til antall databiter som skal sendes fra sender til mottaker. Antall databiter varierer i tilfelle applikasjon. Det meste av applikasjonen bruker 8 bits som standard databiter, men den kan også velges som 5, 6 eller 7 bits.
Synkronisering: Synkronisering Bits er viktig for å velge en bit data. Den forteller starten og slutten av databitene. Senderen vil sette start- og stoppbiter til datarammen, og mottakeren vil identifisere det deretter og gjøre den videre behandlingen.
Feilkontroll: Feilkontrollen spiller en viktig rolle under seriell kommunikasjon, da det er mange faktorer som påvirker og tilfører støyen i seriekommunikasjonen. For å kvitte seg med denne feilen brukes paritetsbitene der paritet vil sjekke for jevn og odde paritet. Så hvis datarammen inneholder det jevne antall 1, er det kjent som jevn paritet, og paritetsbiten i registeret er satt til 1. På samme måte, hvis datarammen inneholder oddetall på 1, er den kjent som odd paritet og tømmer odde paritetsbit i registeret.
Protokoll er akkurat som et vanlig språk som systemet bruker for å forstå dataene. Som beskrevet ovenfor er den serielle kommunikasjonsprotokollen delt inn i typer, dvs. synkron og asynkron. Nå vil begge bli diskutert i detalj.
Synkrone serielle protokoller
Den synkrone typen serielle protokoller som SPI, I2C, CAN og LIN brukes i forskjellige prosjekter fordi det er en av de beste ressursene for periferiutstyr ombord. Dette er også de mye brukte protokollene i store applikasjoner.
SPI-protokoll
Serial Peripheral Interface (SPI) er et synkront grensesnitt som gjør at flere SPI-mikrokontrollere kan kobles sammen. I SPI kreves separate ledninger for data og klokkelinje. Klokken er heller ikke inkludert i datastrømmen og må innredes som et separat signal. SPI kan konfigureres enten som master eller som slave. De fire grunnleggende SPI-signalene (MISO, MOSI, SCK og SS), Vcc og Ground er del av datakommunikasjon. Så det trenger 6 ledninger for å sende og motta data fra slave eller master. Teoretisk kan SPI ha ubegrenset antall slaver. Datakommunikasjonen er konfigurert i SPI-registre. SPI kan levere opptil 10 Mbps hastighet og er ideell for høyhastighets datakommunikasjon.
De fleste mikrokontrollere har innebygd støtte for SPI og kan kobles direkte til SPI-støttet enhet:
- SPI Kommunikasjon med PIC Microcontroller PIC16F877A
- Hvordan bruke SPI-kommunikasjon i STM32 Microcontroller
- Hvordan bruke SPI i Arduino: Kommunikasjon mellom to Arduino-brett
I2C seriell kommunikasjon
Interintegrert krets (I2C) to-linjekommunikasjon mellom forskjellige IC-er eller moduler der to linjer er SDA (Serial Data Line) og SCL (Serial Clock Line). Begge ledningene må være koblet til en positiv forsyning ved hjelp av en opptrekksmotstand. I2C kan levere hastighet på opptil 400 kbps, og den bruker 10- eller 7-biters adresseringssystem for å målrette mot en bestemt enhet på i2c-bussen, slik at den kan koble til opptil 1024 enheter. Den har kommunikasjon med begrenset lengde og er ideell for ombordkommunikasjon. I2C-nettverk er enkle å installere, siden de bare bruker to ledninger og nye enheter enkelt kan kobles til de to vanlige I2C-busslinjene. Samme som SPI, har mikrokontroller generelt I2C-pinner for å koble til en hvilken som helst I2C-enhet:
- Hvordan bruke I2C-kommunikasjon i STM32 Microcontroller
- I2C Kommunikasjon med PIC Microcontroller PIC16F877
- Hvordan bruke I2C i Arduino: Kommunikasjon mellom to Arduino-brett
USB
USB (Universal Serial Bus) er mye protokoll med forskjellige versjoner og hastigheter. Maksimalt 127 eksterne enheter kan kobles til en enkelt USB-vertskontroller. USB fungerer som "plug and play" -enhet. USB brukes i nesten enheter som tastaturer, skrivere, medieenheter, kameraer, skannere og mus. Den er designet for enkel installasjon, raskere datarangering, mindre kabling og bytte av varme. Den har erstattet de større og langsommere serielle og parallelle porter. USB bruker differensial signalering for å redusere forstyrrelser og tillate høyhastighetsoverføring over lang avstand.
En differensialbuss er bygget med to ledninger, den ene representerer de overførte dataene og den andre dens komplement. Tanken er at den 'gjennomsnittlige' spenningen på ledningene ikke bærer noen informasjon, noe som resulterer i mindre forstyrrelser. I USB har enhetene lov til å trekke en viss mengde strøm uten å spørre verten. USB bruker bare to ledninger til dataoverføring og er raskere enn det serielle og parallelle grensesnittet. USB-versjoner støtter forskjellige hastigheter, for eksempel 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5 Gbps (USB v3.0). Lengden på den enkelte USB-kabelen kan nå opptil 5 meter uten hub og 40 meter med hub.
KAN
Controller Area Network (CAN) brukes i for eksempel bilindustrien for å tillate kommunikasjon mellom ECUer (motorstyringsenheter) og sensorer. CAN-protokollen er robust, billig og meldingsbasert og dekker mange applikasjoner - for eksempel biler, lastebiler, traktorer, industriroboter. CAN-bussystemet muliggjør sentral feildiagnose og konfigurasjon på tvers av alle ECUer. CAN-meldinger prioriteres via ID-er slik at IDene med høyest prioritet ikke blir avbrutt. Hver ECU inneholder en brikke for å motta alle sendte meldinger, bestemme relevans og handle deretter - dette tillater enkel modifisering og inkludering av ytterligere noder (for eksempel CAN-dataloggere). Søknadene inkluderer start / stopp av kjøretøyer, kollisjons unngåingssystemer. CAN-bussystemene kan gi hastighet opptil 1 Mbps.
Microwire
MICROWIRE er et 3Mbps serielt 3-leders grensesnitt, i hovedsak en delmengde av SPI-grensesnittet. Microwire er en serie I / O-port på mikrokontrollere, så Microwire-bussen vil også bli funnet på EEPROM og andre perifere brikker. De tre linjene er SI (Serial Input), SO (SerialOutput) og SK (Serial Clock). Serial Input (SI) -linjen til mikrokontrolleren, SO er den serielle utgangslinjen, og SK er den serielle klokkelinjen. Data forskyves på den fallende kanten av SK, og verdsettes på den stigende kanten. SI forskyves på den stigende kanten av SK. En ekstra bussforbedring til MICROWIRE kalles MICROWIRE / Plus. Hovedforskjellen mellom de to bussene ser ut til å være at MICROWIRE / Plus-arkitekturen i mikrokontrolleren er mer kompleks. Den støtter hastigheter på opptil 3 Mbps.
Asynkrone serielle protokoller
Den asynkrone typen serielle protokoller er veldig viktig når det gjelder pålitelig dataoverføring på lengre avstand. Asynkron kommunikasjon krever ikke en tidsur som er felles for begge enhetene. Hver enhet lytter uavhengig og sender digitale pulser som representerer databiter med en avtalt hastighet. Asynkron seriell kommunikasjon blir noen ganger referert til som Transistor-Transistor Logic (TTL) seriell, der høyspenningsnivået er logikk 1, og lavspenningen tilsvarer logikk 0. Nesten hver mikrokontroller på markedet i dag har minst en universell asynkron mottaker- Sender (UART) for seriell kommunikasjon. Eksemplene er RS232, RS422, RS485 etc.
RS232
RS232 (anbefalt standard 232) er en veldig vanlig protokoll som brukes til å koble til forskjellige eksterne enheter som skjermer, CNC-er osv. RS232 kommer i mannlige og kvinnelige kontakter. RS232 er punkt-til-punkt topologi med maksimalt tilkoblet enhet og dekker avstand opp til 15 meter ved 9600 bps. Informasjon om RS-232-grensesnittet overføres digitalt med logisk 0 og 1. Den logiske "1" (MARK) tilsvarer en spenning i området fra -3 til -15 V. Den logiske "0" (SPACE) tilsvarer en spenning i området fra +3 til +15 V. Den kommer i DB9-kontakt som har 9 pinouts som TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 er lik RS232 som gjør det mulig å sende og motta meldinger samtidig på separate linjer, men bruker et differensialsignal for dette. I RS-422-nettverket kan det bare være en senderenhet og opptil 10 mottaksenheter. Dataoverføringshastigheten i RS-422 avhenger av avstanden og kan variere fra 10 kbps (1200 meter) til 10 Mbps (10 meter). RS-422-linjen er 4 ledninger for dataoverføring (2 vridd ledninger for overføring og 2 vridd ledninger for mottak) og en vanlig GND-jordledning. Spenningen på datalinjene kan være i området fra -6 V til +6 V. Den logiske forskjellen mellom A og B er større enn +0,2 V. Logisk 1 tilsvarer forskjellen mellom A og B mindre enn -0,2 V. RS-422-standarden definerer ikke en bestemt type kontakt, vanligvis kan det være en terminalblokk eller en DB9-kontakt.
RS485
Siden RS485 bruker flerpunkts topologi, brukes den mest i bransjene og er bransjens foretrukne protokoll. RS422 kan koble til 32 linjedrivere og 32 mottakere i forskjellige konfigurasjoner, men ved hjelp av ekstra repeatere og signalforsterkere opp til 256 enheter. RS-485 definerer ikke en bestemt type kontakt, men det er ofte en terminalblokk eller en DB9-kontakt. Driftshastigheten avhenger også av lengden på linjen og kan nå 10 Mbit / s på 10 meter. Spenningen på linjene er i området fra -7 V til +12 V. Det er to typer RS-485, for eksempel halv dupleksmodus RS-485 med 2 kontakter og full dupleksmodus RS-485 med 4 kontakter. For å lære mer om bruk av RS485 med andre mikrokontrollere, sjekk lenkene:
- RS-485 MODBUS Seriell kommunikasjon ved hjelp av Arduino UNO som slave
- RS-485 Seriell kommunikasjon mellom Raspberry Pi og Arduino Uno
- RS485 Seriell kommunikasjon mellom Arduino Uno og Arduino Nano
- Seriekommunikasjon mellom STM32F103C8 og Arduino UNO ved hjelp av RS-485
Konklusjon
Seriell kommunikasjon er et av de mye brukte kommunikasjonsgrensesnittsystemene innen elektronikk og innebygde systemer. Datahastighetene kan være forskjellige for forskjellige applikasjoner. Serielle kommunikasjonsprotokoller kan spille en avgjørende rolle når de håndterer denne typen applikasjoner. Så det å velge riktig serieprotokoll blir veldig viktig.