Trochę teorii o RS232 / UART
Jest to jeden z najstarszych interfejsów komunikacyjnych opracowany przez firmę Gordon Bell. Znalazł on zastosowanie w urządzeniach przemysłowych, medycznych oraz wojskowych. Popularność RS232 spadła po pojawieniu się interfejsu USB, lecz ze względu na jego niezawodność ciągle jest stosowany, nawet w nowoczesnych układach. Warto zaznaczyć, że w specyfikacjach różnych urządzeń można spotkać inną nazwę interfejsu RS232, a mianowicie jest to UART (Universal Asynchronous Receiver and Transmitter). RS232 i UART są to te same interfejsy a różnica w ich działaniu polega na pracy z różnymi poziomami napięć (od -15 V do 15 V dla RS232 i od 0 V do 5V dla UART w technologii bramek logicznych TTL).
Do realizacji komunikacji za pomocą interfejsu UART wystarczą dwie linie sygnałowe, gdzie jedna linia to TxD, odpowiedzialna za nadawanie oraz druga RxD, odpowiedzialna za odbieranie. Linie te muszą być skrzyżowane co oznacza, że wejście RxD pierwszego urządzenie połączone jest z wyjściem TxD drugiego urządzenia, analogicznie wyjście TxD pierwszego urządzenia jest połączone z wejściem RxD urządzenia drugiego. Sposób połączenia zaprezentowałem poniżej.
Transmisja interfejsu UART jest asynchroniczna, dlatego każdy wysłany znak poprzedzony jest bitem startu (logiczne zero). Następnie w ramce przesyłane są dane, ramka może pomieścić od 5 do 9 bitów. Po bitach danych opcjonalnie możliwe jest ustawienie bitu parzystości. Na koniec transmisji wysyłany jest bit stopu (logiczna jedynka), o wartości 1, 1,5 lub 2 bitów. Wewnętrzne układy odbiornika próbkują sygnał z częstotliwością 16 razy szybszą niż ustawiane są bity. Odczytywanie bitów polega na zebraniu próbki 8, 9 i 10 a następnie porównanie ich ze sobą. W przypadku kiedy dwa kolejne bity posiadają tą samą wartość, wówczas jest ona wpisywana do rejestru przesuwnego. W przypadku, kiedy bit po 9 będzie posiadał inny stan niż bit 8 i 10, wówczas oznacza to, że wystąpił błąd komunikacji. Prędkości transmisji nie zostały ujęte w specyfikacji interfejsu, dlatego należy ją ustawić własnoręcznie. Typowe wartości prędkości transmisji jakie aktualnie się przyjmuje to: 2400, 4800, 9600, 19200, 38400, 57600, 115200 bodów. W celu poprawnej komunikacji, prędkość transmisji nadajnika i odbiornika musi być taka sama. Ramkę interfejsu UART przedstawiłem na poniższym rysunku.