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.
źródło
Odpowiedzi:
Prawdopodobnie masz włączone filtrowanie wyzwalaczy lub opóźnienie. W przeciwnym razie zwykły wyzwalacz zbocza powinien wychwycić pierwszy impuls, a nie czekać do drugiego. Przyjrzyj się uważnie w menu wyzwalacza i wyłącz wszystko, co nazywa się „filtrem”, „opóźnieniem”, „wstrzymaniem” i tym podobne.
źródło
Ten sam sygnał wyzwala się dobrze przy użyciu Tektronix TDS3014, z wartościami zatrzymania wyzwalania w zakresie od 350 μs do 1,5 ms lub więcej.
Myślę więc, że odpowiedzią jest sprawdzenie krzyżowe sygnałów w więcej niż jednym zakresie, gdy coś nie wygląda dobrze.
Nigdy nie byłem w stanie zmusić BK 2542B do prawidłowego wyświetlania zegara bez utraty pierwszego impulsu lub pokazywania przypadkowych „usterek” lub „śmieci”, co powoduje, że pulsowanie zegara jest niepoliczalne.
źródło
Koleś, magistrala SPI jest zsynchronizowana z upadkiem linii zegara, a nie z wzrostem, dlatego wszystko wygląda źle!
Pozdrawiam, Max
źródło
Cóż, technicznie rzecz biorąc twój cel nie zrobił nic złego: chciałeś zsynchronizować się z rosnącą krawędzią zegara, a wszystkie zrzuty ekranu są. Nikt ci nie powiedział, że to będzie pierwszy puls . Jeśli luneta zacznie rejestrować wystarczająco wcześnie, wyzwalacz powinien uderzyć w pierwszy impuls, jeśli nie - nieszczęście, otrzymasz obraz # 2.
Nie do końca rozumiem, dlaczego chcesz wyzwalacza na CLK, a nie na sygnale SS. Spadek krawędzi SS gwarantuje, że jesteś na początku transakcji, wzrost krawędzi CLK nie.
EDYCJA: biorąc pod uwagę, że wydaje się, że zawsze brakuje dokładnie jednego impulsu, w końcu wygląda to jak błąd w zakresie. Nadal sprawdź, czy wyzwalanie na SS pomaga.
źródło