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.
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.
Saya merekam beberapa frame untuk menunjukkan nadi tidak ada dan hadir:
Jika saya mengatur basis waktu horizontal cukup lama untuk melihat durasi pulsa, selalu ada setidaknya 1,7 ms di antara mereka:
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.
sumber
Jawaban:
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.
sumber
Sinyal yang sama ini memicu dengan baik menggunakan Tektronix TDS3014, dengan pemicu menahan nilai mulai dari 350μs hingga 1.5ms atau lebih.
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.
sumber
Bung, bus SPI disinkronkan pada jatuhnya garis waktu, bukan naik, itulah sebabnya semuanya tampak salah tempat!
Salam, Max
sumber
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.
sumber