[CAN i LIN] Analiza protokołów szeregowych oscyloskopami Rohde&Schwarz, część 3
Teoretycznie stany impulsów są odczytywane w połowie ich szerokości, ale czasami, np. na skutek różnych zniekształceń sygnału w zastosowanym medium korzystne może okazać się przesunięcie punktu próbkowania. Należy wówczas zmienić parametr „Sample Point”, którego domyślną wartością jest 50%.
Po skonfigurowaniu protokołu można już przystąpić do pomiarów. Ich przebieg zależy w dużym stopniu od doboru trybu wyzwalania (rys. 4). Podczas analizy interfejsu CAN ma to szczególne znaczenie, gdyż rozróżnianych jest tu wiele różnych charakterystycznych zdarzeń. Pierwszym, najprostszym zdarzeniem wyzwalającym jest identyfikacja początku ramki. Na ekranie moment ten jest zaznaczany znakiem zielonego otwierającego nawiasu prostokątnego (rys. 5). Analogicznie, koniec ramki jest oznaczany nawiasem zamykającym. Przydatność tego rodzaju wyzwalania ogranicza się praktycznie do przypadków, w których transmisje są inicjowane sporadycznie, w przypadku ciągłego ruchu na magistrali obraz nie będzie stabilny.
Rys. 4. Zakładka wyboru zdarzeń wyzwalających dla protokołu CAN
Rys. 5. Przykładowe wyzwolenie na początku ramki
Nieco skuteczniejsze jest wyzwalanie na określonym typie ramki. Jeśli podejrzewamy, że w układzie są generowane błędy, najlepszą metodą analizy będzie zastosowanie wyzwalania po wykryciu ramki błędu. Przyczyn generowania błędów jest kilka, na przykład brak dodatkowego bitu o przeciwnym stanie po przesłaniu pięciu bitów jednakowych. O błędach będzie jeszcze mowa w dalszej części artykułu. Na rys. 6 przedstawiono przykłady ramek różnego typu, z jakimi można się spotkać badając interfejs CAN.
Rys. 6. Przykładowe wyzwolenie na różnych typach ramek, a) ramka danych, b) ramka zdalna, c) ramka błędu, d) ramka przepełnienia
Do poszukiwania konkretnych danych najlepiej nadają się opcje: „Identifier” i „Identifer + Data”. Pierwsza z nich powoduje wyzwolenie oscyloskopu po zlokalizowaniu ramki o określonym identyfikatorze. Próbując ręcznie rozszyfrować dane w polu ID trzeba pamiętać, że identyfikator 29-bitowy jest rozdzielony w środku bitami SRR i IDE oraz że w przypadku występowania co najmniej 5-bitowych ciągów jednakowych bitów pole to może być wydłużone o dodatkowo generowane impulsy synchronizujące. Na rys. 7 przedstawiono wynik poszukiwania ramki o identyfikatorze 01A54321h zawierającej daną 24h występującą na drugim bajcie pola danych. Opcje wyzwalania zostały dobrane zgodnie z rys. 4.
Rys. 7. Oscylogram uzyskany po wyzwoleniu na ramce o identyfikatorze 01A54321h zawierającej daną 24h występującą na drugim bajcie pola danych
Wracamy jeszcze do błędów. Pomiar analizatorem protokołów może być wyzwolony określonym rodzajem błędu, nie tylko przesłaniem samej ramki błędu. Stwarza to możliwość zawężania podejrzeń co do źródła błędów w nieprawidłowo funkcjonującym urządzeniu. Po wybraniu opcji „Type=Error condition” należy zaznaczyć, które z czterech rodzajów błędów mają być rozpatrywane. Są to: błąd sumy kontrolnej (CRC), błąd formatu ramki (Form) występujący po stwierdzeniu niepoprawnego stanu znanych bitów, błąd kodowania (Bit stuffing) generowany po wystąpieniu w interfejsie więcej niż pięciu kolejnych jednakowych bitów i błąd potwierdzenia (Ack) generowany, gdy odbiornik nie wystawi bitu dominującego („0”) oznaczającego potwierdzenie odczytania ramki. Każdy z tych błędów przedstawiono na rys. 8. Zdarza się, że jeden błąd może generować kolejne. Na rys. 8c został wykryty błąd kodowania. Po pięciu następujących po sobie bitach dominujących nie został wstawiony bit recesywny, co natychmiast zostało wykryte i zasygnalizowane jako błąd „Bit stuffing”.
Rys. 8. Wyzwalanie na błędach, a) CRC, b) ramki, c) kodowania, d) braku potwierdzenia