Introduktion
Jeg har opdaget noget fantastisk - vi er stærkere sammen. Og det er elektronik også! Hvordan øger man kvaliteten af kommunikation mellem to parter, der næsten ikke forstår hinanden? Fortvivl ikke mere, for vi vil udforske nogle af svarene. Det handler om interfacing! Altså, for elektronik i hvert fald....
Forståelse af grænsefladeteknikker, herunder kommunikationsprotokoller, dataoverførselsmetoder og enhedsdrivere, er afgørende for, at elektronikproducenter kan forbinde deres enheder til andre systemer. Uden electronic interfacing kunne intet elektronik kommunikere med hinanden, og det er bare så utroligt trist. Så vi må hellere se om vi ikke kan hjælpe dem!
Data Transfer Metoder
Transmission modes er et udtryk for 3 metoder, hvor moduler enten kan transmittere data, modtage data eller begge dele på samme tid. De 3 typer er simpleks, halv-duplex og fuld-duplex.
Simplex
Simplex er beskrevet ved 2 moduler - sender og modtager, se figur 1. Det ene modul er afsenderen og det andet modul er modtageren. De kan ikke skifte roller og det er således en envejskommunikation. Simplex = One Way Street!
Figur 1: Illustrerer konceptet med simplex overførselsmetoden. Som angivet af pilens retning, går informationen fra afsenderen til modtagermodulet.
En fordel ved simplex kan være at sendermodulet kan benytte kommunikationsmediets fulde kapacitet, som fx. radiosignaler og/eller kabler til at transmittere data. Simplex ses mellem en computer og et tastatur eller mellem en radiocontroller og et fjernstyret legetøjsfly eller racerbil.
Halv-duplex
Halv-dupleks er når 2 moduler kan skifte mellem sender- og modtager-rollerne, se figur 2. For halv-dupleks kan begge moduler sende og modtage data, fordi de kan skifte roller. Det er dog vigtigt at bemærke, at hvert modul ikke kan have begge roller på samme tid.
Figur 2: Illustrerer konceptet med halv-dupleks overførselsmetoden. Som angivet af pilenes retning kan data transmitteres og modtages af begge moduler. Men hvert modul kan kun have én rolle ad gangen.
Ved halv-dupleks kan man igen, som ved simplex, udnytte kommunikationsmediets fulde kapacitet. Halv-dupleks ses for eksempel i dataoverførslen i walkie talkies. Roger. Over.
Fuld-duplex
Fuld-duplex er hvor 2 moduler kan have begge roller på samme tid - altså begge moduler kan både sende og modtage data på samme tid, se figur 3.
Der er en begrænsning af fuld-duplex med hensyn til transmissionsmediekapacitet. Som vi lærte tidligere i denne blog kan både halv-duplex og simplex bruge den fulde kapacitet af kommunikationsmediet, hvorimod denne motorvej af data for fuld dupleks skal deles mellem hvert modul. Eller modulerne skal hver især have deres eget transmissionsmedium.
Figur 3: Illustrerer konceptet med fuld-duplex overførselsmetoden. Som angivet af pilenes retning, kan data transmitteres og modtages af begge moduler på samme tid.
Fuld duplex bruges fx. i kommunikationen mellem telefoner og i mikrocontrolleren Arduino UNO.
Seriel og Parallel kommunikation
Seriel
Den data, der bevæger sig mellem sender- og modtagermodulerne, kan adskilles i seriel og parallel kommunikation. Data kan transmitteres enten serielt eller parallelt. Seriel data er, når bits transmitteres via en forbindelse én efter én pr. clock-cycle, se figur 4.
(I elektronik er en clock-cycle størrelsen på den tidsperiode, der kræves for, at systemet kan fuldføre en enkelt instruktion eller operation)
Figur 4: Illustrerer seriel kommunikation mellem to moduler. Her bemærker vi, at værdierne for de data, der transmitteres, kommer ind i modtagermodulet én efter én.
Fordelen ved seriel kommunikation er, at det er billigere og enklere end parallel kommunikation. Seriel kommunikation bruges også typisk over længere afstande end parallel kommunikation.
Parallel
Parallel transmission består af flere kabler, et kabel for hver bit, du ønsker at overføre pr. clock-cycle, se figur 5.
Figur 5: Illustrerer konceptet med parallel kommunikation. Hvert kabel repræsenterer en bit, der overføres pr. clock-cycle.
Parallel kommunikation bruges ofte på korte afstande. Fordelen ved parallel kommunikation er, at den er hurtigere sammenlignet med seriel kommunikation, da der transmitteres og modtages mere information pr. clock-cycle.
Kommunikationsprotokoller
En kommunikationsprotokol er et system af regler, der tillader to eller flere enheder at transmittere information via enhver form for variation af en fysisk mængde. Altså, det er systemet bag kommunikationen for en fysisk enhed til en anden. Protokollen definerer regler, syntaks, semantik og synkronisering af kommunikation og mulige fejlgendannelsesmetoder.
Inter og Intra System Protokoller
For at få en forståelse af inter- og intrasystemprotokoller skal det fastslås, hvad en protokol i sig selv er. Så lad os uddybe det lidt mere. Vi ved at en protokol er et sæt regler, som to eller flere moduler følger for at forstå, hvad de kommunikerer til hinanden. En abstraktion kunne være kommunikationen mellem to personer, der taler dansk, og en 3. person, der taler indisk. Hvis danskerne ikke kan tale indisk, og inderen ikke kan tale dansk, opstår kommunikationen mellem de to parter blot som en tilfældig sammensætning af fremmede bogstaver eller uigenkendelige lyde. For at kommunikere med hinanden har de brug for en tolk.
Intersystemprotokoller og intrasystemprotokoller skelnes, hvis to moduler kommunikerer inden for et system, såsom et printkort, eller om det er et modul, der kommunikerer med et andet modul ud over systemet. Intrasystemprotokoller er protokoller, der kommunikerer internt i et system. Dette ville i vores abstraktion være, når de dansktalende og indisktalende mennesker kan kommunikere uden hjælp udefra og forstå hinandens sprog. Inter-systemet er så protokoller, der kommunikerer ud over et system.
Metoden, hvorpå dataene overføres, uanset om det er inter eller intra, bestemmes mere specifikt af hvilken kommunikationsprotokol, der er i brug. Nogle af disse kommunikationsprotokoller kunne være SPI, I2C og UART for at nævne et par stykker.
SPI
SPI bruger "MasterSlave"-princippet. SPI, Serial Peripheral Interface, har synkron transmission. SPI transmitterer serielt og har ingen indbygget fejlkontrol. Kommunikationen mellem master og slave (du kan lidt tænke på det som sender- og modtagermoduler) er fuld duplex - for hver clock-cyklus transmitteres der en bit fra begge enheder.
I2C
I2C, IIC "I squared C" eller "Inter-Integrated-Circuit", er en busprotokol, som transmitterer data serielt og synkront. I2C kan have flere master's og slave's i et system. Protokollen kræver 2 forbindelser SDA (Serial DAta) og SCL (Serial CLock). SCL er en control bus med clock-signalet, som igen bestemmer hastigheden af datatransmission.
I2C sender data i pakker og bruger start- og stopbetingelser for at sikre, at dataene transmitteres og modtages korrekt, se figur 6.
Figur 6: Dataene, eller beskeden, indeholder en start-bit, som vil blive efterfulgt af adressen, der er specifik for den slave, som masteren vil kommunikere med. Derfra er en læse/skrive bit, som fortæller slaven, om masteren vil læse eller skrive til den. ACK/NACK er en acknowledge/not-acknowlegde bit, der sendes fra modtageren af en besked - enten en slave eller master, for at fortælle, at pakken er modtaget korrekt. I denne figur ser vi 2x 8 bits, der transmitteres efter den første ACK/NACK. Disse datapakker bliver derefter bekræftet eller ikke bekræftet før pakkens stop-bit.
UART
UART-protokollen er et kredsløb af 2 enheder, hvor 1 kan tage et parallelsignal, konvertere fra parallel til seriel og overføre dette til en anden enhed, som konverterer signalet tilbage til parallel. UART transmitterer serielt og asynkront. Det kræver ikke en clock-cycle. Kredsløbet kan maksimalt have 1 master og 1 slave.
UART-datapakker er konstrueret som vist på figur 7.
Figur 7: UART-datapakke
Enhed driver
Så nu ved vi lidt mere om, hvordan data kan transmitteres og modtages i elektronik. Men hvor modtager vi de data, der bliver transmitteret? Til det benytter vi enhedsdrivere. Så hvad er enhedsdrivere?
En enhedsdriver er et computerprogram, der gør det muligt for en computers operativsystem at kommunikere med forskellige slags hardware, der forbinder mange forskellige moduler med hinanden. Ideen med en driver er, at hardwareproducenten kun behøver at lave én type hardware (eller så få som muligt), og få den til at fungere på forskellige operativsystemer. Man kan da forestille sig, at sådan en enhedsdriver skal tage højde for mange forskellige faktorer, for at den kan bruges i disse forskellige former for kommunikation mellem elektronik og derved være så effektiv som muligt!