- Typer av kommunikationsprotokoll
- Sändningslägen i seriekommunikation
- Klocksynkronisering
- Andra termer relaterade till seriekommunikation
- Synkrona seriella protokoll
- Asynkrona seriella protokoll
- Slutsats
Innan vi börjar med seriella kommunikationsprotokoll, låt oss bryta terminologin i tre delar. Den kommunikation är mycket väl känd terminologi som medför utbyte av information mellan två eller flera medier. I inbäddade system betyder kommunikationen utbyte av data mellan två mikrokontroller i form av bitar. Detta utbyte av databitar i mikroprocessorn görs med någon uppsättning definierade regler som kallas kommunikationsprotokoll. Om data nu skickas i serie dvs efter varandra så är kommunikationsprotokollet känt som Serial Communication Protocol. Mer specifikt sänds databitarna en i taget på sekventiellt sätt över databussen eller kommunikationskanalen i seriekommunikation.
Typer av kommunikationsprotokoll
Det finns olika typer av dataöverföring i digital elektronik, såsom seriell kommunikation och parallellkommunikation. På samma sätt är protokollen uppdelade i två typer såsom Serial Communication Protocol och Parallel Communication Protocols. Exempel på parallella kommunikationsprotokoll är ISA, ATA, SCSI, PCI och IEEE-488. På samma sätt finns det flera exempel på seriella kommunikationsprotokoll som CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire och SATA etc.
I den här artikeln kommer de olika typerna av seriella kommunikationsprotokoll att diskuteras. Seriekommunikation är det mest använda sättet att överföra information mellan kringutrustning för databehandling. Varje elektronikapparat, oavsett om det är PC eller mobil, körs på seriell kommunikation. Protokollet är den säkra och tillförlitliga kommunikationsformen som har en uppsättning regler som adresseras av källvärden (avsändaren) och destinationsvärden (mottagaren) som liknar parallellkommunikation.
Sändningslägen i seriekommunikation
Som redan nämnts ovan skickas data i seriell kommunikation i form av bitar, dvs. binära pulser, och det är välkänt att, binär en representerar logiken HÖG och noll representerar logiken LÅG. Det finns flera typer av seriell kommunikation beroende på typen av överföringsläge och dataöverföring. Överföringslägena klassificeras som Simplex, Half Duplex och Full Duplex.
Simplex-metod:
I simplex-metoden kan något av mediet, dvs. avsändaren eller mottagaren, vara aktiv åt gången. Så om avsändaren överför data kan mottagaren bara acceptera och tvärtom. Så simplex-metoden är envägskommunikationsteknik. De välkända exemplen på simplex-metoden är TV och radio.
Half Duplex Method:
I halv duplexmetod kan både sändare och mottagare vara aktiva men inte samtidigt. Så om avsändaren sänder kan mottagaren acceptera men inte skicka och liknande tvärtom. De välkända exemplen på halv duplex är internet där användaren skickar en begäran om data och får den från servern.
Full duplexmetod:
I full duplexmetod kan både mottagare och sändare skicka data till varandra samtidigt. Det välkända exemplet är mobiltelefon.
Bortsett från detta spelar klockan en viktig roll för lämplig dataöverföring och den är en av de primära källorna. Fel på klockan resulterar i oväntad dataöverföring även ibland dataförlust. Så klocksynkroniseringen blir mycket viktig när du använder seriell kommunikation.
Klocksynkronisering
Klockan är annorlunda för seriella enheter och den klassificeras i två typer, nämligen. Synkront seriellt gränssnitt och asynkron seriellt gränssnitt.
Synkront seriellt gränssnitt:
Det är en punkt-till-punkt-anslutning från en mästare till slav. I denna typ av gränssnitt använder alla enheter en enda CPU-buss för att dela data och klocka. Dataöverföringen blir snabbare med samma buss för att dela klocka och data. Det finns inte heller någon överensstämmelse i baudhastighet i detta gränssnitt. På sändarsidan sker en förskjutning av data till seriell linje som ger klockan som en separat signal eftersom det inte finns någon start-, stopp- och paritetsbit läggs till data. På mottagarsidan extraheras data med hjälp av klockan som tillhandahålls av sändaren och konverterar seriell data tillbaka till den parallella formen. De välkända exemplen är I2C och SPI.
Asynkront seriellt gränssnitt:
I asynkront seriellt gränssnitt saknas den externa klocksignalen. De asynkrona seriella gränssnitten kan ses mestadels i långväga applikationer och passar perfekt för stabil kommunikation. I asynkront seriellt gränssnitt gör avsaknaden av extern klockkälla det beroende av flera parametrar som dataflödeskontroll, felkontroll, överföringshastighetskontroll, överföringskontroll och mottagningskontroll. På sändarsidan sker en förskjutning av parallell data till serielinjen med hjälp av sin egen klocka. Det lägger också till start-, stopp- och paritetskontrollbitarna. På mottagarsidan extraherar mottagaren data med sin egen klocka och konverterar seriell data tillbaka till den parallella formen efter att ha tagit bort start-, stopp- och paritetsbitarna. De välkända exemplen är RS-232, RS-422 och RS-485.
Andra termer relaterade till seriekommunikation
Förutom klocksynkronisering finns det vissa saker att komma ihåg vid överföring av data seriellt, såsom Baud Rate, Data bit selection (Framing), Synchronization och felkontroll. Låt oss diskutera dessa termer i korthet.
Överföringshastighet: Överföringshastighet är den hastighet med vilken data överförs mellan sändaren och mottagaren i form av bitar per sekund (bps). Den vanligaste överföringshastigheten är 9600. Men det finns andra val av överföringshastighet såsom 1200, 2400, 4800, 57600, 115200. Ju mer överföringshastigheten kommer att vara fett kommer data att överföras åt gången. Även för datakommunikationen måste överföringshastigheten vara densamma för både sändare och mottagare.
Framing: Framing hänvisas till antalet databitar som ska skickas från sändare till mottagare. Antalet databitar skiljer sig åt vid tillämpning. Det mesta av applikationen använder 8 bitar som standard databitar men det kan också väljas som 5, 6 eller 7 bitar.
Synkronisering: Synkroniseringsbitar är viktiga för att välja en bit data. Den berättar början och slutet av databitarna. Sändaren kommer att ställa in start- och stoppbitar till dataramen och mottagaren kommer att identifiera den i enlighet med detta och göra ytterligare bearbetning.
Felkontroll: Felkontrollen spelar en viktig roll vid seriekommunikation eftersom det finns många faktorer som påverkar och lägger till bruset i seriekommunikationen. För att bli av med detta fel används paritetsbitarna där paritet kommer att kontrollera om det är jämnt och udda paritet. Så om dataramen innehåller det jämna antalet 1-tal är det känt som jämn paritet och paritetsbiten i registret är inställd på 1. På samma sätt om dataramen innehåller udda antal 1 är det känt som udda paritet och rensar udda paritetsbit i registret.
Protokoll är precis som ett vanligt språk som systemet använder för att förstå data. Som beskrivits ovan är det seriella kommunikationsprotokollet uppdelat i typer, dvs Synkron och Asynkron. Nu kommer båda att diskuteras i detalj.
Synkrona seriella protokoll
Den synkrona typen av seriella protokoll som SPI, I2C, CAN och LIN används i olika projekt eftersom det är en av de bästa resurserna för kringutrustning ombord. Dessa är också de allmänt använda protokollen i större applikationer.
SPI-protokoll
Serial Peripheral Interface (SPI) är ett synkron gränssnitt som gör det möjligt att ansluta flera SPI-mikrokontroller. I SPI krävs separata ledningar för data och klocklinje. Klockan ingår inte i dataströmmen och måste tillhandahållas som en separat signal. SPI kan konfigureras antingen som master eller som slav. De fyra grundläggande SPI-signalerna (MISO, MOSI, SCK och SS), Vcc och Ground är en del av datakommunikationen. Så det behöver 6 ledningar för att skicka och ta emot data från slav eller master. Teoretiskt kan SPI ha obegränsat antal slavar. Datakommunikationen är konfigurerad i SPI-register. SPI kan leverera upp till 10 Mbps hastighet och är idealisk för datakommunikation med hög hastighet.
De flesta mikrokontroller har inbyggt stöd för SPI och kan anslutas direkt till SPI-stödda enheter:
- SPI-kommunikation med PIC-mikrokontroller PIC16F877A
- Hur man använder SPI-kommunikation i STM32 Microcontroller
- Hur man använder SPI i Arduino: Kommunikation mellan två Arduino-kort
I2C seriell kommunikation
Inter-integrerad krets (I2C) tvåradig kommunikation mellan olika IC eller moduler där två linjer är SDA (Serial Data Line) och SCL (Serial Clock Line). Båda ledningarna måste anslutas till en positiv matning med hjälp av ett uppdragningsmotstånd. I2C kan leverera hastighet upp till 400 Kbps och den använder 10- eller 7-bitars adresseringssystem för att rikta in sig på en specifik enhet på i2c-bussen så att den kan ansluta upp till 1024 enheter. Den har begränsad längdkommunikation och är idealisk för kommunikation ombord. I2C-nätverk är enkla att installera eftersom det bara använder två ledningar och nya enheter helt enkelt kan anslutas till de två vanliga I2C-busslinjerna. Samma som SPI, har mikrokontroller vanligtvis I2C-stift för att ansluta alla I2C-enheter:
- Hur man använder I2C-kommunikation i STM32 Microcontroller
- I2C-kommunikation med PIC-mikrokontroller PIC16F877
- Hur man använder I2C i Arduino: Kommunikation mellan två Arduino-kort
USB
USB (Universal Serial Bus) är allmänt protokoll med olika versioner och hastigheter. Maximalt 127 kringutrustning kan anslutas till en enda USB-värdkontroll. USB fungerar som en "plug and play" -enhet. USB används i nästan enheter som tangentbord, skrivare, mediaenheter, kameror, skannrar och mus. Den är utformad för enkel installation, snabbare dataklassificering, mindre kabeldragning och hot swapping. Det har ersatt de större och långsammare seriella och parallella portarna. USB använder differentiell signalering för att minska störningar och tillåta höghastighetsöverföring över långa sträckor.
En differentialbuss är byggd med två trådar, den ena representerar den överförda data och den andra dess komplement. Tanken är att den "genomsnittliga" spänningen på ledningarna inte innehåller någon information, vilket resulterar i mindre störningar. I USB får enheterna dra en viss mängd ström utan att fråga värden. USB använder endast två ledningar för dataöverföring och är snabbare än det seriella och parallella gränssnittet. USB-versioner stöder olika hastigheter som 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5 Gbps (USB v3.0). Längden på enskild USB-kabel kan nå upp till 5 meter utan nav och 40 meter med nav.
BURK
Controller Area Network (CAN) används i t.ex. bilar för att möjliggöra kommunikation mellan ECU: er (motorstyrenheter) och sensorer. CAN-protokollet är robust, billigt och meddelandebaserat och täcker i många applikationer - t.ex. bilar, lastbilar, traktorer, industriella robotar. CAN-bussystemet möjliggör central feldiagnos och konfiguration över alla ECU: er. CAN-meddelanden prioriteras via ID så att de högsta prioriterade ID: erna inte avbryts. Varje styrenhet innehåller ett chip för mottagning av alla överförda meddelanden, bestäm relevans och agera därefter - detta möjliggör enkel modifiering och inkludering av ytterligare noder (t.ex. CAN-bus dataloggare). Applikationerna inkluderar start / stopp av fordon, kollisionsundvikande system. CAN-bussystemen kan ge hastighet upp till 1 Mbps.
Microwire
MICROWIRE är ett 3Mbps seriellt 3-trådsgränssnitt i huvudsak en delmängd av SPI-gränssnittet. Microwire är en serie I / O-port på mikrokontroller, så Microwire-bussen finns också på EEPROM och andra kringutrustning. De tre raderna är SI (Serial Input), SO (SerialOutput) och SK (Serial Clock). Seriell ingång (SI) till mikrokontrollern, SO är den seriella utgångsledningen och SK är den seriella klocklinjen. Data flyttas ut på den fallande kanten av SK och värderas på den stigande kanten. SI flyttas in på den stigande kanten av SK. En ytterligare bussförbättring till MICROWIRE kallas MICROWIRE / Plus. Huvudskillnaden mellan de två bussarna verkar vara att MICROWIRE / Plus-arkitekturen i mikrokontrollern är mer komplex. Den stöder hastigheter upp till 3 Mbps.
Asynkrona seriella protokoll
Den asynkrona typen av serieprotokoll är mycket viktigt när det gäller tillförlitlig dataöverföring på längre avstånd. Asynkron kommunikation kräver inte en tidsklocka som är gemensam för båda enheterna. Varje enhet lyssnar och skickar oberoende digitala pulser som representerar databitar med en överenskommen hastighet. Asynkron seriell kommunikation kallas ibland för Transistor-Transistor Logic (TTL) seriell, där högspänningsnivån är logisk 1, och lågspänningen motsvarar logik 0. Nästan alla mikrokontroller på marknaden idag har minst en universell asynkron mottagare- Sändare (UART) för seriell kommunikation. Exemplen är RS232, RS422, RS485 etc.
RS232
RS232 (rekommenderad standard 232) är ett mycket vanligt protokoll som används för att ansluta olika kringutrustning som bildskärmar, CNC-enheter etc. RS232 finns i manliga och kvinnliga kontakter. RS232 är punkt-till-punkt-topologi med maximalt en enhet ansluten och täcker avstånd upp till 15 meter vid 9600 bps. Information om RS-232-gränssnittet sänds digitalt med logiska 0 och 1. Den logiska "1" (MARK) motsvarar en spänning i området från -3 till -15 V. Den logiska "0" (SPACE) motsvarar en spänning i området från +3 till +15 V. Den levereras i DB9-kontakt som har 9 pinouts som TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 liknar RS232 som gör det möjligt att samtidigt skicka och ta emot meddelanden på separata linjer men använder en differentiell signal för detta. I RS-422-nätverket kan det bara finnas en sändande enhet och upp till 10 mottagande enheter. Dataöverföringshastigheten i RS-422 beror på avståndet och kan variera från 10 kbps (1200 meter) till 10 Mbps (10 meter). RS-422-linjen består av 4 ledningar för dataöverföring (2 tvinnade ledningar för överföring och 2 tvinnade ledningar för mottagning) och en vanlig GND-jordledning. Spänningen på dataledningarna kan ligga i intervallet -6 V till +6 V. Den logiska skillnaden mellan A och B är större än +0,2 V. Logisk 1 motsvarar skillnaden mellan A och B mindre än -0,2 V. RS-422-standarden definierar inte en specifik typ av kontakt, vanligtvis kan det vara ett plint eller en DB9-kontakt.
RS485
Eftersom RS485 använder flerpunkts topologi används den mest i branscherna och är branschföredraget protokoll. RS422 kan ansluta 32 linjedrivrutiner och 32 mottagare i olika konfigurationer men med hjälp av ytterligare repeater och signalförstärkare upp till 256 enheter. RS-485 definierar inte en specifik typ av kontakt, men det är ofta ett terminalblock eller en DB9-kontakt. Drifthastigheten beror också på linjens längd och kan nå 10 Mbit / s vid 10 meter. Spänningen på ledningarna ligger i intervallet -7 V till +12 V. Det finns två typer av RS-485, till exempel halv duplexläge RS-485 med 2 kontakter och full duplexläge RS-485 med 4 kontakter. För att lära dig mer om att använda RS485 med andra mikrokontroller, kolla länkarna:
- RS-485 MODBUS Seriell kommunikation med Arduino UNO som slav
- RS-485 Seriell kommunikation mellan Raspberry Pi och Arduino Uno
- RS485 Seriell kommunikation mellan Arduino Uno och Arduino Nano
- Seriekommunikation mellan STM32F103C8 och Arduino UNO med RS-485
Slutsats
Seriell kommunikation är ett av de allmänt använda kommunikationsgränssnittssystemen inom elektronik och inbäddade system. Datahastigheterna kan vara olika för olika applikationer. De seriella kommunikationsprotokollen kan spela en avgörande roll när de handlar i denna typ av applikationer. Så att välja rätt serieprotokoll blir mycket viktigt.