Image of eBits Academy protocols illustration

Gränssnitt – kommunikation utan gränser

  • March 08, 2023
  • |
  • Jonas Rothausen

Introduktion

Jag har upptäckt något fantastiskt – vi är starkare tillsammans. Och så är elektronik! Hur kan man öka kvaliteten på kommunikationen mellan två parter som knappt förstår varandra? Oroa dig inte mer för vi kommer att utforska några av svaren. Allt handlar om gränssnitt! Tja, åtminstone för elektronik...

Att förstå gränssnittstekniker , inklusive kommunikationsprotokoll, dataöverföringsmetoder och drivrutiner, är avgörande för att elektroniktillverkare ska kunna ansluta sina enheter till andra system. Utan elektroniskt gränssnitt skulle ingen elektronik kunna kommunicera med varandra, och det är bara så otroligt tråkigt. Så vi får se om vi inte kan hjälpa dem!

Dataöverföringsmetoder

Sändningslägen är ett uttryck för 3 metoder, där moduler antingen kan sända data, ta emot data eller båda samtidigt. De 3 typerna är simplex, halv-duplex och full-duplex.

Simplex

Simplex beskrivs av 2 moduler - sändare och mottagare, se figur 1. En modul är sändaren och den andra modulen är mottagaren. De kan inte byta roll och det är alltså en enkelriktad kommunikation. Simplex = One Way Street!


Figur 1 : Illustrerar konceptet med simplexöverföringsmetoden. Som indikeras av pilens riktning går informationen från sändaren till mottagarmodulen.

En fördel med simplex kan vara att sändarmodulen kan utnyttja hela kapaciteten på kommunikationsmediet, som t.ex radiosignaler och/eller kablar för att överföra data. Simplex ses mellan en dator och ett tangentbord eller mellan en radiokontroll och ett fjärrstyrt leksaksplan eller racerbil.

Halv duplex

Halvduplex är när 2 moduler kan växla mellan sändar- och mottagarroller, se figur 2. För halvduplex kan båda modulerna skicka och ta emot data eftersom de kan byta roller. Det är dock viktigt att notera att varje modul inte kan ha båda rollerna samtidigt.


Figur 2 : Illustrerar konceptet med halvduplexöverföringsmetoden. Som indikeras av pilarnas riktning kan data sändas och tas emot av båda modulerna. Men varje modul kan bara ha en roll åt gången.

Med halvduplex kan kommunikationsmediets fulla kapacitet användas igen, som med simplex. Halvduplex ses till exempel i dataöverföringen i walkie talkies. Uppfattat. Över.

Full duplex

Full-duplex är där 2 moduler kan ha båda rollerna samtidigt - dvs båda modulerna kan både skicka och ta emot data samtidigt, se figur 3.
Det finns en begränsning av full duplex när det gäller överföringsmediekapacitet. Som vi lärde oss tidigare i den här bloggen kan både halvduplex och simplex använda hela kommunikationsmediets kapacitet, medan för fullduplex måste denna motorväg av data delas mellan varje modul. Eller så måste modulerna ha var sitt överföringsmedium.


Figur 3 : Illustrerar konceptet med full-duplex-överföringsmetoden. Som indikeras av pilarnas riktning kan data sändas och tas emot av båda modulerna samtidigt.
Full duplex används t.ex. i kommunikationen mellan telefoner och i mikrokontrollern Arduino UNO .

Seriell och parallell kommunikation

Seriell
Data som rör sig mellan sändar- och mottagarmodulerna kan separeras i seriell och parallell kommunikation. Data kan överföras antingen seriellt eller parallellt. Seriella data är när bitar sänds över en anslutning en efter en per klockcykel , se figur 4.
(Inom elektronik är en klockcykel en period av klocksignalen. En instruktion kan ta flera cykler, och vissa processorer kan hantera flera instruktioner per cykel.)


Figur 4 : Illustrerar seriell kommunikation mellan två moduler. Här märker vi att värdena för de data som överförs kommer in i mottagarmodulen en efter en.

Fördelen med seriell kommunikation är att det är billigare och enklare än parallellkommunikation. Seriell kommunikation används också vanligtvis över längre avstånd än parallell kommunikation.

Parallell
Parallellöverföring består av flera kablar, en kabel för varje bit man vill överföra pr klockcykel, se figur 5.


Figur 5 : Illustrerar konceptet med parallell kommunikation. Varje kabel representerar en bit som överförs per klockcykel.
Parallell kommunikation används ofta över korta avstånd. Vid samma överföringsfrekvens kan flera parallella ledningar bära fler bitar per cykel. Det betyder inte att parallella gränssnitt alltid är snabbare än moderna seriella gränssnitt.


