UART - Seriële communicatie¶
Apparaten kunnen met elkaar op vele manieren communiceren. Als data via een draad of elektrische verbinding wordt verstuurd dan gebeurd dat door af te spreken dat voltage veranderingen een bepaalde betekenis hebben. Door één apparaat een signaal te laten sturen en het andere apparaat te laten luisteren kan er een verbinding tot stand komen.
Voorbeeld: het Morse protocol.
Een historisch voorbeeld van seriële communicatie is de telegraaf. Hiermee konden berichten snel over grote afstanden via een draad worden verstuurd. De telegraaf werkt met morse code.
De morse code is een voorbeeld van. Het Morse protocol is een serieel protocol om dat de tekens achter elkaar worden verstuurd.
Morse protocol
Een .
staat voor een korte puls en een -
staat voor een lange puls.
Karakter | Code | Karakter | Code | Karakter | Code |
---|---|---|---|---|---|
A |
.- | N |
-.- | 0 |
----- |
B |
-… | O |
— | 1 |
.---- |
C |
-.-. | P |
.–. | 2 |
..— |
D |
-.. | Q |
–.- | 3 |
…– |
E |
. | R |
.-. | 4 |
....- |
F |
..-. | S |
… | 5 |
..... |
G |
–. | T |
- | 6 |
-.... |
H |
.... | U |
..- | 7 |
–… |
I |
.. | V |
…- | 8 |
—.. |
J |
.— | W |
.– | 9 |
----. |
K |
-.- | X |
-..- | ||
L |
.-.. | Y |
-.– | ||
M |
– | Z |
–.. |
UART is een protocol om data te versturen via een draad. Het is een serieel protocol omdat de bits achter elkaar worden verstuurd. Het is een asynchroon protocol omdat er geen klok signaal wordt verstuurd. De ontvanger moet zelf de bits tellen en interpreteren.
Baud-rate¶
Om een signaal te versturen moet de zender en de ontvanger het eens zijn over de snelheid van het versturen. De snelheid wordt uitgedrukt in baud-rate. De baud-rate is het aantal bits per seconde. Als de baud-rate 9600 is dan worden er 9600 bits per seconde verstuurd. De baud-rate wordt ook wel de symbol rate genoemd. Veelgebruikte baud-rates zijn 9600, 19200, 38400, 57600 en 115200.
Let op
De baud-rate moet hetzelfde zijn voor de zender en de ontvanger. Als de baud-rate niet hetzelfde is dan kan de ontvanger de bits niet goed interpreteren.
Van bits naar data¶
Informatie wordt via een draad verstuurd als bits, een verzameling van enen en nullen. Je kan met bits alle soorten data versturen, als de zender en de ontvanger maar allebei aan dezelfde afspraken houden. De afspraken gaan over de volgende zaken:
- Hoeveel bits worden er verstuurd?
- In welke volgorde worden de bits verstuurd?
- Wat betekenen de bits?
Voor meer informatie over hoe je bits omzet in ander soorten data zie het artikel over getal representaties.
In de praktijk zal je niet veel met losse bits hoeven rekenen. Deze worden door de programmeeromgeving en de hardware die je gebruikt automatisch omgezet naar bytes. Je zal vaak zelf verantwoordelijk zijn voor het omzetten van bytes naar andere data types. Lees het artikel over variabelen in het geheugen om hier meer inzicht in te krijgen.
Baudrate en bits per seconde
Afhankelijk van de afspraken die je maakt kan je iets zeggen over de daadwerkelijke snelheid van je seriële verbinding. Vaak wordt er afgesproken om 1 stop-bit te gebruiken. Dit betekent dat er na elke byte een extra bit wordt verstuurd. Als je een baud-rate van 9600 gebruikt dan worden er 9600 bits per seconde verstuurd. Als je 8 bits per byte gebruikt dan worden er \(9600/9 = 1066\) bytes per seconde verstuurd.
Als je ook nog een pariteit bit gebruikt dan wordt er een extra bit verstuurd om te controleren of de data goed is overgekomen. Dan zal je daadwerkelijke snelheid naar \(9600/10 = 960\) bytes per seconde gaan.