Przejdź do treści

UART (Universal Asynchronous Receiver-Transmitter)

UART to absolutny klasyk w świecie elektroniki i systemów wbudowanych. Nie jest to protokół komunikacyjny sensu stricto (jak I2C czy SPI), ale fizyczny układ sprzętowy (mikrokontroler lub osobny chip), który zamienia dane równoległe na szeregowe i odwrotnie.

Najważniejsze cechy w pigułce

  • Asynchroniczny - brak linii zegarowej (CLK). Obie strony muszą z góry umówić się na tę samą prędkość transmisji.
  • Szeregowy - dane lecą bit po bicie.
  • Full-Duplex - można wysyłać i odbierać dane w tym samym czasie.
  • Point-to-Point - łączy tylko DWA urządzenia (to nie jest magistrala dla wielu urządzeń).

🔌 Jak to podłączyć?

Podłączenie UART jest banalnie proste. Zazwyczaj używamy tylko trzech przewodów. Kluczowa zasada: nadajnik (TX) łączy się z odbiornikiem (RX) drugiej strony.

  • TX (Transmit) ➡️ RX (Receive)
  • RX (Receive) ⬅️ TX (Transmit)
  • GND (Masa) ↔️ GND (Masa)

Uwaga na masy i napięcia!

Połączenie GND jest absolutnie wymagane, żeby zamknąć obwód i zapewnić punkt odniesienia dla napięć. Zwróć też uwagę na logikę napięciową – nie łącz bezpośrednio UART 3.3V (np. z Raspberry Pi) z UART 5V (np. ze starego Arduino Uno) bez konwertera poziomów logicznych (Level Shifter), bo spalisz piny!


📦 Jak wygląda ramka danych?

Ponieważ nie ma zegara, urządzenia muszą wiedzieć, kiedy zaczyna się znak, a kiedy kończy. W tym celu dane pakowane są w tzw. ramki (frames).

  1. Stan spoczynku (Idle): Linia jest utrzymywana w stanie wysokim (HIGH).
  2. Start Bit: Stan linii spada z HIGH na LOW. To sygnał dla odbiornika: "Hej, budzimy się, zaraz polecą dane!".
  3. Data Bits (Bity danych): Właściwy ładunek. Od 5 do 9 bitów, ale najczęściej 8 bitów (czyli 1 bajt). Zazwyczaj wysyłane są od najmniej znaczącego bitu (LSB first).
  4. Parity Bit (Bit parzystości): Opcjonalny. Służy do podstawowego wykrywania błędów. Może być "Even" (parzysty) lub "Odd" (nieparzysty). Dzisiaj rzadko używany.
  5. Stop Bit: Powrót linii do stanu HIGH. Oznacza koniec ramki. Zwykle trwa 1 lub 2 cykle.

⚙️ Parametry transmisji (Konfiguracja)

Aby dwa urządzenia mogły ze sobą "rozmawiać", muszą mieć ustawione identyczne parametry. Najważniejszy z nich to Baud Rate (szybkość transmisji), wyrażana w bitach na sekundę (bps).

Popularne prędkości: * 9600 (bezpieczny standard, często w modułach GPS) * 115200 (najpopularniejszy obecnie, używany m.in. w ESP32, Raspberry Pi)

Magiczne hasło: 115200 8N1

Większość terminali (np. PuTTY, minicom) domyślnie sugeruje ustawienie 8N1. Rozszyfrujmy to: * 8 - 8 bitów danych. * N - None (Brak bitu parzystości). * 1 - 1 bit stopu.

Flow Control (Kontrola przepływu)

Czasami dane lecą za szybko i odbiornik nie nadąża ich przetwarzać. Używa się wtedy kontroli przepływu: * Hardware (RTS/CTS): Wymaga dodatkowych pinów (Ready To Send / Clear To Send). * Software (XON/XOFF): Wysyłanie specjalnych znaków w celu wstrzymania/wznowienia. * None: Najczęściej wybierana opcja w domowych i hobbystycznych projektach.


🛠️ Popularne przejściówki (USB-UART)

Większość współczesnych komputerów nie ma wbudowanego portu szeregowego (COM). Aby debugować mikrokontrolery z PC, używa się konwerterów USB na UART. Najbardziej znane układy to:

  • CH340 / CH341: Tanie, niezawodne, często spotykane w klonach Arduino (Wymagają instalacji chińskich sterowników na Windows/Mac, na Linuxie działają out-of-the-box).
  • CP2102 (Silicon Labs): Popularne w płytkach z ESP8266/ESP32 (np. NodeMCU). Bardzo stabilne.
  • FTDI (FT232RL): Uznawane za standard "pro", bardzo niezawodne, ale na rynku jest mnóstwo podróbek (co doprowadziło kiedyś do słynnej "afery" ze sterownikami psującymi lewe układy).
  • PL2303 (Prolific): Starszy układ, często w tanich kablach diagnostycznych.

🆚 UART a RS-232 i RS-485

Warto pamiętać, że UART określa tylko to, jak dane są pakowane cyfrowo wewnątrz układu (logika 0-3.3V lub 0-5V). Z czym to się je na zewnątrz?

Standard Poziomy Napięć Zasięg Zastosowanie
UART (TTL) 3.3V / 5V Bardzo krótki (na jednej płytce lub biurku) Komunikacja mikrokontroler-mikrokontroler.
RS-232 od -15V do +15V Średni (do kilkunastu metrów) Stare komputery (porty COM), sprzęt przemysłowy. Wysokie napięcie uodparnia na zakłócenia. (Układ MAX232 to klasyczny konwerter UART <-> RS232).
RS-485 Różnicowe (sygnał A i B) Bardzo duży (do 1200 metrów!) Przemysł, automatyka. Odporny na szumy, pozwala na komunikację wielu urządzeń na jednej linii (tzw. bus).

✅ Zalety i ❌ Wady

Zalety: * Prostota: wymagane tylko 2 przewody dla pełnej komunikacji. * Niskie obciążenie: nie wymaga sygnału zegarowego. * Szerokie wsparcie: ma go praktycznie każdy mikrokontroler na świecie.

Wady: * Tylko dwa urządzenia mogą się ze sobą komunikować. * Obie strony muszą mieć precyzyjnie ustawione parametry (inaczej dostaniemy "krzaczki" w terminalu). * Podatny na zakłócenia elektromagnetyczne przy większych odległościach (chyba że przekonwertowany na RS-485).