Uczę się, jak analizować zegar i dane magistrali SPI za pomocą podstawowego oscyloskopu cyfrowego. Używam BK Precision 2542B do pomiaru wyjścia zegara i linii MOSI z Netduino, które wykorzystuje mikrokontroler ARM.
Na tym obrazie mam zegar na kanale 1 (żółty) i MOSI na kanale 2 (niebieski). Wyzwalacz jest ustawiony na wykorzystanie kanału 1, z wykorzystaniem wyzwalacza zbocza narastającego o wartości 1,44 V. Amplituda fali kwadratu zegarowego wynosi około 3,3 V.
Wskaźnik wyzwalania znajduje się na środku wyświetlacza poziomo, ale mam puls po jego lewej stronie. Spodziewałem się, że pierwszy impuls zegara zacznie się w miejscu wyzwalania. Wiem, że oscyloskop z pamięcią cyfrową pozwala zobaczyć zdarzenia przed i po wyzwoleniu, ale jestem zdezorientowany, dlaczego pierwszy puls nie jest tam, gdzie myślałem.
Czy moje rozumienie wyzwalania jest nieprawidłowe, czy po prostu używam dziwnego zakresu?
Edycja: Ciąg impulsów ma szerokość 300 μs, powtarza się w odstępach 2 ms, a wartość zatrzymania wyzwalania wynosi 500 μs. Dostosowanie blokady nie zmieniło faktu, że jeden impuls poprzedza spust.
Edycja 2:
Po dokładniejszej analizie sygnału, w tym przy użyciu oscyloskopu analogowego, wydaje mi się, że ustaliłem, że czasami czas trwania impulsu wynosi około 350 μs zamiast 300 μs. Może to być usterka w ramkach generujących kod.
Odkryłem, że czas oczekiwania 352μs da oczekiwany rezultat, ale co jakiś czas dodatkowy impuls poprzedza spust.
Nagrałem kilka klatek, aby pokazać puls zarówno nieobecny, jak i obecny:
Jeśli ustawię poziomą podstawę czasową wystarczająco długo, aby zobaczyć czas trwania impulsów, zawsze wydaje się, że między nimi jest co najmniej 1,7 ms:
Chociaż myślę, że impuls wiodący jest wynikiem „usterki” ze źródła, nadal nie jestem pewien, w jaki sposób opóźnienie wyzwalania> 360 μs nadal wytwarza nieoczekiwany impuls wiodący.