SPI, I2C, UART: Communicatieprotocollen & Hun Toepassingen
Microcontroller-ontwikkeling is een kardinaal proces in elektronica-assemblage. Maar de invoer van seriële protocollen en communicatie-interfaces vergemakkelijkt deze onderneming. In dit artikel willen we seriële communicatieprotocollen zoals SPI, I2C, UART-interface en UART uitputtend verkennen. We zullen de functies, voor- en nadelen, en voorbeelden van de seriële protocollen analyseren.
1. UART-interface
Wat is UART?
Figuur 1: Een UART-protocol op Arduino
Universal Asynchronous Reception and Transmission (UART) is een serieel communicatieprotocol dat hostcommunicatie met hulpparaten vergemakkelijkt. Primair stelt het seriële data-transmissie in staat. Bovendien is het in staat tot asynchrone communicatie en bidirectionele transmissie.
Het eenvoudige protocol heeft ook twee datalijnen: transmissie afhandelen (Tx) en ander signaalontvangst (Rx). Meestal is signaaltransmissie via digitale pin 0, terwijl ontvangst via digitale pin 1 verloopt.
Ook helpt het bij het synchroniseren van het beheer van een computer en externe seriële apparaten.
Hoe Werkt Het?
Figuur 2: Een DIY elektronische USB UART-bord
Essentieel beheert UART signaalcommunicatie tussen twee apparaten via de volgende middelen:
- Simplex
- Half Duplex
- Full Duplex
Simplex omvat eenrichtingsgewijs data-transport, terwijl half-duplex niet-simultane communicatie tussen twee apparaten in beide richtingen betekent. Ten slotte omvat full duplex gelijktijdige data-overdracht in beide richtingen.
Over het algemeen, na verbinding, is er data-overdracht van de zendende UART's datalijn naar de ontvangende UART. Het gebeurt via het volgende principe;
- Eerst zal de zendende UART de parallelle data van een masterapparaat omzetten in een seriële vorm voor overdracht naar de ontvangende UART. Op dezelfde manier verandert de ontvangende UART de seriële data in parallelle data voor gebruik door het aangesloten ontvangende apparaat.
- Aangezien UART asynchrone communicatie inhoudt, heeft het geen klokken. Dus zal de UART start- en stop-bits genereren om het begin en einde van een bericht aan te duiden.
- De twee UART's moeten functioneren met dezelfde BAUD-snelheid of UART data-overdrachtssnelheid. Ideaal is dit om nauwkeurige timing van de databits te garanderen, aangezien een verschil van meer dan 10% de data nutteloos maakt.
UART Werkprotocol
Data Transmissie en Ontvangst
- Voor transmissie vereist de zendende UART data te ontvangen van een databus zoals een CPU.
- Vervolgens voegt het de drie bits toe, namelijk het startbit, pariteitsbit en stopbit. De drie vormen een datapakket dat wordt overgedragen naar de ontvangende UART via de TX-pin.
- Data-transmissie stopt na uitputting van data in de zendende UART.
Interruptcontrole
Data-interrupts zijn handig in het automatisch verzenden van bufferinhoud. U kunt een interruptcontrole activeren in de volgende scenario's:
- Eerst, gebruik het wanneer u een FIFO (First in, First out) Overflow-fout, lijnbreukfout, framefout of Pariteitsfout ervaart.
- Ook activeer het tijdens dataontvangst, verzending of terwijl u timeout ontvangt.
FIFO-operatie
Fig 3. Een UART-interface op Arduino
Stellaris familie UART-modules hebben twee 16-byte FIFO's, één voor dataontvangst en de ander voor transmissie. Ook kunt u ze op verschillende dieptes configureren om verschillende interrupts te leveren. Bijvoorbeeld, u kunt 1/8 diepte, 1/4 diepte, 1/2 diepte, etc. hebben.
Werkproces van zendende FIFO
- Primair begint data-transmissie na data-invoer. Omdat het tijdrovend is, is data-invoer continu tot de zendende FIFO vol is.
- Eenmaal vol, moet u data-invoer stoppen, anders verliest u alle nieuwe data.
- Vervolgens stuurt de zendende FIFO de data bit voor bit tot het leeg is. Ten slotte creëert de zendende FIFO een extra sleuf.
Werkproces van ontvangende FIFO
- Na het ontvangen van data uit de bovenstaande stap, slaat de hardware het op in de ontvangende FIFO. Ideaal is het ontvangen en wissen van data door het ontvangende FIFO-programma een automatisch proces. Dus zal er voldoende ruimte in de ontvangende FIFO zijn.
- Het heeft ook een transceiver FIFO die essentieel is in het oplossen van CPU-inefficiëntieproblemen. Verder helpt het bij het oplossen van het probleem van frequente UART-transceiver-onderbrekingen.
- Ten slotte heeft FIFO geen dataverlies omdat het alle waarschijnlijke verliesavenues van tevoren afdicht.
Loopback
De UART heeft een interne loopback voor debugging en diagnostiek over waar de RX-invoer de verzonden data ontvangt.
Seriële Infrarood Protocol
UART heeft een IrDA Serial Infrared (SIR) die fungeert als encoder/decoder-module. Het is handig bij het vertalen van een half-duplex seriële SIR-interface en een asynchrone UART-datastroom.
Bovendien levert het seriële communicatieprotocol een gedecodeerde invoer en een digitaal gecodeerde uitvoer aan de UART.
Voordelen van UART Gebruik
- Het eenvoudige communicatieprotocol is een goed gedocumenteerde module die ook gemakkelijk te gebruiken is.
- Tweedens vereist het geen seriële kloklijn.
- Derde heeft het een pariteitsbit die foutcontrole mogelijk maakt.
Nadelen van UART Gebruik
- De UART-interface heeft een dataframe-groottebeperking van 9 bits en heeft langzame overdrachtssnelheden.
- Bovendien is het ongeschikt voor het gebruik van veel master-systemen en slave-apparaten.
- Ook heeft het een verplichte baud-snelheid van binnen 10% als schild tegen dataverlies.
- Vierde heeft het over het algemeen langzamere snelheden tijdens data-overdracht tussen apparaten.
UART Voorbeelden in Microcontrollers
- UART Seeeduino V4.2
- USB naar UART 5V
- Base Shield V2
- USB CP2102 Seriële Converter
2. I2C-interface
Wat is I2C?
Figuur 4: Een Differentiele Druksensor gebruikt I2C
Het Inter-integrated-circuit (I2C) communicatieprotocol lijkt op de UART. Maar, terwijl UART bestemd is voor PC-apparaatcommunicatie, is I2C nuttig in sensoren en module-applicaties.
Bovendien kan de bidirectionele twee-draads synchrone seriële bus meerdere apparaten verbinden zonder het communicatiepad in te leveren. Het is dankzij zijn gedeelde bus- en adres-systeem-eigenschap.
Maar deze functie komt ten koste van relatief trage communicatie tussen apparaten vergeleken met een SPI. De snelheid is afhankelijk van externe ruis, draadkwaliteit en datasnelheid.
Ten slotte stelt de twee-draads interface verbinding in met lage-snelheidsapparaten zoals EEPROMs, Analog/Digitale converters en microcontrollers.
Hoe Werkt Het?
Een I2C-protocol heeft twee lijnen: de seriële data lijn acceptatiepoort (SDA) en een seriële kloklijn (SCL). De SCL vergemakkelijkt transmissiesynchronisatie terwijl SDA de datalijn vertegenwoordigt voor het verzenden en ontvangen van databits.
Tijdens de overdracht, prompt het masterapparaat de busdata-overdracht. Gelijktijdig genereert het een klok die het overdrachtapparaat opent. In dit scenario is het geadresseerde apparaat in de transmissie een slave-apparaat.
Opmerkelijk, het masterapparaat en slave-apparaat hebben geen constante data-overdrachtssnelheid. Eerder, hun relatie is afhankelijk van de data-overdrachtrichting op het moment van transmissie.
Ook is het belangrijk om een pull-up weerstand aan de I2C-voeding te verbinden voor optimale werking.
I2C Werkprotocol
Figuur 5: Een pin 0,96 inch OLED 128X64 OLED Display Module IIC I2C
Data-overdrachtsmethode
De verbindingsprocedure is als volgt:
- De master-uitgang zal een transmissiesignaal naar de aangesloten slaves sturen, primair door de SDA-lijn van hoog spanningsniveau naar laag te schakelen. Vervolgens schakelt het de SCL-lijn van hoog spanningsniveau naar laag.
- Dan stuurt de master 7-bit of 10-bit adressen en lees/schrijf-bits naar elk van de slaves.
- Derde, de slaves vergelijken het adres met hun eigen. Als het matcht, zal het een ACK-bit retourneren, de SDA-lijn naar laag schakelen. Echter, als ze niet matchen, zal de slave de SDA-lijn op een hoog niveau laten.
- Vervolgens stuurt de master het dataframe of ontvangt het (afhankelijk van de matchende adressen). Dan, na volledige data-overdracht, retourneert het ontvangende onderdeel een ACK-bit aan de data-afzender. Het is om een volledige transmissie te bevestigen.
- Ten slotte schakelt de master de SCL naar hoog en dan de SDA om het einde van de communicatie te communiceren.
Kloksynchronisatie
Elke master moet zijn kloksignaal genereren in de SCL-lijn voor data-overdracht. Bovendien is het alleen tijdens de hoge periode van de klok dat data geldig blijft in een I2C-transmissie.
Transmissiemodi
Het overdraagt primair via twee middelen, namelijk:
Snelle Modus
Apparaten op snelle modus ontvangen en transmitteren data met een snelheid van 400 kbit/s. Ook kan een snelle modus I2C-bus glitches aanzienlijk onderdrukken, en hun uitgang heeft een hellingcontrole-functie.
Hoge-Snelheidsmodus
Een I2C-bus op hoge-snelheidsmodus zal data ontvangen/transmitteren met een bitsnelheid van 3,4 Mbit/s. Dus het heeft snellere data-overdrachtssnelheden dan de vroegere snelle modus.
Voordelen van I2C
- Het heeft een aanzienlijk beperkt aantal pinnen/signalen zelfs als u talloze apparaten op de master heeft aangesloten.
- Tweedens biedt een I2C-apparaat flexibiliteit dankzij zijn multi-master en multi-slave capaciteit.
- Ook is het eenvoudig te gebruiken aangezien u slechts twee bidirectionele draden nodig hebt om verbinding te maken met talloze apparaten.
- Daarnaast biedt het uitgebreide aanpasbaarheid en kan het ook meerdere masters ondersteunen.
Nadelen van I2C
- Het heeft een relatief trage snelheid en moet pull-up weerstanden gebruiken, in tegenstelling tot SPI, die alleen push-pull weerstanden nodig heeft. Ook belemmert zijn open-drain ontwerp de snelheid.
- Bovendien nemen de weerstanden ruimte in beslag wat van immense essentie is in PCB-assemblage.
- Het is niet gemakkelijk te gebruiken wanneer u talloze apparaten hebt aangesloten.
Voorbeelden van I2C in Microcontrollers
- Raspberry Pi's 4-kanaals 16-bit ADC
- I2C Hub (6 Poort)- Grove
- I2C Driver/Adapter
- I2C Arduino
3. SPI-interface
Wat is SPI?
Figuur 6: Een SPI-interface is handig in Display Modules.
De Serial Peripheral Interface (SPI) is bestemd voor gebruik in microcontrollers. Omdat het in een full duplex functioneert, stelt het gelijktijdige data-transmissie en -ontvangst in.
De SPI is relatief sneller dan I2C, met een data-overdrachtssnelheid van minimaal 8 bits. Primair stelt dit module's eenvoudige protocol snellere data-snelheden in. Dus is het belangrijk in applicaties die snelheid vereisen, zoals displaymodules en SD-kaarten.
Het is ook essentieel in applicaties met een plotselinge verandering van informatie, bijv. thermometers.
Hoe Werkt Het?
Fig 7: SD-kaarten gebruiken SPI
Een SPI-vorm van apparaat zal opereren in een van de volgende twee manieren:
- Eerst selecteert het het apparaat met een Chip Select-lijn. Let op dat elk apparaat zijn unieke Chip Select-lijn vereist.
- Als alternatief functioneert het ook via daisy chaining.
U kunt zoveel apparaten verbinden als u wilt in een SPI-interface. Echter, in de meeste gevallen zult u beperkt zijn door de beschikbare hardware-selectlijnen. Ten slotte heeft de module tijdens punt-naar-punt-communicatie geen adresoperaties nodig.
SPI Werkprotocol
SPI functioneert via vier poorten, namelijk:
- Master Data Uitgang, Slave Data Ingang (MOSI)
- Master data invoer, slave data uitgang (MISO)
- Een kloksignaal (SCLK)
- Slave-ingeschakeld signaal (NSS)
Bij het gebruik van een multi-slave-systeem vereist elk respectievelijke slave een uniek inschakelsignaal. Deze vereiste vercompliceert de hardwarevereiste vergeleken met een I2C-communicatie.
Ook heeft de SPI-interface twee schuifregisters. Het stelt synchrone seriële data-overdracht in tussen een enkel masterapparaat, zoals een CPU, naar randapparaten.
Voordelen van SPI Gebruik
- Het is eenvoudig te gebruiken omdat het, in tegenstelling tot I2C, geen complex slavete adresseringssysteem heeft.
- Tweedens is het het snelste protocol van alle seriële interfaces die we behandeld hebben (sneller dan UART en I2C).
- Het heeft geen start- en stopbits zoals in UART-communicatie. Dus staat het continue data-overdracht zonder onderbrekingen toe.
- Ten slotte heeft het gescheiden MISO en MOSI lijnen die gelijktijdig verzenden en ontvangen van data mogelijk maken.
Nadelen van SPI Gebruik
- De meeste van de pinpoorten zijn bezet, wat het aantal apparaten dat u kunt verbinden beperkt.
- Ook mist het een gespecificeerde stroomcontrole, en in tegenstelling tot I2C is er geen mechanisme om te bevestigen dat data is verzonden/ontvangen.
- Het vereist het gebruik van 4 lijnen, zoals we hierboven benadrukt hebben, en in tegenstelling tot UART mist het een foutcontrolemechanisme.
- Vierde heeft het ook een enkele master.
Voorbeelden van SPI in Microcontrollers
- SPI Seeeduino V4.2
- SPI Driver/Adapter - Makkelijk SPI-apparaten Besturen
UART, I2C en SPI Vergelijken
Welk Van Deze Communicatieperiferie Is De "Beste"? UART, SPI, Of I2C?
Er zijn geen superieure communicatieperiferieën uit de drie, aangezien elk zijn belangrijkste voor- en nadelen heeft. Kies dus het best passende protocol afhankelijk van uw project. Bijvoorbeeld, SPI zou u het best dienen als u op zoek bent naar snelheid.
Maar als u talloze apparaten wilt verbinden zonder een complex array te hebben, ga voor I2C.
Conclusie
We hebben alle belangrijke inzichten die u moet weten over UART, I2C en SPI communicatie-interfaces en hun verschillende overdrachtssnelheden blootgelegd. Ook zijn we hier om eventuele vragen over de communicatieprotocollen te beantwoorden. Neem contact met ons op, en we komen u direct te hulp.
Industriële technologie
- Essentiële Breakout-boards voor Raspberry Pi: I2C, UART, GPIO & Meer – Kits, Headers & Beveiliging
- Datastroom begrijpen: van simplex naar full-duplex communicatie
- Netwerkprotocollen begrijpen: van fysieke laag tot geavanceerde arbitrage
- Fundamenten van digitaal geheugen: adressering, toegang en volatiliteit
- 14 Innovatieve Nanotechnologie-toepassingen: Van Geneeskunde Tot Materialen
- Zilverbrazen Uitgelegd: Proces, Materialen en Toepassingen
- Productie-efficiëntie Ontgrendelen: Bewezen Data-gedreven Productiestrategieën
- Data Inname Stroomlijnen om Slimmere Besluitvorming te Drijven
- Houtsoorten & Hun Praktische Toepassingen: Van Bouw tot Papierproductie
- Wolfram: Verleden toepassingen en moderne innovaties
- MQTT vs. DDS: De Juiste M2M Protocol Kiezen voor IoT