Gdy urządzenie nie pokazuje danych na terminalu albo mikrokontroler nie odpowiada na komendy, przyczyną często okazuje się źle skonfigurowany interfejs UART. To prosta metoda szeregowej komunikacji, ale wymaga zgodnych parametrów, poprawnego połączenia linii TX i RX oraz właściwych poziomów napięcia. Poniżej wyjaśniam, czym jest UART, jak działa ramka danych, gdzie stosuje się ten interfejs i jak uniknąć typowych błędów podczas pracy w warsztacie.
UART to prosty interfejs do wymiany danych między układami elektronicznymi
- UART oznacza nadajnik i odbiornik uniwersalnej komunikacji asynchronicznej.
- Do podstawowego połączenia potrzebne są linie TX, RX i wspólna masa GND.
- Najczęściej spotykana konfiguracja to 8N1, czyli 8 bitów danych, brak kontroli parzystości i 1 bit stopu.
- Obie strony muszą mieć taki sam baud rate, liczbę bitów, parzystość i bity stopu.
- UART nie jest tym samym co RS-232, RS-485 ani USB, choć może współpracować z tymi standardami przez dodatkowy konwerter.
Czym jest UART i do czego służy
UART to skrót od Universal Asynchronous Receiver-Transmitter, czyli uniwersalnego nadajnika i odbiornika asynchronicznego. W praktyce jest to sprzętowy moduł w mikrokontrolerze, komputerze jednopłytkowym lub innym urządzeniu, który zamienia dane równoległe na szeregowy strumień bitów i wykonuje operację odwrotną po stronie odbiorczej.
Najważniejsze słowo w tej nazwie to asynchroniczny. Oznacza ono, że nadajnik i odbiornik nie korzystają ze wspólnej linii zegarowej. Odbiornik rozpoznaje początek transmisji dzięki bitowi startu, a potem odczytuje kolejne bity według wcześniej ustalonej szybkości.
W najprostszym połączeniu jedno urządzenie wysyła dane przewodem TX, a drugie odbiera je na wejściu RX. Połączenie dwukierunkowe wymaga skrzyżowania linii, czyli TX pierwszego układu łączymy z RX drugiego, a TX drugiego z RX pierwszego. Trzecim przewodem powinna być wspólna masa GND.
UART nie określa sam z siebie, co oznacza przesyłany bajt. Może to być znak tekstowy, fragment komendy, odczyt temperatury, współrzędne GPS albo informacja diagnostyczna z elektronarzędzia. Znaczenie danych ustala dopiero wyższy protokół zastosowany przez producenta urządzenia.
Jak działa transmisja i ramka UART
Przewód UART pozostaje zwykle w stanie spoczynkowym oznaczonym logiczną jedynką. Gdy nadajnik chce wysłać znak, najpierw ustawia linię na zero i generuje bit startu. Ten sygnał informuje odbiornik, że za chwilę pojawią się właściwe dane.
Po bicie startu przesyłane są bity danych, zazwyczaj od najmłodszego do najstarszego. Może pojawić się także bit parzystości, czyli prosty mechanizm wykrywania części błędów transmisji. Ramkę zamyka jeden albo dwa bity stopu, po których linia wraca do stanu spoczynkowego.
Najczęściej spotkasz zapis 8N1. Odczytuje się go następująco:
- 8 oznacza osiem bitów danych,
- N oznacza brak bitu parzystości,
- 1 oznacza jeden bit stopu.
Przy konfiguracji 8N1 wysłanie jednego bajtu wymaga łącznie 10 bitów: jednego startu, ośmiu bitów danych i jednego stopu. Z tego powodu transmisja z szybkością 115 200 bit/s daje w przybliżeniu 11 520 bajtów danych na sekundę, a nie 115 200 bajtów.
Co oznacza baud rate
Baud rate określa szybkość transmisji. Popularne wartości to 9600, 19 200, 38 400, 57 600 i 115 200. W typowym UART, gdzie jeden symbol odpowiada jednemu bitowi, wartość baud rate jest praktycznie równa liczbie bitów na sekundę.
Obie strony muszą pracować z tą samą szybkością. Niewielka różnica wynikająca z niedokładności zegara może być dopuszczalna, ale duża rozbieżność prowadzi do przekłamań, przypadkowych znaków lub całkowitego braku komunikacji. Dokumentacja Microchip zwraca uwagę, że zgodność parametrów ramki jest równie ważna jak samo podłączenie przewodów.
Jak poprawnie podłączyć UART
Najczęstszy błąd początkujących polega na połączeniu TX z TX i RX z RX. W UART nadajnik jednej strony musi trafić do odbiornika drugiej, dlatego poprawny układ wygląda tak:
| Urządzenie A | Urządzenie B |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
Przed podłączeniem sprawdź napięcie logiczne. Moduły mogą pracować przy 1,8 V, 3,3 V albo 5 V. Sygnał 5 V podany bezpośrednio na wejście niektórych układów 3,3 V może je uszkodzić, dlatego w razie różnicy poziomów stosuje się konwerter logiczny.
Sam napis UART na płytce nie mówi jeszcze, jaki poziom napięcia występuje na pinach. Zawsze zaglądam do schematu, opisu złącza albo dokumentacji konkretnego układu. Szczególnej ostrożności wymaga złącze opisane jako RS-232, ponieważ wykorzystuje inne napięcia i często odwróconą logikę.
Przeczytaj również: Rodzaje diod i ich zastosowania - jak wybrać właściwą?
UART TTL a konwerter USB
Wiele komputerów nie ma już fizycznego portu UART wyprowadzonego na złącze. Do komunikacji z płytką wykorzystuje się wtedy adapter USB-UART, na przykład oparty na układzie konwertującym USB na sygnały TX i RX.
Adapter USB-UART nie jest zwykłym przewodem. Zawiera elektronikę, która tworzy w komputerze wirtualny port szeregowy. Przed zakupem trzeba sprawdzić poziom logiczny, dostępność sterownika i wyprowadzenie pinów. Niektóre adaptery mają także RTS i CTS, czyli sprzętową kontrolę przepływu.
Gdzie spotyka się UART w elektronice
UART jest popularny, bo zajmuje mało pinów i łatwo go uruchomić. W warsztacie najczęściej wykorzystuję go do komunikacji z mikrokontrolerem, odczytu komunikatów diagnostycznych oraz konfiguracji modułów, które przyjmują komendy tekstowe.
- Debugowanie mikrokontrolerów - program może wysyłać do terminala wartości zmiennych, kody błędów i informacje o stanie urządzenia.
- Moduły GPS - odbiornik wysyła przez UART dane o pozycji, czasie i prędkości, często w postaci komunikatów tekstowych.
- Moduły Bluetooth i GSM/LTE - komunikacja z nimi odbywa się często za pomocą komend AT.
- Bootloadery - niektóre układy pozwalają wgrywać oprogramowanie przez port szeregowy.
- Elektronika przemysłowa i narzędzia - UART może służyć do serwisu, konfiguracji lub odczytu danych, choć konkretne rozwiązanie zależy od producenta.
Trzeba jednak zachować zdrowy dystans do opisów typu „to jest UART”. Czasem producent wyprowadza złącze o podobnym układzie pinów, ale stosuje protokół jednokierunkowy, odwróconą polaryzację albo własny format ramek. Sama obecność pinów TX i RX nie gwarantuje, że urządzenie zacznie odpowiadać po ustawieniu terminala.
UART a RS-232, RS-485, SPI i I2C
Te interfejsy bywają wrzucane do jednego worka jako „porty szeregowe”, ale różnią się sposobem przesyłania sygnału i zastosowaniem. Dla osoby naprawiającej elektronikę to rozróżnienie ma praktyczne znaczenie, bo podłączenie niewłaściwego standardu może zakończyć się uszkodzeniem układu.
| Interfejs | Najważniejsza cecha | Typowe zastosowanie |
|---|---|---|
| UART | Asynchroniczna transmisja, zwykle TX i RX | Debugowanie, moduły, komunikacja punkt-punkt |
| RS-232 | Inne poziomy napięć i często odwrócona logika | Starsze komputery, urządzenia serwisowe |
| RS-485 | Różnicowa transmisja odporna na zakłócenia | Automatyka, długie przewody, sieci przemysłowe |
| SPI | Wspólna linia zegara i kilka sygnałów sterujących | Pamięci, wyświetlacze, szybkie układy peryferyjne |
| I2C | Dwie wspólne linie i adresowanie urządzeń | Czujniki, ekspandery, układy na jednej płytce |
UART zwykle najlepiej sprawdza się przy prostym połączeniu dwóch urządzeń. Nie ma wbudowanego adresowania ani arbitrażu, więc nie jest wygodnym wyborem dla wielu urządzeń współdzielących jedną linię. Do długich przewodów i środowiska z silnymi zakłóceniami lepszy bywa RS-485, ale wymaga odpowiednich transceiverów.
Jak znaleźć błąd, gdy UART nie działa
Gdy terminal wyświetla krzaki, zaczynam od parametrów, a nie od wymiany modułu. Ustaw po obu stronach identyczne baud rate, data bits, parity i stop bits. Dla większości prostych modułów pierwszą próbą będzie 115200 8N1 albo 9600 8N1, lecz właściwa wartość zawsze wynika z dokumentacji.
- Wyłącz zasilanie i sprawdź opis pinów.
- Połącz TX z RX, RX z TX oraz GND z GND.
- Zweryfikuj poziomy logiczne, szczególnie przy układach 3,3 V i 5 V.
- Ustaw zgodne parametry portu w terminalu.
- Sprawdź, czy urządzenie wymaga zakończenia komendy znakiem CR, LF albo CRLF.
- Jeśli problem pozostaje, użyj analizatora stanów logicznych lub oscyloskopu.
jest równie częstą przyczyną problemów jak zamienione przewody. W przypadku transmisji jednokierunkowej wystarczy czasem TX i GND, ale przy komunikacji dwukierunkowej potrzebne są obie linie danych.
Analizator stanów logicznych pozwala zobaczyć, czy na przewodzie faktycznie pojawia się ramka oraz z jaką szybkością jest nadawana. Przydatne jest też sprawdzenie stanu spoczynkowego. W typowym UART linia pozostaje w stanie wysokim, a przejście do niskiego oznacza początek ramki.
UART ma ograniczoną odporność na błędy. Sam interfejs może wykryć błąd parzystości albo nieprawidłowy bit stopu, ale nie zapewnia pełnego potwierdzania odbioru ani sumy kontrolnej. Jeżeli dane mają znaczenie krytyczne, dodatkowy protokół powinien zawierać CRC, numer ramki, długość danych lub mechanizm ponownego wysłania.
Co zapamiętać przed użyciem UART w praktyce
UART można sprowadzić do prostego schematu: dwa układy wymieniają dane bez wspólnego zegara, korzystając z wcześniej ustalonego formatu ramek. Najważniejsze są nie sama nazwa interfejsu, lecz zgodne parametry transmisji, właściwe napięcie i poprawne skrzyżowanie TX z RX.
Jeżeli planujesz diagnostykę płytki, zacznij od dokumentacji i pomiaru, a dopiero później podłączaj konwerter USB-UART. To drobna ostrożność, która chroni zarówno adapter, jak i badaną elektronikę, a w praktyce oszczędza znacznie więcej czasu niż przypadkowe testowanie kolejnych ustawień.