czwartek, 4 stycznia 2018

Analizator stanów logicznych dla hobbysty.

Prędzej czy później staniemy przed potrzebą analizy przebiegów cyfrowych generowanych przez MCU i układów peryferyjnych. W szczególności kiedy zajdzie  konieczność w rozpoznaniu poprawności transmisji pomiędzy MCU a innym urządzeniem czy układem. Analizator stanów logicznych jest również doskonałym wsparciem dla debugera sprzętowego.
Otwiera nam nowe możliwości w działaniu z MCU i jego peryferiami.
Kiedy odczujemy potrzebę posiadania analizatora stanów logicznych ?, na pewno każdy w innym momencie


Ja do takiego punktu dotarłem podczas prób z kontrolerem CAN- MC2517FD. Po napisaniu kawałka kodu testowego do "zagadania" z kontrolerem CAN, okazało się, że układ milczy i nie daje oznak życia :) Debuger sprzętowy wskazywał na poprawne formowanie danych, odpowiednie przerwania działały i wszystko wskazywało na to , że komunikacja powinna działać a nie działała.
W tym momencie naturalną koleją rzeczy jest potrzeba zobaczenia przebiegów cyfrowych w naturze a tego dokonamy przy pomocy analizatora stanów logicznych lub oscyloskopu. W każdym przypadku wybór analizatora będzie tańszym rozwiązaniem :)

Przejrzałem na szybko dostępne możliwości w zakresie tego co oferuje rynek. Mój wybór padł na klona firmy Salea. Nie potrzebowałem na tym etapie jakiegoś profesjonalnego urządzenia, być może kiedyś, ale do wszystkiego trzeba dojrzeć .
W cenie 60 zł z przesyłką otrzymałem  urządzenie o następujących parametrach :

Podstawowe dane:
  • wejscia logiczne dla 8 - kanałów
  • maksymalna częstotliwość próbowania 24MHz
  • małe wymiary
  • wskaźnik zasilania - LED
  • wskaźnik logicznego 0-1 na wejściu 1 - LED
  • zasilanie z USB
  • ręczna możliwość zmiany próbkowania na: 24MHz. 16MHz, 12MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500KHz, 250KHz, 200KHz, 100KHz, 50KHz, 25KHz
  • maksymalna długość sampli: 1G, co daje mozliwość przy próbkowaniu 1MHz przechwycić 1024 sekundy badanego sygnału 
  • impedancja wejścia: 100K.
  • potrafi dekodować następujące protokoły: I2C, Async Serial, SPI, 1-Wire, CAN, I2S, PCM, UNI/O, Manchester, MP

Odnosząc parametry do produktów z wyższej półki to powiem krótko, że za tę cenę narzekanie byłoby co najmniej niestosowne.

Dostajemy narzędzie uszyte na miarę hobbysty, które robi swoje i jest bardzo pomocne przy działaniu z MCU i uruchamianiu różnych interfejsów. 8 kanałów jest całkowicie wystarczającą ilością. Jeśli w którymś momencie odczujemy niedosyt w parametrach to przeskoczyć na wyższą półkę , również i cenową i po kłopocie.

Urządzonko doskonale współpracuje z oryginalnym oprogramowaniem od firmy Salea. Oprogramowanie jest dostępne bezpłatnie. Samo oprogramowanie i urządzenie jest na tyle proste i intuicyjne , że instrukcja jest zbędna. W ciągu jednego dnia używania :) wad nie zauważyłem. Pojawił się raz problem z rozpoznaniem urządzenia ale wyjęcie kabla USB z portu w PC i ponowne włożenie problem rozwiązało. Pamiętać musimy o połączeniu masy do analizatora z badanego układu.

Obcowanie z przebiegami daje dużą frajdę, wiele rzeczy można sobie lepiej w łepetynie wyobrazić.

Za pomocą analizatora możemy mierzyć dokładnie czasy, przydaje się to m.in aby zorientować się ile dana operacja w programie trwa. Robimy to w prosty sposób ustawiając np stan dowolnego wyjścia przed operacją do pomiaru . Za operacją do pomiaru zmieniamy stan wyjścia na przeciwny. W ten sposób na wykresie zmierzymy czas od ustawienia wyjścia do jego zmiany , który będzie czasem trwania mierzonej operacji przy założeniu, że operacja ustawienia wyjścia jest pomijalnie mała w stosunku do mierzonych wartości a w realu tak jest.

W RTOS od Microchipa dla PIC24HJ za pomocą analizatora możemy podejrzeć przełączanie procesów a fizycznie jest to rozwiązane właśnie poprzez zmianę stanów na wybranych wyjściach.

Jest wiele fajnych możliwości jakie stwarza nam analizator stanów logicznych.

Poniżej pokażę jak analizator stanów logicznych błyskawicznie wskazał mi, źródło błędu przy próbie nawiązania komunikacji z kontrolerem CAN MCP2517FD.


Na wykresie od góry mamy odpowiednio :
  • sygnał zegara SPI 
  • dane wysyłane po SPI
  • stan wyjścia CS
SPI ustawione na przesyłanie danych 8 bitowych, widzimy zatem jak zegar SPI fajnie nam taktuje każdy bit w paczkach 8 bitowych.
Po SPI wysyłamy 6 bajtów(w DEC : 33 , 208 , 204, 204 ,204, 204) , wartość każdego bajtu jest opisana na niebieskich polach. Tu możemy sobie zmieniać tryb wyświetlania danych DEC, HEX, BYTE etc i jest to bardzo wygodna funkcja.
Dane po SPI wysyłam za pomocą DMA. Dane są zatem poprawnie wysyłane i tutaj nie ma żadnych błędów. Dlaczego zatem tych danych nie widzi kontroler CAN ?? Odpowiedź znajduje się na wyjściu obrazującym stan linii CS. Aby kontroler CAN przyjął dane, na linii CS musi panować stan niski przez czas wysyłania i odbierania danych. Na wykresie widzimy , że stan niski pojawia się tylko na początku sekwencji ,na ulotną chwilę.
Ta ulotna chwila na CS reprezentuje de fakto stan inicjacji kanałów DMA co przedkłada się na to, że w złym miejscu dałem w programie zakończenie sygnału na linii CS. W ten genialnie prosty sposób czyli za pomocą pisma obrazkowego :) jednym rzutem oka wychwyciłem źródło problemu. Ile czasu by mi zeszło aby to wychwycić  bez analizatora  nawet mi się nie chce myśleć.

Kilka dni używania analizatora i powiem szczerze bez niego nie wychodzę już z domu. Analizator za 60 zł całkowicie spełnił moje oczekiwania i jest wart każdej wydanej złotówki. Oszczędzi nam wielu godzin życia, które byśmy spędzili nad szukaniem prostych błędów.



Pozdrawiam
picmajster.blog@gmail.com

3 komentarze:

  1. Witek czasy są takie , że jak coś nie chodzi pod Linuxem to nie warte uwagi :)
    Masz tu link do softu Salea m.in do Linuxa z którym chodzi ten analizator : https://www.saleae.com/downloads/ Tylko tu drobna uwaga, jak uruchamiasz soft Salea w Linuxie to jako admin.
    Po ponad roku używania gdniazdko USB odpadło od płytki, zreanimować się nie udało, zamówiłem nowy analizator cena ok 32 zł plus przesyłka :) No i właśnie czekam :)

    OdpowiedzUsuń