Wat is UART?

Asynchrone seriële communicatieschakeling zonder kloklijn, waarbij zender en ontvanger op dezelfde baudrate zijn ingesteld. Tekens worden met een startbit en stopbit begrensd.

Japanse benaming: UART

“UART” komt voor in 9 oefenvragen uit 4 onderwerpen, bijv. Embedded systemen en firmware, CPU en architectuur, Energiebeheer (softwaregestuurd).

Vakgebied: Embedded systemen en firmware

Hoe een UART-frame werkt

Een UART (universal asynchronous receiver-transmitter) verstuurt bytes bit voor bit over een zendlijn en ontvangt op een aparte lijn, waarbij alleen de massa met het andere apparaat wordt gedeeld. Er wordt geen klok meegestuurd. In rust staat de lijn op logisch 1; een teken begint met een startbit 0, gevolgd door meestal acht databits, minst significante bit eerst, een optioneel pariteitsbit en een of meer stopbits op 1. Het meest gebruikte formaat wordt geschreven als 8N1: acht databits, geen pariteit, één stopbit. Beide kanten moeten vooraf op dezelfde baudrate zijn ingesteld, zoals 9600 of 115200 bits per seconde.

Doorvoer en timingtolerantie

De framing kost bandbreedte: een 8N1-teken neemt tien bittijden in voor acht bits data. Bij 115200 bps geeft dat 115200 / 10 = 11.520 bytes per seconde, ongeveer 87 µs per byte, zodat veel logging een programma kan ophouden. De ontvanger synchroniseert op de dalende flank van elk startbit, meestal door de lijn met 16 keer de baudrate te bemonsteren, en bemonstert daarna elk bit rond het midden met zijn eigen klok. Elk verschil in snelheid stapelt zich op, en zodra de drift bij het stopbit een halve bit bereikt, is het teken corrupt; de gecombineerde fout van beide kanten moet dus binnen enkele procenten blijven.

UART vs. SPI en I2C

UART is de eenvoudigste van de gangbare seriële verbindingen op een board: twee signaaldraden, point-to-point, zonder klok en met weinig protocol. SPI (serial peripheral interface) is synchroon, met een gedeelde klok, data in elke richting en een chip-selectlijn per apparaat, wat kloksnelheden van tientallen megahertz mogelijk maakt maar voor elk extra apparaat een draad toevoegt. I2C (inter-integrated circuit) verbindt veel apparaten op twee open-draindraden met behulp van adressen, op enkele honderden kilohertz tot enkele megahertz. Kies UART om eenvoudig twee apparaten te koppelen, SPI voor snelheid en I2C voor veel apparaten op weinig draden.

Waar je het tegenkomt

Vrijwel elke microcontroller heeft een of meer UART's, naast SPI, I2C en vaak CAN. Ze leveren debugconsoles, verbinden gps-ontvangers en mobiele en draadloze modules, en dienen als herstelpad waarlangs een bootloader nieuwe firmware ontvangt. De UART zelf werkt op logische niveaus; standaarden zoals RS-232 en RS-485 voegen lijndrivers toe met andere spanningsniveaus of differentiële signalering voor langere kabels. Omdat tekens op elk moment kunnen binnenkomen, gebruiken praktische drivers ontvangst-FIFO's met interrupts of DMA, zodat er geen byte verloren gaat terwijl de processor bezig is.

Nu oefenen: vragen over UART

Welke eigenschap van seriële communicatie via UART is juist?

  1. ADe zender levert een kloklijn en de ontvanger leest de gegevens met die klok
  2. BEr wordt geen kloklijn gebruikt; zender en ontvanger stellen dezelfde communicatiesnelheid (baudrate) in en het startbit markeert het begin
  3. COp één lijn worden veel apparaten aangesloten en de ontvanger wordt via een adres gekozen
Antwoord en toelichting tonen

Antwoord: B. Er wordt geen kloklijn gebruikt; zender en ontvanger stellen dezelfde communicatiesnelheid (baudrate) in en het startbit markeert het begin