Kommunikationsprotokoll

Ett kommunikationsprotokoll är ett system av regler som tillåter två eller flera enheter att överföra information via valfri variation av en fysisk kvantitet. Så det är systemet bakom kommunikationen av en fysisk enhet till en annan. Protokollet definierar regler, syntax, semantik och synkronisering av kommunikation och möjliga felåterställningsmetoder.

 

Protokoll mellan och inom system

För att få en förståelse för inter- och intrasystemprotokoll måste det fastställas vad ett protokoll i sig är. Så låt oss utveckla lite mer. Vi vet att ett protokoll är en uppsättning regler som två eller flera moduler följer för att förstå vad de kommunicerar med varandra. En abstraktion kan vara kommunikationen mellan två personer som talar danska och en tredje person som talar hindi. Om danskarna inte kan tala hindi, och den hinditalande personen inte kan tala danska, uppstår kommunikationen mellan de två parterna helt enkelt som en slumpmässig kombination av utländska bokstäver eller oigenkännliga ljud. För att kommunicera med varandra behöver de en tolk.

Intersystemprotokoll och intrasystemprotokoll särskiljs om två moduler kommunicerar inom ett system, till exempel ett kretskort, eller om det är en modul som kommunicerar med en annan modul utanför systemet. Intrasystemprotokoll är protokoll som kommunicerar internt i ett system. I vår abstraktion skulle det här vara när de dansktalande och hinditalande människorna kan kommunicera utan hjälp utifrån och förstå varandras språk. Inter-systemet är då protokoll som kommunicerar bortom ett system.


Metoden med vilken data överförs, oavsett om det är inter eller intra, bestäms mer specifikt av kommunikationsprotokollet som används. Några av dessa kommunikationsprotokoll kan vara SPI, I2C och UART för att nämna några.


SPI

SPI använder "MasterSlave"-principen. SPI, Serial Peripheral Interface, har synkron överföring. SPI sänder seriellt och har ingen inbyggd felkontroll. Kommunikationen mellan master och slav (man kan typ tänka på det som sändar- och mottagarmoduler) är full duplex - för varje klockcykel sänds en bit från båda enheterna.


I2C

I2C, IIC "I squared C" eller "Inter-Integrated-Circuit", är ett bussprotokoll som sänder data seriellt och synkront. I2C kan ha flera masters och slavar i ett system. Protokollet kräver 2 anslutningar SDA (Serial DAta) och SCL (Serial CLock). SCL är en styrbuss med klocksignalen, som i sin tur bestämmer hastigheten på dataöverföringen.
I2C använder start- och stoppvillkor för att avgränsa överföringar, se figur 6. De garanterar inte i sig att data är felfria.


Figur 6: Överföringen börjar med ett START-villkor, följt av adressen till den enhet som styrenheten vill kommunicera med och en läs/skrivbit. ACK/NACK är mottagarens kvittering eller uteblivna kvittering efter en byte; det är ingen kontrollsumma som garanterar felfria data. Figuren visar 2x 8 databitar efter den första ACK/NACK. Varje byte följs av ACK/NACK innan överföringen avslutas med ett STOP-villkor.


UART

UART omvandlar data mellan parallell intern representation och seriell överföring. Två UART-enheter kan kommunicera punkt till punkt. Överföringen är asynkron: ingen gemensam klockledning används, men båda enheterna har egna tidsbaser och måste ställas in för samma baudhastighet och ramformat. UART definierar inte i sig master-/slavroller.
UART-datapaket är konstruerade som visas i figur 7.

Figur 7: UART-datapaket


Drivrutin

Så nu vet vi lite mer om hur data kan överföras och tas emot i elektronik. Men var tar vi emot den data som överförs? För det använder vi enhetsdrivrutiner. Så vad är drivrutiner?
En enhetsdrivrutin är ett datorprogram som gör att en dators operativsystem kan kommunicera med olika typer av hårdvara som kopplar ihop många olika moduler. Tanken med en drivrutin är att hårdvarutillverkaren bara behöver göra en typ av hårdvara (eller så få som möjligt) och få den att fungera på olika operativsystem. Man kan då tänka sig att en sådan enhetsdrivrutin måste ta hänsyn till många olika faktorer för att den ska kunna användas i dessa olika former av kommunikation mellan elektronik och därigenom vara så effektiv som möjligt!

Lämna en kommentar

Observera att kommentarer måste godkännas innan de publiceras.