Introductie
SPI en UART worden gebruikt in alles, van eenvoudige microcontrollers tot complexe industriële apparatuur. Als je twee apparaten wilt verbinden, moet je een van beide kiezen.
In dit artikel vergelijken we SPI en UART om u te helpen bepalen welk protocol geschikt is voor uw project.

SPI
Wat is een SPI (Serial Peripheral Interface)?
Het staat voor Serial Peripheral Interface. Dit is een communicatieprotocol waarmee twee apparaten met elkaar kunnen communiceren.
Deze connector wordt veel gebruikt voor communicatie tussen een microcontroller en een geheugenchip. Hij wordt ook vaak gebruikt om randapparatuur zoals sensoren of beeldschermen aan te sluiten.
Omdat SPI een serieel protocol is, gebruikt het slechts één draad (of lijn) om gegevens te verzenden. Dit betekent dat de gegevens die over de draad worden verzonden slechts bit voor bit worden verzonden. In de meeste gevallen gebeurt deze seriële verzending zeer snel.
Het is bovendien veelzijdig genoeg om in allerlei toepassingen te worden gebruikt – je zou SPI bijvoorbeeld kunnen gebruiken om een USB-stick op je computer aan te sluiten of een LCD- scherm op je Arduino-bord.

SPI-draden
SPI-draden
Met dit protocol kunnen twee apparaten informatie naar elkaar verzenden. Het SPI-protocol bestaat uit vier draden:
MISO
MISO staat voor master in slave out. Dit is een manier om te communiceren tussen twee SPI-apparaten.
De MISO-draad is een bidirectionele signaallijn. Zorgt voor gegevensuitwisseling tussen de master- en slave-apparaten in een synchroon communicatiesysteem. Deze draad wordt gebruikt om gegevens van het master-apparaat naar het slave-apparaat te verzenden en maakt de ontvangst van gegevens door het master-apparaat van het slave-apparaat mogelijk.
SS/CS
Dit bepaalt of het apparaat waarmee wordt gecommuniceerd momenteel is geselecteerd. De SS/CS-lijn is een van deze gedeelde lijnen. Het kan worden gebruikt om te selecteren met welk apparaat op de bus u wilt communiceren.
De SS-pin wordt normaal gesproken hoog getrokken, terwijl de CS-pin laag wordt getrokken. In het geval van SPI zijn deze signalen open-drain. Ze moeten met weerstanden omhoog getrokken worden om ze laag te kunnen drijven. Als je bijvoorbeeld een 4-bits chipselectie hebt die je op een 8-bits bus wilt gebruiken, kun je alle 4 die chipselecties combineren tot één 8-bits chipselectie door ze samen te binden en laag te trekken met een enkele pull-up weerstand.
SCK
De seriële kloklijn, ook wel shiftclock genoemd, wordt gebruikt om de gegevensoverdracht tussen de microcontroller en het SPI-apparaat te synchroniseren. Het is een continu kloksignaal dat de snelheid bepaalt waarmee gegevens in en uit het apparaat worden geschoven.
Dit kloksignaal wordt gebruikt om alle andere signalen in een SPI-bus te synchroniseren. Het is meestal aangesloten op een speciale pin op het masterapparaat. De frequentie van dit kloksignaal moet groter dan of gelijk aan 1 MHz zijn.
MOSI
Het MOSI-signaal laat de microcontroller in een computer weten dat hij gegevens naar het SPI-randapparaat moet sturen. Deze leest het vervolgens en stuurt het door naar zijn eigen randapparatuur.
In de wereld van datatransmissie betekent een seriële interface dat één bit informatie tegelijk wordt verzonden, in sequentiële volgorde. Het draagt gegevens over en neemt deze van het master-apparaat en stuurt deze naar het slave-apparaat.

