[UART/RS232] Analiza protokołów szeregowych oscyloskopami Rohde&Schwarz, część 1
Filozofia obsługi przyrządów
Rohde&Schwarz to firma z ponad 80-letnią tradycją, znana przede wszystkim z produkcji aparatury wykorzystywanej w pomiarach radiowych i telekomunikacyjnych (analizatory widma, analizatory sygnałowe, wektorowe generatory sygnałów itp.). Do tej kolekcji stosunkowo niedawno dołączyły oscyloskopy cyfrowe. We wszystkich najnowszych wyrobach stosowane są najnowocześniejsze dostępne technologie i podzespoły. Wprowadzane jest też w miarę ujednolicone oprogramowanie firmowe, które pozwala łatwo obsługiwać przyrządy niezależnie od przeznaczenia i zasady działania. Jest to równocześnie dobra metoda przyciągnięcia i przywiązania klientów do firmy.
Coraz częściej w aparaturze pomiarowej wykorzystywane są duże wyświetlacze dotykowe, które znakomicie ułatwiają obsługę przyrządów (wyświetlacz taki zastosowano w oscyloskopach RTO i RTE). Kolejnym udogodnieniem jest myszka i klawiatura USB, bardzo dobrze znane chyba wszystkim użytkownikom przyrządów pomiarowych, bo chyba nie ma już takich osób, które na co dzień nie korzystałyby z komputerów. W wyższych modelach przyrządów zastosowano system operacyjny Windows, stwarzający dodatkowe możliwości na przykład w zakresie współpracy urządzeń, sterowania i wymiany danych. Dodatkową korzyścią jest względnie łatwe panowanie nad formą przedstawiania informacji wyświetlanych na ekranie. Funkcje oscyloskopu są uruchamiane kilkoma metodami: przyciskami znajdującymi się na pulpicie przyrządu, poleceniami zawartymi w menu wyświetlanym w dolnej części ekranu lub przez naciśnięcie odpowiedniej ikonki wyświetlanej w górnej części ekranu (rys. 1).
Rys. 1. Podstawowe okno robocze oscyloskopu RTE1034
Analiza protokołu UART/RS232
Przesyłane interfejsem UART/RS2232 informacje formowane są z ramek składających się z:
- bitu startu,
- 5, 6, 7 lub 8 bitów danych,
- bitu parzystości (opcjonalnego, zwykle pomijanego),
- 1, 1,5 lub 2 bitów stopu (rys. 2).
Rys. 2. Ramka protokołu UART/RS232
Najczęściej stosowana jest ramka 8,n,1 (8 bitów danych, bez bitu parzystości, 1 bit stopu). Zwykle też jako pierwszy jest przesyłany zerowy, najmłodszy bit danej (LSB), ale dopuszczalna jest też kolejność odwrotna, tzn. od MSB do LSB. Interfejs UART/RS232 wykorzystuje transmisję asynchroniczną, co oznacza, że nie jest stosowana linia zegarowa. Można uznać, że elementami synchronizującymi są znaki startu, a dokładność rozpoznawania pozostałych elementów ramki zależy od dokładności lokalnych zegarów po stronie nadawczej i odbiorczej. Choć teoretycznie częstotliwość takiego zegara może być dowolna, to w praktyce są stosowane znormalizowane wartości.
Analizę wszystkich protokołów prowadzoną przy użyciu oscyloskopów R&S należy rozpocząć od wybrania odpowiedniego interfejsu i zdefiniowania wszystkich jego parametrów. Czynności te wykonuje się na przykład po naciśnięciu przycisku PROTOCOL znajdującego się na płycie czołowej oscyloskopu. Na ekranie zostaje wówczas wyświetlona zakładka zawierająca wszystkie parametry badanego interfejsu, która dla UART-a/RS232 będzie wyglądała, jak na rys. 1. Z łatwością rozpoznawane są na niej poszczególne pola i listy rozwijane definiujące parametry interfejsu, a więc: typ interfejsu, prędkość transmisji, liczba bitów stopu, długość ramki, opcje parzystości, kolejność transmitowania bitów. Okno konfiguracji jest bardzo czytelne, w czym pomagają zdefiniowane kolorami bloki wyboru parametrów oraz graficzna interpretacja analizowanego protokołu.
W wielu analizatorach protokołów uwzględniane są tylko opcje parzystości: None, Odd i Even, czyli bez parzystości, nieparzystość i parzystość. W oscyloskopach R&S w analizie protokołów można dodatkowo wybierać opcje Mark, Space i Don’t Care. Mark i Space to obecnie bardzo rzadko stosowane metody kontroli poprawności transmisji. Przypomnijmy, że jeśli wybrano kontrolę parzystości (Even), to bit parzystości w prawidłowo odebranym znaku powinien mieć wartość „0”, jeśli wystąpiła parzysta liczba jedynek w znaku (rys. 3). Analogicznie jest po włączeniu kontroli nieparzystości (Odd). Bit kontrolny powinien być równy „0” tylko wtedy, gdy w przesyłanym znaku jest nieparzysta liczba jedynek. Jeśli więc włączono kontrolę nieparzystości (Odd) i w bajcie o nieparzystej liczbie jedynek bit kontrolny jest równy „1”, to mamy przypadek wykrycia błędu transmisji. Załóżmy, że nadajnik wysyła bajt z parzystą liczbą jedynek. Przy włączonej kontroli Even ustawia dla niego bit parzystości na „0”. Jeśli odczytany przez odbiornik bit kontrolny będzie miał wartość „1”, to będzie oznaczało, że któryś z bitów w tym bajcie został przekłamany (rys. 3). Niestety, w takiej metodzie kontroli nie ma możliwości identyfikacji tego bitu. Jak na ironię przekłamany może być sam bit kontrolny.
Bity parzystości na oscylogramie przypisanym do danego interfejsu są wyodrębnione od całego znaku. Ich nieprawidłowa wartość jest sygnalizowana kolorem czerwonym, prawidłowa natomiast kolorem pomarańczowym. Błędny znak jest wyświetlany kolorem fioletowym w odróżnieniu od żółtego znaku interpretowanego jako bezbłędny. Symbolami „<” i „>” opisywane są bity startu i stopu.
Rys. 3. Rozpoznawanie błędów parzystości w protokole UART/RS232
Znaki Mark i Space są coraz rzadziej stosowane w praktyce. Z tego względu są to opcje coraz rzadziej implementowana także w analizatorach protokołów. Rohde&Schwarz nie zmyka jednak użytkownikom możliwości badania urządzeń wykorzystujących takie rozwiązania. . Przypomnijmy, że stosując znak Mark bit kontrolny powinien być w tym przypadku zawsze transmitowany i niezależnie od liczby jedynek w znaku zawsze ma wartość „1”. Analogicznie jest z opcją Space, tylko teraz bit kontrolny ma zawsze wartość „0”. Wybierając opcję Don’t Care analizator pomija badanie bitu parzystości, który oczywiście powinien być nadawany zgodnie z którąś z powyższych metod.
Warto jeszcze zwrócić uwagę na kilka dodatkowych parametrów zawartych w opcjach analizy protokołu UART/RS232. Są to:
– „Polarity”, określający poziom logiczny występujący na liniach TxD i RxD w stanie Idle, a więc wtedy, gdy nie są przesyłane żadne dane. W większości rozwiązań praktycznych jest to poziom wysoki.
– „Packets”, określający czasami stosowaną metodę organizowania danych w większe bloki (pakiety). W rozwiązaniu takim przyjmowana jest zasada, że każdy blok danych zawierający powiązane ze sobą dane, np. wyniki pomiarów wykonanych w jednej sesji, jest kończony umownym znakiem. Z oczywistych powodów, jako znak końca bloku powinna być wybierana dana nie występująca w samym bloku. Znak końca bloku jest ustalany w opcji „End word”, po wybraniu której wprowadza się stosowny wzorzec. Znakiem końca pakietu może też być określona przerwa czasowa pomiędzy kolejnymi blokami. Zatem po wybraniu opcji „Timeout” należy wprowadzić długość tej przerwy w odpowiednich jednostkach czasu. Przykład transmisji, w której jest przesyłany blok danych kończony znakiem „*” (0x2A) przedstawiono na rys. 4. Dodatkowo widoczne są tu przerwy między blokami, które mogą być również interpretowane jako koniec bloku.
Rys. 4. Transmisja blokowa, w której końcem bloku jest znak „*” lub przerwa czasowa
Analizator protokołów zamieszcza interpretację danych na wykresie BUS, który wygodnie jest umieścić bezpośrednio pod przebiegiem, np. tak jak na rys. 4. Jeżeli zdefiniowano transmisję blokową, to dodatkowo w zwartej postaci jest wyświetlany cały odczytany komunikat przesyłany w bloku. Możliwe są różne formaty prezentacji danych (np. hex, dec, octal, ASCII itp.). Przy dużej ilości danych, tak prezentowane wyniki stają się mało czytelne, dużo wygodniejsza jest forma tabelaryczna (rys. 5). W tabeli z łatwością można odnaleźć interesujące miejsce transmisji. Po kliknięciu na odpowiadający mu numer widoczny w kolumnie „Word”, ponownie zostaje wyświetlony wykres, przy czym jego centralny punkt będzie odpowiadał wybranej w tabeli chwili czasowej.
Rys. 5. Tabelaryczna postać wyświetlania danych zdekodowanych przez analizator protokołów