Dlaczego mój przebieg zaczyna się przed wyzwalaczem?

10

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.

Obraz oscyloskopu

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.

Wartość wstrzymania

Nagrałem kilka klatek, aby pokazać puls zarówno nieobecny, jak i obecny:

Brak wiodącego impulsu Obecny puls wiodący

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:

Impulsy danych przy 1ms na div

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.

JYelton
źródło
2
Sprawdź menu wyzwalania - być może wyzwalasz niski puls na => określony czas, co będzie pasować do pokazanego zrzutu ekranu. Zamiast tego spróbuj uruchomić krawędź.
Andy aka
Mam również zakres „podstawowy” Owon SDS7102, który również czasami nie trafi w pierwszy wyzwalacz. Zachowanie wydaje się zależeć od podstawy czasu / częstotliwości próbkowania / ustawień pamięci i częstotliwości sygnału. Może na ciebie też mogą wpływać ustawienia podstawy czasu / częstotliwości próbkowania?
AndrejaKo,
1
Widziałem, że 18 000 $ zakresów nie może się obrócić i uruchomić ponownie w czasie krótszym niż 5 ms. Naprawdę smutne. Przy odstępie co najmniej 2s to nie powinien być twój problem.
darron
1
@darron Tak się składa, że ​​2s było literówką - impulsy występują w odstępach 2 ms. Myślę, że zakres polega na ponownym uzbrojeniu wyzwalacza wystarczająco szybko, ale w grę wchodzą inne czynniki, jak wspomniałem w aktualizacji pytania.
JYelton

Odpowiedzi:

3

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.

Olin Lathrop
źródło
Zredagowałem pytanie. Strumień danych powtarza się co 2 ms, a nie 2 sekundy. Upewniłem się, że filtrowanie nie jest włączone, a opóźnienie spustu jest nieco dłuższe niż ciąg impulsów. Mój zakres analogowy (BK 2190B) uruchamia się dobrze przy pierwszym impulsie zegara. Cyfrowy zawsze jednak tęskni. Nie jestem pewien, co jeszcze można zrobić, poza zwróceniem lunety cyfrowej, nie wydaje się to bardzo przydatne.
JYelton
3

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.

Wynik Tek TDS3014

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.

JYelton
źródło
0

Koleś, magistrala SPI jest zsynchronizowana z upadkiem linii zegara, a nie z wzrostem, dlatego wszystko wygląda źle!

Pozdrawiam, Max

stalker2106
źródło
Założę się, że zakres nie dba o to, jak SPI jest zsynchronizowany, wszystko, co widzi, to sygnał A i sygnał B.
Dmitrij Grigoriew
0

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.

Dmitrij Grigoriew
źródło