UART
Wat is een UART (Universal Asynchronous Receiver Transmitter)?
Een standaardmanier om gegevens tussen twee apparaten te verzenden. Het wordt gebruikt in veel verschillende soorten elektronische apparaten, van consumentenapparaten tot industriële apparatuur.
Het wordt "universeel" genoemd omdat het kan worden gebruikt om te communiceren met veel verschillende soorten apparaten en protocollen, en het wordt "asynchroon" genoemd omdat het niet vereist dat de zender en ontvanger met elkaar worden gesynchroniseerd - dat wil zeggen, het doet ' Ze hoeven niet met regelmatige tussenpozen stukjes gegevens te verzenden.
De UART ontvangt invoer van een computer of ander apparaat en stuurt deze via hetzelfde protocol naar een ander apparaat. Dit betekent dat als u een computer met een seriële poort hebt, u deze via die poort kunt verbinden met een andere computer of apparaat en gegevens tussen beide kunt verzenden, zowel bedraad als draadloos , zolang beide apparaten hetzelfde protocol ondersteunen.
SPI- en UART-overeenkomsten
Beide worden gebruikt om te communiceren tussen microcontrollers en randapparatuur. Beide protocollen zijn gebaseerd op dezelfde principes:

Seriële communicatie
Duplex seriële communicatie
Deze protocollen maken beide gebruik van duplex seriële communicatie. Dit betekent dat ze tegelijkertijd gegevens kunnen verzenden en ontvangen, wat ze ideaal maakt voor apparaten die met elkaar moeten kunnen praten terwijl ze tegelijkertijd andere dingen moeten doen, zoals een laptop die met zijn printer praat.
Hierdoor kunnen zowel SPI- als UART-protocollen met hogere snelheden werken dan andere seriële interfaces, omdat ze niet hoeven te wachten op een reactie voordat ze een ander signaal verzenden.
Communicatie op korte afstand
Zowel SPI als UART worden gebruikt voor communicatie op korte afstand. Dit betekent dat ze gegevens over een paar voet verzenden in plaats van over lange afstanden zoals Ethernet. Ze worden allebei gebruikt in microcontrollers, kleine computers die taken uitvoeren zoals het aansturen van motoren of sensoren.
data Processing
Zowel SPI als UART hebben een vergelijkbaar concept van gegevensverwerking. Beide zijn ontvanger-zenderapparaten die een seriële communicatie-interface gebruiken om gegevens te verzenden en te ontvangen. Bij SPI is de ontvanger verbonden met de microprocessor, terwijl deze bij UART is verbonden met een randapparaat. De microprocessor kan met hoge snelheid bytes aan gegevens via de SPI-bus of UART-lijn verzenden.
SPI- en UART-verschillen
Ze lijken op elkaar in de manier waarop ze het mogelijk maken dat gegevens tussen apparaten worden verzonden, maar er zijn enkele belangrijke verschillen tussen beide.
Snelheid
SPI gebruikt vier datakabels om gegevens met hoge snelheden over te dragen, terwijl UART er slechts twee gebruikt. Daarom kunnen SPI-protocollen veel sneller gegevens van en naar een apparaat overbrengen in vergelijking met UART-protocollen.
Datasnelheden
SPI verzendt en ontvangt gegevens met een hoge snelheid tot 100 MHz, terwijl UART gegevens verzendt en ontvangt met een veel lagere snelheid tot 20 KBps. Dit betekent dat UART kan worden gebruikt voor toepassingen met lage snelheid, zoals het verzenden van tekstberichten, terwijl SPI meer geschikt is voor toepassingen met hoge snelheid, zoals het besturen van motoren of andere hardwareapparaten.

