UART onder de knie krijgen: De Universal Asynchronous Receiver/Transmitter uitgelegd
De UART, of Universal Asynchronous Receiver‑Transmitter, blijft het meest algemeen geadopteerde hardware‑protocol voor point‑to‑point communicatie. Deze gids leidt je door het configureren van een UART, het begrijpen van het pakketformaat, en het implementeren van veilige frame‑protocollen die essentieel zijn tijdens productontwikkeling.
Wanneer correct geconfigureerd, kan een UART een verscheidenheid aan seriële datastromen ondersteunen terwijl het slechts twee draden vereist. Deze minimale bedrading verlaagt kosten en complexiteit, wat UART ideaal maakt voor embedded systemen, microcontrollers en PC's.
We behandelen UART‑fundamenten – pakkettransmissie, het standaard frame‑formaat, en aangepaste frames die beveiliging en compliance‑waarde toevoegen. Het artikel biedt ook praktische stappen voor het interpreteren van datasheets en het configureren van UART‑peripherieën.
Aan het einde heb je een stevige greep op UART‑standaarden en hoe je ze kunt benutten om nieuwe productcapaciteiten te verbeteren.
"Het enkele grootste probleem in communicatie is de illusie dat het heeft plaatsgevonden."
—George Bernard Shaw
Communicatieprotocollen structureren de interactie tussen apparaten. Ze definiëren een gemeenschappelijke taal die zorgt dat data betrouwbaar wordt uitgewisseld. In de embedded‑wereld is UART de de‑facto standaard voor device‑to‑device hardware‑communicatie.
In tegenstelling tot bus‑gebaseerde protocollen, vereist UART alleen een transmit (Tx) en receive (Rx) lijn, wat bordontwerp vereenvoudigt en stroomverbruik verlaagt.
Ondanks zijn populariteit, overzien veel implementaties correct frame‑ontwerp, wat prestaties en beveiliging kan compromitteren. Een goed gedefinieerd frame‑protocol is de sleutel tot fout‑vrije en beschermde data‑uitwisseling.
Asynchrone seriële communicatie betekent geen gedeelde kloklijn; in plaats daarvan vertrouwen de transmitter en receiver op een gematchte baud‑rate om in sync te blijven.
Interface
Figuur 1. Twee UART's direct communicerend.
Elke UART blootstelt twee toegewijde pinnen:
- Transmitter (Tx)
- Receiver (Rx)
Figuur 2. UART geïntegreerd met een databus.
In deze rangschikking converteert de transmitterende UART parallele data van de bus naar een seriële bitstream op zijn Tx‑lijn. De ontvangende UART samplet deze stream, de bits herassemblerend tot parallele data voor de lokale bus.
Beide kanten moeten op dezelfde baud‑rate opereren – de snelheid in bits per seconde. Een mismatch kan leiden tot framing‑fouten; typische UART's tolereren tot 10% baud‑rate‑afwijking.
Tabel 1 vat de belangrijkste UART‑kenmerken samen.
Tabel 1. UART Samengevat
| Draden | 2 |
|---|---|
| Ondersteunde Baud‑rates | 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1 000 000, 1 500 000 |
| Transmissiemethode | Asynchroon |
| Maximale Masters | 1 |
| Maximale Slaves | 1 |
Omdat UART asynchroon is, drijft de transmitter een bitstream gebaseerd op zijn eigen klok, terwijl de receiver binnenkomende bits samplet met zijn interne klok. Het startbit, data‑frame, optionele pariteit, en stopbits definiëren gezamenlijk het pakket.
Data‑Transmissie
Elk UART‑pakket bevat:
- Start Bit: Een overgang van hoog naar laag die het begin van een frame signaleert.
- Data Frame: 5–8 bits payload, LSB first. Als pariteit gebruikt wordt, kan het frame 9 bits zijn.
- Parity Bit (optioneel): Even of oneven pariteit om single‑bit fouten te detecteren.
- Stop Bits: Eén tot twee hoog‑niveau bits die het einde van het frame markeren.
Figuur 3. UART‑pakketstructuur.
Figuur 4. Startbit‑illustratie.
Figuur 5. Data‑frame‑voorbeeld.
Figuur 6. Parity‑bit‑gebruik.
Figuur 7. Stopbit‑illustratie.
Transmissie‑Flow
1. Parallele Input: De transmitter ontvangt parallele data van de bus.
Figuur 8. Databus voedt de transmitter.
2. Frame Assembly: De transmitter voegt het startbit toe, pariteit en stopbits, vormend een compleet pakket.
Figuur 9. UART‑pakket bij de transmitter.
3. Seriële Transmissie: Het pakket wordt bit‑voor‑bit verzonden geconfigureerde baud‑rate.
Figuur 10. Continue UART‑transmissie.
4. Receptie: De receiver verwijdert framing‑bits en herstelt de originele data.
Figuur 11. Pakket bij de receiver.
5. Parallele Output: De receiver converteert de seriële data terug naar paralleel en stuurt het door naar de lokale bus.
Figuur 12. Data‑stroom naar de ontvangende bus.
Custom Frame Protocollen
Hoewel het standaard UART‑frame voldoende is voor veel use cases, voegt een custom frame‑laag beveiliging toe en zorgt ervoor dat alleen bedoelde apparaten communiceren.
Door unieke headers, trailers en een CRC in te sluiten, kan elk apparaat valideren dat een pakket afkomstig is van een vertrouwde bron. Dit is bijzonder waardevol in veiligheids‑kritieke of beveiligde omgevingen.
Figuur 13 toont een typisch custom frame:
Figuur 13. Voorbeeld UART‑frame‑protocol.
Het frame bevat typisch:
- Header 1 (0xAB) en Header 2 (0xCD) – unieke identificaties.
- Command (CMD) – specificeert de actie.
- Data Length (DL) – aantal payload‑bytes.
- Payload (Data n) – de daadwerkelijke data.
- Trailer 1 (0xE1) en Trailer 2 (0xE2) – afsluitingsmarkers.
- CRC – fout‑controle‑waarde berekend aan beide kanten.
Beide kanten moeten identieke framing‑regels gebruiken; anders worden pakketten geweigerd.
UART‑Configuratiestappen
1. Bestudeer de datasheet om de UART‑interface en pin‑toewijzingen te begrijpen.
Figuur 14. Microcontroller‑datasheet‑fragment.
2. Controleer de memory map voor UART‑registers en adressen.
Figuur 15. Microcontroller‑memory‑map.
3. Definieer UART‑poortparameters – databits, pariteit, stopbits, en operatiemodus. Voorbeeldbeschrijving:
• 5–8 databits
• 1, 1½, of 2 stopbits
• Geen, even, of oneven pariteit
• Full‑duplex, DMA‑enabled, asynchroon transfer
4. Bereken de baud‑rate met behulp van de perifere klok (PCLK) en de MCU's oversampling‑ en divider‑registers. De algemene formule is:
Baud‑rate = PCLK / ((M + N/2048) × 2OSR + 2 × DIV)
waarbij:
OSR – oversample rate (0–3)
DIV – baud‑rate‑divider (1–65535)
M – fractionele divider MSB (1–3)
N – fractionele divider LSB (0–2047)
Voorbeeldtabellen hieronder illustreren baud‑rate‑instellingen voor 26 MHz en 16 MHz PCLK's.
Tabel 2. Baud‑rate Voorbeeld Gebaseerd Op 26 MHz PCLK
| Baud‑rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 24 | 3 | 1078 |
| 115200 | 3 | 4 | 1 | 1563 |
Tabel 3. Baud‑rate Voorbeeld Gebaseerd Op 16 MHz PCLK
| Baud‑rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 17 | 3 | 1078 |
| 115200 | 3 | 2 | 2 | 348 |
5. Configureer de UART‑registers per de datasheet. Belangrijke registers omvatten:
Tabel 4. UART‑Register‑Beschrijvingen
| Naam | Beschrijving |
|---|---|
| UART_DIV | Baud‑rate‑divider |
| UART_FIBR | Fractionele baud‑rate‑controle |
| UART_LCR2 | Line‑control‑register (OSR, stopbits, pariteit) |
Zodra de registers geprogrammeerd zijn, kan de UART betrouwbaar data transmitteren en ontvangen.
Waarom UART Belangrijk Is
UART begrijpen is cruciaal voor ingenieurs die robuuste, low‑cost, en high‑throughput seriële links ontwerpen. Meesterwording van framing, baud‑rate‑berekening en register‑configuratie zorgt voor data‑integriteit en systeembetrouwbaarheid.
Veelvoorkomende Use Cases
- Debuggen – Log‑berichten tijdens firmware‑ontwikkeling.
- Productie – Real‑time diagnostiek en trace‑logs.
- Over‑the‑air Updates – Firmware‑wijzigingen leveren aan embedded apparaten.
- Verificatie – Apparaat‑functionaliteit valideren voor verzending.
Referenties
"Basics of UART Communication." Electronics Hub, juli 2017.
Campbell, Scott. "Basics of UART Communication." Circuit Basics. Keim, Robert.
"Back to Basics: The Universal Asynchronous Receiver/Transmitter." All About Circuits, december 2016.
"What Is UART Protocol? UART Communication Explained." Arrow.
Ingebed
- Hoe voorspellend onderhoud efficiëntie drijft en downtime snijdt
- Expert Asfabricatie: Precisieprocessen & Custom Oplossingen
- De snij-naar-lengte lijn onder de knie: Kernconcepten & toepassingen
- Restspanning in Materialen: Typen, Oorzaken en Praktische Toepassingen
- Hoe Schokdempers Werken: Verbetering van Voertuigbalans en Comfort
- Stroommechanica: Typen, Gedrag en Toepassingen van Vloeistofstroming
- Wat Is Een Koppeling? Belangrijkste Functies en Toepassingen in Industriële Machines
- Materiaalflexibiliteit: hoe elasticiteit de prestaties bepaalt
- Toepassingen van Dieselmotoren in Voertuigen en Industriële Generatoren
- Freesmachines 101: Uitgebreide Gids naar Hun Functie, Componenten en Toepassingen
- Waarom Cloudcultuur Bedrijfssucces Drijft: Een Praktische Gids