UART is asynchrone seriële communicatie via twee lijnen (plus aarde), één voor zenden en één voor ontvangen. Zonder verkeer staat de lijn op 1; een startbit van 0 geeft het begin van een teken aan, gevolgd door de databits en een stopbit van 1. Omdat geen klok wordt verzonden, moeten beide zijden op dezelfde snelheid, zoals 115200 bps, zijn ingesteld. Het wordt veel gebruikt voor foutopsporingsuitvoer en voor de aansluiting van GPS- en draadloze modules.

Bij een UART van 115200 bps en het formaat met 8 databits, geen pariteit en 1 stopbit (8N1), hoeveel bytes per seconde kunnen er ongeveer worden verzonden?

  1. ACirca 14400 bytes
  2. BCirca 11500 bytes
  3. CCirca 115200 bytes
Antwoord en toelichting tonen

Antwoord: B. Circa 11500 bytes

In het 8N1-formaat zijn voor het verzenden van één byte in totaal 10 bits nodig: 1 startbit, 8 databits en 1 stopbit. 115200 ÷ 10 = 11520, dus er kunnen per seconde circa 11500 bytes worden verzonden en elke byte kost circa 87 µs. Wordt veel logging uitgevoerd, dan kost dat meer tijd dan verwacht en kan het de verwerking vertragen, dus let op de hoeveelheid uitvoer en het gebruik van buffers.

Veelgestelde vragen

Waar staat UART voor?

UART staat voor universal asynchronous receiver-transmitter. Het is het hardwareblok dat bytes omzet naar en van een seriële bitstroom, begrensd door start- en stopbits, zonder gedeelde klok.

Hoeveel bytes per seconde kan een UART op 115200 baud versturen?

Met 8N1-framing kost elke byte 10 bits, dus 115200 bps draagt ongeveer 11.520 bytes per seconde, zo'n 87 µs per byte. Een pariteitsbit of een tweede stopbit verlaagt dit verder.

Waarom moeten beide kanten van een UART-verbinding dezelfde baudrate hebben?

Er wordt geen klok meegestuurd, dus de ontvanger timet elk bit na het startbit met zijn eigen klok. Verschillen de snelheden meer dan enkele procenten, dan verschuift het bemonsteringspunt vóór het einde van het frame een halve bit of meer en worden bits verkeerd gelezen.

“UART” in de toelichting

Vragen met “UART” (9)

  1. Welke eigenschap van seriële communicatie via UART is juist?
  2. Bij een UART van 115200 bps en het formaat met 8 databits, geen pariteit en 1 stopbit (8N1), hoeveel bytes per seconde kunnen er ongeveer worden verzonden?
  3. Bij UART kan een klein verschil in baudrate tussen zender en ontvanger tekenfouten veroorzaken. Waarom is de toelaatbare afwijking beperkt tot ongeveer enkele procenten?
  4. Welke vergelijking van UART, SPI en I2C is juist?
  5. Wat moet worden gedaan met ongebruikte randschakelingen (zoals timers en UART’s) in een microcontroller om het vermogensverbruik te verminderen?
  6. Welke LSI integreert CPU, geheugen en randfuncties zoals timers en ADC in één chip en wordt gebruikt voor de besturing van huishoudelijke apparaten en andere apparatuur?
  7. Welke methode wijst bij microcontrollers en dergelijke de registers van randapparatuur toe aan dezelfde adresruimte als het geheugen, zodat ze met gewone geheugenlees- en schrijfinstructies worden bediend?
  8. Welke eigenschap van LIN, een netwerk in auto's, is juist?
  9. Welke uitspraak over de rol van de bootloader van embedded apparatuur is juist?

Vergelijkingen met deze term

Verwante termen

Numerieke apertuur (NA) Via SPI Microcontroller (MCU) Baudrate I2C Doorschietstroom (shoot-through-stroom) Memory-mapped I/O Bootloader Brown-outdetectie

Naar de woordenlijst