Mengapa gelombang saya mulai sebelum pemicu?


10

Saya belajar bagaimana menganalisis jam bus SPI dan data menggunakan osiloskop penyimpanan digital entry-level. Saya menggunakan BK Precision 2542B untuk mengukur output jam dan garis MOSI dari Netduino yang menggunakan mikrokontroler ARM.

Gambar Osiloskop

Dalam gambar ini, saya memiliki jam di saluran 1 (kuning), dan MOSI di saluran 2 (biru). Pemicu diatur untuk menggunakan saluran 1, menggunakan pemicu tepi naik dari 1,44V. Amplitudo gelombang clock square adalah sekitar 3.3V.

Indikator pemicu berada di tengah tampilan secara horizontal, namun saya memiliki denyut nadi di sebelah kiri. Saya mengharapkan denyut pertama dari jam untuk memulai di lokasi pemicu. Saya tahu bahwa osiloskop penyimpanan digital memungkinkan Anda melihat peristiwa sebelum dan sesudah pemicu, tetapi saya bingung mengapa denyut nadi pertama tidak sesuai dengan yang saya kira.

Apakah pemahaman saya tentang memicu salah, atau apakah saya hanya menggunakan lingkup aneh?

Sunting: Kereta pulsa lebarnya 300μs, berulang pada interval 2ms, dan saya memiliki nilai penunda 500μs. Menyesuaikan penahanan tidak mengubah fakta bahwa satu pulsa mendahului pelatuk.

Edit 2:

Setelah lebih banyak analisis sinyal, termasuk menggunakan osiloskop analog, saya pikir saya telah menentukan bahwa kadang-kadang durasi pulsa sekitar 350μs, bukan 300μs. Ini mungkin kesalahan dalam frame yang menghasilkan kode.

Saya menemukan bahwa waktu tunggu 352μs akan menghasilkan hasil yang diharapkan, tetapi setiap kali dan kemudian pulsa tambahan mendahului pemicunya.

Nilai penahanan

Saya merekam beberapa frame untuk menunjukkan nadi tidak ada dan hadir:

Pulsa terkemuka tidak ada Pulsa terkemuka hadir

Jika saya mengatur basis waktu horizontal cukup lama untuk melihat durasi pulsa, selalu ada setidaknya 1,7 ms di antara mereka:

Pulsa data pada 1ms per div

Jadi sementara saya pikir pulsa utama adalah hasil dari "kesalahan" dari sumbernya, saya masih tidak yakin bagaimana pemicu penahanan> 360μs masih menghasilkan pulsa terkemuka yang tidak terduga.


2
Periksa menu pemicu Anda - Anda mungkin memicu pada denyut nadi rendah untuk => waktu tertentu dan ini akan cocok dengan tangkapan layar yang telah Anda tunjukkan. Cobalah memicu edge sebagai gantinya.
Andy alias

Saya juga memiliki ruang lingkup "entry-level", Owon SDS7102, dan terkadang juga akan melewatkan pemicu pertama. Perilaku tersebut tampaknya tergantung pada pengaturan waktu / laju sampel / pengaturan memori dan frekuensi sinyal. Mungkin Anda juga dapat dipengaruhi oleh pengaturan tingkat waktu / sampel tingkat?
AndrejaKo

1
Saya telah melihat cakupan $ 18.000 tidak dapat berbalik dan retrigger di bawah 5 ms. Sangat sedih, sungguh. Dengan interval 2s setidaknya itu seharusnya tidak menjadi masalah Anda.
darron

1
@dronon Seperti yang terjadi 2s adalah kesalahan ketik - pulsa berada pada interval 2ms. Saya pikir ruang lingkup mempersenjatai kembali memicu cukup cepat, tetapi faktor-faktor lain sedang bermain seperti yang saya sebutkan dalam pembaruan pertanyaan.
JYelton

Jawaban:


3

Anda mungkin mengaktifkan pemfilteran atau penundaan pemicu. Kalau tidak, pemicu naik secara teratur seharusnya menangkap denyut pertama, tidak menunggu sampai detik. Perhatikan baik-baik melalui menu pemicu dan matikan apa pun yang disebut "filter", "delay", "holdoff", dan sejenisnya.


Saya mengedit pertanyaan. Aliran data berulang setiap 2ms, bukan 2s. Saya sudah memastikan tidak ada pemfilteran yang diaktifkan, dan pemicu penangguhan itu sedikit lebih lama dari kereta pulsa. Ruang lingkup analog saya (BK 2190B) memicu baik pada pulsa jam pertama. Namun yang digital selalu ketinggalan. Saya tidak yakin apa lagi yang harus dilakukan kecuali mengembalikan cakupan digital, sepertinya tidak terlalu mampu.
JYelton

3

Sinyal yang sama ini memicu dengan baik menggunakan Tektronix TDS3014, dengan pemicu menahan nilai mulai dari 350μs hingga 1.5ms atau lebih.

Hasil Tek TDS3014

Saya pikir jawabannya, oleh karena itu, adalah untuk memeriksa silang sinyal dengan lebih dari satu ruang lingkup ketika sesuatu tidak beres.

Saya tidak pernah bisa mendapatkan BK 2542B untuk menunjukkan jam dengan benar tanpa kehilangan pulsa pertama, atau menunjukkan "kesalahan" atau "sampah" secara acak yang membuat pulsa jam tidak dapat dihitung.


0

Bung, bus SPI disinkronkan pada jatuhnya garis waktu, bukan naik, itulah sebabnya semuanya tampak salah tempat!

Salam, Max


Saya yakin ruang lingkup tidak peduli tentang bagaimana SPI disinkronkan, semua yang dilihatnya adalah sinyal A dan sinyal B.
Dmitry Grigoryev

0

Nah, secara teknis ruang lingkup Anda tidak melakukan kesalahan: Anda ingin menyinkronkan pada peningkatan clock edge, dan semua tangkapan layar Anda. Tidak ada yang memberitahumu itu akan menjadi denyut nadi pertama . Jika ruang lingkup mulai merekam cukup awal, pemicunya harus mengenai denyut nadi pertama, jika tidak - keberuntungan, Anda mendapatkan gambar # 2.

Yang tidak bisa saya mengerti adalah mengapa Anda ingin pemicu Anda pada CLK, dan bukan pada sinyal SS. Jatuh pada SS menjamin bahwa Anda berada di awal transaksi, kenaikan CLK tidak.

EDIT: mengingat bahwa Anda sepertinya selalu kehilangan satu pulsa, sepertinya ada bug dalam cakupannya. Namun, lihat apakah memicu SS membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.