Gdy mikrokontroler ma porozumieć się z komputerem, czujnikiem albo modułem komunikacyjnym, często wystarczą trzy przewody i dobrze ustawione parametry transmisji. UART to jeden z najprostszych interfejsów szeregowych, ale właśnie przez prostotę bywa mylony z RS-232, RS-485 albo USB. Wyjaśniam, jak działa, jak wygląda ramka danych, gdzie wykorzystuje się go w automatyce oraz jakie błędy najczęściej uniemożliwiają komunikację.
UART przesyła dane szeregowo bez osobnej linii zegara
- UART to sprzętowy interfejs do asynchronicznej transmisji szeregowej.
- Do podstawowej komunikacji wystarczą linie TX, RX i GND.
- Oba urządzenia muszą mieć zgodne ustawienia, najczęściej 9600 lub 115200 Bd, 8N1.
- UART nie określa poziomów elektrycznych. Może współpracować z logiką 3,3 V, 5 V, RS-232 albo RS-485 za pomocą odpowiednich układów.
- Najczęstsze przyczyny problemów to zła prędkość, brak wspólnej masy i niezgodne napięcia.
UART, czyli prosty kanał komunikacji między urządzeniami
Skrót UART pochodzi od angielskiego określenia Universal Asynchronous Receiver/Transmitter, czyli uniwersalnego nadajnika i odbiornika asynchronicznego. W praktyce jest to peryferium sprzętowe w mikrokontrolerze, sterowniku lub komputerze, które zamienia dane równoległe na szeregowy strumień bitów i odwrotnie.
Transmisja jest asynchroniczna, ponieważ urządzenia nie przesyłają osobnego sygnału zegarowego. Odbiornik rozpoznaje początek znaku na podstawie bitu startu i korzysta z wcześniej ustalonej prędkości. Dzięki temu połączenie jest proste, tanie i łatwe do uruchomienia.
Podstawowy wariant wykorzystuje dwie linie danych. TX służy do nadawania, a RX do odbioru. W typowym połączeniu TX jednego urządzenia łączę z RX drugiego, RX z TX, a masy obu układów łączę przewodem GND. Bez wspólnego punktu odniesienia komunikacja może działać niestabilnie albo nie zadziałać wcale.
Jak wygląda transmisja danych przez UART
UART przesyła dane w postaci ramek. Linia w stanie spoczynku pozostaje zwykle w stanie wysokim. Nadawanie rozpoczyna się od bitu startu, który zmienia stan linii na niski. Potem pojawiają się bity danych, opcjonalny bit parzystości oraz jeden lub dwa bity stopu.
Najpopularniejsze ustawienie 8N1
W dokumentacji często pojawia się zapis 8N1. Pierwsza cyfra oznacza 8 bitów danych, litera N brak kontroli parzystości, a ostatnia cyfra jeden bit stopu. Taka konfiguracja jest bardzo częsta w mikrokontrolerach, modułach GPS, modemach, konwerterach USB-UART i portach serwisowych sterowników.
Przykładowa ramka 8N1 zawiera łącznie 10 bitów: jeden startu, osiem danych i jeden stopu. Przy szybkości 9600 Bd przesłanie pojedynczego znaku zajmuje około 1,04 ms, więc praktyczna przepustowość wynosi w przybliżeniu 960 znaków na sekundę. Przy 115200 Bd jest to około 11 520 znaków na sekundę, choć rzeczywista wartość zależy od formatu danych i oprogramowania.
Co oznaczają podstawowe parametry
| Parametr | Znaczenie | Przykład |
|---|---|---|
| Baud rate | Prędkość transmisji symboli, zwykle utożsamiana z liczbą bitów na sekundę | 9600, 19200, 115200 |
| Liczba bitów danych | Liczba bitów opisujących przesyłany znak | 7, 8 lub 9 |
| Parzystość | Prosta kontrola wykrywania części błędów transmisji | None, Even, Odd |
| Bity stopu | Kończą ramkę i dają odbiornikowi czas na jej rozpoznanie | 1 lub 2 |
Oba urządzenia muszą mieć ustawione dokładnie te same parametry. Samo podłączenie przewodów nie wystarczy. Gdy nadajnik pracuje z ustawieniem 9600 8N1, a odbiornik oczekuje 115200 8N1 albo 9600 7E1, na terminalu zobaczę zwykle przypadkowe znaki, brak odpowiedzi lub błędy ramki.
UART a poziomy napięć i popularne standardy
Najczęstsze nieporozumienie polega na traktowaniu UART jako kompletnego standardu elektrycznego. UART opisuje przede wszystkim sposób kodowania i przesyłania danych, ale nie narzuca jednego napięcia ani odporności przewodów na zakłócenia.
UART TTL i logika 3,3 V lub 5 V
W mikrokontrolerach sygnały UART mają zwykle poziomy logiczne 3,3 V albo 5 V. Taki interfejs dobrze sprawdza się na płytce i przy krótkich przewodach, ale nie jest dobrym wyborem do prowadzenia sygnału przez halę produkcyjną. Dłuższy przewód może zbierać zakłócenia, a podłączenie urządzeń o różnych napięciach może uszkodzić wejście.
Przed połączeniem sprawdzam trzy rzeczy: poziom logiczny, maksymalne napięcie wejścia oraz wspólną masę. Do komunikacji między układem 5 V i 3,3 V często potrzebny jest konwerter poziomów logicznych.
RS-232 i RS-485 korzystają z UART, ale nie są tym samym
RS-232 i RS-485 to standardy warstwy fizycznej. Określają między innymi sposób przesyłania sygnału, poziomy napięć, rodzaj przewodów i odporność na zakłócenia. UART może dostarczać dane do układu MAX232, transceivera RS-485 albo podobnego nadajnika, który dopiero przygotowuje sygnał do transmisji w konkretnym standardzie.
| Rozwiązanie | Typowe zastosowanie | Najważniejsza cecha |
|---|---|---|
| UART TTL | Mikrokontrolery, moduły, debugowanie | Proste połączenie na krótkim dystansie |
| RS-232 | Starsze komputery, urządzenia serwisowe, pojedyncze połączenia | Lepsza odporność i większe poziomy napięć |
| RS-485 | Automatyka, sterowniki PLC, sieci urządzeń | Transmisja różnicowa i możliwość budowy magistrali |
| USB-UART | Połączenie komputera z elektroniką | Konwerter między USB a sygnałem UART |
Jeżeli urządzenie przemysłowe ma złącze opisane jako RS-485, nie podłączam do niego bezpośrednio pinów 3,3 V UART. Potrzebny jest transceiver RS-485. W przeciwnym razie można nie tylko stracić komunikację, ale też uszkodzić port.
Gdzie wykorzystuje się UART w automatyce
UART spotyka się w wielu miejscach, choć często nie jest widoczny dla użytkownika końcowego. W sterownikach i modułach służy do wymiany komend, odczytu danych pomiarowych, aktualizacji oprogramowania oraz prowadzenia diagnostyki.
- Port serwisowy sterownika pozwala podejrzeć komunikaty diagnostyczne i błędy.
- Czujniki i moduły GPS wysyłają pomiary lub dane tekstowe w ustalonym formacie.
- Moduły radiowe i modemy przyjmują komendy sterujące przez UART.
- Konwertery przemysłowe zamieniają dane z UART na RS-232, RS-485, CAN albo Ethernet.
- Terminal operatorski może komunikować się ze sterownikiem za pomocą prostego protokołu tekstowego.
W automatyce UART często jest tylko niższą warstwą komunikacji. Przykładowo Modbus RTU może działać przez interfejs UART połączony z transceiverem RS-485. Sam UART nie zna jednak rejestrów, adresów ani znaczenia poleceń. To określa dopiero konkretny protokół komunikacyjny, czyli zestaw reguł wymiany danych.
W mojej ocenie UART najlepiej sprawdza się do połączeń punkt-punkt i diagnostyki. Gdy trzeba połączyć wiele urządzeń na długim przewodzie, rozsądniejszy będzie RS-485, CAN albo Ethernet przemysłowy.
UART, SPI i I2C czyli który interfejs wybrać
UART nie jest uniwersalnie najlepszym rozwiązaniem. Wybór zależy od liczby urządzeń, odległości, wymaganej szybkości i tego, czy można poprowadzić osobną linię zegara.
| Interfejs | Linie | Zegar | Najlepsze zastosowanie |
|---|---|---|---|
| UART | TX, RX, GND | Nie | Proste połączenie dwóch urządzeń |
| SPI | SCK, MOSI, MISO, CS | Tak | Szybka komunikacja z pamięciami i przetwornikami |
| I2C | SDA, SCL, GND | Tak | Wiele układów na jednej magistrali |
| RS-485 | Linia różnicowa A/B | Zwykle nie | Odległe urządzenia i środowisko przemysłowe |
UART wygrywa prostotą, ale nie zapewnia sam z siebie adresowania wielu urządzeń ani mechanizmu potwierdzania dostarczenia wiadomości. Jeśli aplikacja wymaga większej niezawodności, dodaję do komunikatów sumę kontrolną, numer urządzenia, znacznik początku ramki i obsługę czasu oczekiwania.
Jak uruchomić połączenie UART bez błądzenia
Najpierw sprawdzam dokumentację obu urządzeń i zapisuję konfigurację w jednym miejscu. Pomaga prosty zestaw informacji: prędkość, liczba bitów, parzystość, liczba bitów stopu, poziom napięć i rodzaj transceivera.
- Ustal, czy masz czysty UART TTL, RS-232, RS-485 czy USB-UART.
- Sprawdź napięcia logiczne i dopuszczalny zakres wejść.
- Połącz TX nadajnika z RX odbiornika oraz RX z TX.
- Dodaj wspólną masę, jeśli dokumentacja urządzeń tego wymaga.
- Ustaw po obu stronach identyczne parametry transmisji.
- Wyślij prostą wiadomość testową i obserwuj odpowiedź.
Przeczytaj również: Falownik nie startuje? Diagnoza krok po kroku – znajdź przyczynę!
Najczęstsze błędy podczas diagnostyki
Jeżeli pojawiają się przypadkowe znaki, najpierw sprawdzam baud rate i format ramki. Brak jakiejkolwiek reakcji częściej oznacza zamienione linie TX/RX, brak masy, nieaktywny port albo użycie niewłaściwego konwertera.
Do szybkiej diagnozy przydaje się analizator stanów logicznych. Pokazuje on rzeczywistą prędkość, długość ramki i poziomy sygnału. Multimetr może potwierdzić obecność napięcia, ale nie pokaże, czy bity są przesyłane we właściwym rytmie.
Trzeba też pamiętać o buforach odbiorczych. Przy dużej liczbie danych mikrokontroler może nie zdążyć ich obsłużyć, a wtedy pojawiają się błędy przepełnienia. Pomagają przerwania, DMA, kontrola przepływu RTS/CTS albo ograniczenie częstotliwości komunikatów.
Co sprawdzić przed podłączeniem UART do sterownika
UART jest dobrym wyborem, gdy łączysz dwa urządzenia na krótkim dystansie i masz kontrolę nad konfiguracją obu stron. W zastosowaniach warsztatowych i automatycznych jego największą zaletą pozostaje łatwe uruchomienie oraz dostępność tanich konwerterów.
Przed pierwszym podłączeniem sprawdź nie tylko opis pinów, ale też poziomy napięć, sposób prowadzenia przewodu i wymagany protokół. Sam fakt, że dwa urządzenia mają wyprowadzenia TX i RX, nie oznacza jeszcze ich zgodności.
Najkrócej mówiąc, UART odpowiada za sposób przesyłania bitów, a RS-232, RS-485, Modbus czy własny protokół określają, jak ten sygnał działa w konkretnym systemie. To rozróżnienie oszczędza sporo czasu podczas uruchamiania instalacji i pozwala uniknąć kosztownego błędu przy doborze przewodów lub konwertera.