Draadinterface:
Draadinterface:
SPI is een master/slave-communicatieprotocol dat werkt in full-duplexmodus. De master geeft informatie aan de slave, die deze verwerkt en een antwoord terugstuurt. Met SPI is het mogelijk om meerdere slaves op dezelfde bus aan te sluiten, waardoor ze allemaal gelijktijdig met elkaar kunnen communiceren.
UART is een vereenvoudigd serieel protocol dat slechts één paar draden nodig heeft voor het verzenden en ontvangen van gegevens. Het is mogelijk om meerdere apparaten op dezelfde bus aan te sluiten met behulp van UART, maar ze kunnen niet allemaal tegelijk praten zoals met SPI.
Datatransmissie
Meestal gebruikt voor snelle gegevensoverdracht tussen twee apparaten, zoals een microcontroller en een andere chip of randapparaat. De microcontroller fungeert als het master-apparaat en regelt de gegevensstroom tussen zichzelf en het slave-apparaat. SPI kan meerdere bits tegelijk verzenden, waardoor het efficiënter is dan UART, maar het vereist complexere hardware aan beide uiteinden van de verbinding.
UART is niet goed voor snelle verzending omdat elke bit afzonderlijk moet worden verzonden; er is geen manier om meerdere bits tegelijk te verzenden.
SPI-voordelen
SPI heeft verschillende voordelen ten opzichte van andere interfacetypes. Dit is veel sneller dan seriële communicatie, waarbij gegevens één voor één moeten worden verzonden. Andere voordelen zijn:
Laag signaal/aantal pennen
SPI biedt een laag aantal signalen/pinnen, wat betekent dat u minder kabels kunt gebruiken om uw systeem aan te sluiten dan wanneer u een ander type interface zou gebruiken. Dit maakt SPI bijzonder handig wanneer u naar apparaten met een kleine vormfactor kijkt of wanneer de ruimte beperkt is.
Ondersteunt verschillende Masters
Maakt het mogelijk meerdere masters met elkaar te laten communiceren. Dit maakt het ideaal voor gebruik in microcontrollers, waar meerdere apparaten dezelfde bus kunnen delen en elk gegevens van en naar de bus kunnen sturen.
Een SPI-apparaat kan bijvoorbeeld gegevens naar een ander SPI-apparaat (zoals een beeldscherm of sensor) sturen zonder zich zorgen te hoeven maken of het andere apparaat zijn taak al heeft voltooid.
Twee draden voor communicatie
Dit protocol gebruikt twee draden om communicatie tussen verschillende apparaten tot stand te brengen. SPI gebruikt afzonderlijke klok- en datalijnen om informatie tussen apparaten te verzenden. De SPI-bus heeft een master-apparaat en een of meer slave-apparaten. De master kan met elk van de slaves communiceren door commando's in serieel formaat over de MOSI-lijn te sturen, terwijl tegelijkertijd gegevens naar de slave op de MISO-lijn worden gestuurd.
Aanpassen aan de eisen van verschillende slaven
SPI is zeer geschikt voor toepassingen waarbij meerdere slave-apparaten op een hostcontroller moeten worden aangesloten, zoals in een embedded systeem of een computersysteem. Het protocol stelt de slave-apparaten in staat zich aan te passen aan de eisen van de hostcontroller, waardoor het gemakkelijk kan worden gebruikt voor toepassingen zoals het aansluiten van meerdere sensoren met verschillende communicatievereisten.
SPI-nadelen
Hoewel SPI veel voordelen heeft, waaronder de mogelijkheid om meerdere apparaten te ondersteunen, heeft het ook enkele nadelen.
Ingewikkeld
SPI is een seriële interface die communicatie tussen meerdere apparaten mogelijk maakt. Het probleem met SPI is dat het ingewikkeld kan zijn om in te stellen, vooral als er veel apparaten in de mix zitten.
Wanneer u SPI-apparaten aansluit, moet u ervoor zorgen dat de lijnen elkaar niet storen en dat ze elkaar niet kruisen. Dit kan leiden tot problemen zoals gegevensverlies of onjuiste uitlezingen van sensoren.
Lagere snelheid
SPI is langzamer dan andere communicatieprotocollen omdat er meer klokcycli nodig zijn om gegevens over te dragen dan zij. Dit kan een probleem zijn als u een grote hoeveelheid gegevens probeert te verzenden, aangezien de lagere snelheid betekent dat het langer duurt voordat alle informatie is overgedragen.
Half-duplex-interface
De SPI-interface is een half-duplex-interface, wat betekent dat als een apparaat gegevens verzendt, het geen gegevens kan ontvangen. Als het apparaat niet klaar is om gegevens te verzenden of te ontvangen, moet het worden verteld te wachten totdat het klaar is om dit te doen.
UART-voordelen
UART heeft verschillende andere voordelen ten opzichte van andere seriële interfaces:
Geen klok nodig
UART's hebben geen klok nodig. Dit betekent dat de gegevens met een constante snelheid worden verzonden en er geen synchronisatie nodig is. Dit maakt UART's uiterst handig voor het verzenden van gegevens over lange afstanden of door lawaaierige omgevingen.
Bij andere soorten seriële communicatie, zoals SPI of I2C, moet u de zender en ontvanger synchroniseren zodat ze met elkaar kunnen praten. Dit betekent dat als er een vertraging optreedt in een van beide apparaten, dit communicatieproblemen kan veroorzaken. Als het ene apparaat zijn gegevens bijvoorbeeld iets later verzendt dan het andere apparaat verwacht, kan dit leiden tot ontvangstfouten.
Eenvoudig te bedienen
UART's zijn eenvoudig in te stellen en te gebruiken omdat ze geen configuratie vereisen, behalve het aansluiten van de datapin op de juiste I/O-pin van uw microcontroller. Ze hebben ook weinig pinnen, waardoor u er veel op één printplaat kunt plaatsen zonder dat dit ten koste gaat van de ruimte of het stroomverbruik.
Pariteitsbit voor foutcontrole
Wanneer u met een seriële interface werkt, is het belangrijk om foutcontrole te hebben. UART's worden geleverd met een pariteitsbit die foutcontrole mogelijk maakt, wat kan helpen ervoor te zorgen dat uw gegevens correct worden verzonden.
UART-nadelen
Hoewel UART een effectieve oplossing is voor verschillende toepassingen, zijn er enkele nadelen aan het gebruik van het UART-protocol:
Alleen framegrootte 9 bits
Dit betekent dat de framegrootte, of de hoeveelheid gegevens die over een enkele draad kan worden verzonden, beperkt is tot negen bits per frame. Als u meer dan 9 bits in één frame probeert te verzenden, wordt het afgekapt.
Lage datatransmissiesnelheden
Het grootste nadeel van UART is dat het lage datatransmissiesnelheden heeft. Hoewel dit misschien geen probleem is voor eenvoudige toepassingen, kan het een groot nadeel zijn voor gegevensoverdracht met hoge snelheid.
De reden hiervoor is dat UART slechts één draad gebruikt voor communicatie en geen gebruik maakt van foutcorrectietechnieken.
Hierdoor is UART niet erg geschikt voor toepassingen waarbij grote hoeveelheden gegevens snel tussen twee apparaten moeten worden verzonden.
Kan niet meerdere master- of slavesystemen gebruiken
Als u meerdere Master- of Slave-systemen wilt gebruiken, moet u ervoor zorgen dat ze allemaal op dezelfde klokfrequentie staan. Als dat niet het geval is, zijn uw gegevens beschadigd.
U moet ook voorzichtig zijn met het gebruik van verschillende baudrates voor hetzelfde master- en slave-systeem. Doet u dat wel, dan worden de gegevens niet goed verwerkt.

SPI versus UART
Conclusie
Dus, wat is het oordeel? Welk busprotocol moet u gebruiken? Is het SPI of UART? Nou, daar is geen eenvoudig antwoord op. De beste keuze zal waarschijnlijk afhangen van uw projectbehoeften en bekendheid met deze protocollen. Als u echter een systeem heeft dat al een van deze protocollen gebruikt, kunt u dit het beste volhouden om de communicatie tussen meerdere systemen consistent te houden.


Taal wijzigen