
Seperti yang telah berulang kali saya sebutkan dalam publikasi saya, proyek-proyek amatir dibiayai dari anggaran keluarga, dan seorang amatir radio biasanya tidak mampu membeli peralatan ukur yang mahal. Kita harus puas dengan apa yang kita miliki. Atau fakta bahwa dimungkinkan untuk mengambil keuntungan dari "untuk sementara waktu." Dan kadang-kadang karena putus asa, radio amatir harus "mengebor dengan gergaji dan melihat dengan gimlet."
Baru-baru ini, saya merasa perlu mencari tahu apa yang sebenarnya ditransmisikan dalam perangkat yang saya kembangkan di bus I2C. Itu adalah saat bahagia ketika Anda mampu untuk "melihat dengan gergaji."
Anda dapat mengetahui bagaimana pertukaran data antar perangkat menggunakan protokol I2C di
sini . Untuk menganalisis sinyal pada bus I2C, Anda dapat menggunakan osiloskop dua saluran digital dengan memori dan penganalisis logika.
Osiloskop Digital Dual Channel dengan Memori
Saat bekerja dengan peralatan elektronik, osiloskop adalah alat yang paling serbaguna. Osiloskop digital modern memiliki sejumlah sifat berguna yang memungkinkan, antara lain, untuk menganalisis sinyal bus I2C.
Dalam hal ini, saya mendapatkan osiloskop digital dua saluran digital "untuk sementara" dengan memori Rigol DS1102 (harga di situs web produsen adalah $ 461). Perangkat ini memiliki dua saluran pengukuran dengan bandwidth hingga 100 MHz dan frekuensi sampling sinyal 1 GSa / s.
CH1 terhubung ke sinyal SCL. CH2 terhubung ke sinyal SDA. Untuk kedua saluran, skala 1,00 V / div ditetapkan. Skala sapuan - 10 us / div. Untuk kejelasan, balok saluran pertama digeser ke bagian atas layar, dan balok saluran kedua ke bawah.
Dalam menu Trigger, osiloskop diatur untuk pengukuran tunggal dengan pemicu mencapai tepi naik di saluran CH1 level 1,00 V:

Setelah menyalakan peralatan yang sedang diuji, tombol Run / Stop merah besar ditekan. Osiloskop masuk ke mode siaga, lalu mulai. Setelah beberapa detik, rekaman dihentikan secara manual.
Bentuk gelombang yang diperoleh direkam pada layar media eksternal dengan layar:

Mari kita menganalisis sinyal yang direkam. Pada layar pertama kita melihat tampilan pengaturan perangkat dan osilogram dari sinyal SCL (bagian atas) dan SDA (bagian bawah layar), yang kita baca dari kiri ke kanan:
- Sinyal MULAI : master menetapkan level rendah pertama pada bus SDA dan kemudian pada bus SCL;
- Alamat 7-bit : baca 0x60 (1100000) pada bus SDA di sepanjang tepi depan SCL;
- tanda mode perekaman : kita membaca di bus SDA tingkat rendah di ujung depan SCL;
- Sinyal ACK : setelah mentransfer byte, perangkat master beralih untuk menerima melalui bus SDA, SDA diatur tinggi, perangkat slave menetapkan level rendah pada tepi jatuh SCL (sebenarnya, sinyal ACK), yang dibaca oleh master di tepi naik SCL;
- Sinyal STOP : master mengatur tinggi pada bus SCL dan kemudian pada bus SDA
Demikian pula, secara perlahan tapi pasti, Anda dapat mendekripsi sisa catatan secara manual.
Penganalisis Logika Sinyal Digital
Protokol dapat didekripsi menggunakan metode yang lebih sederhana menggunakan penganalisis logika dan perangkat lunak yang sesuai.
Untuk digunakan sebagai analisa logis, saya dengan hormat disediakan oleh rekan-rekan dari Saleae Logic 8 (harga di situs web produsen adalah $ 399). Perangkat lunak yang digunakan adalah demo Saleae Logic 1.2.18 yang diambil dari
situs web resmi . Saat memasang perangkat lunak ini, saya menerima
perjanjian lisensi dengan ketentuan tersebut, termasuk, untuk tidak menggunakan perangkat lunak ini dengan peralatan pihak ketiga.
Program ini termasuk penganalisa protokol I2C. CH0 ditugaskan untuk SCL, dan CH1 untuk SDA. Sinyal sampling rate 24 MSa / s.

Peluncuran dikonfigurasikan di bagian depan "terkemuka" CH0. Format heksadesimal dipilih untuk menampilkan data.

Setelah menyalakan peralatan yang sedang diuji, tombol Start hijau besar ditekan, dan setelah beberapa detik muncul bagan di layar:

Saya melihat manfaat maksimal dalam menggunakan penganalisis logis karena program itu sendiri mendekripsi data yang diterima. Hasil dekripsi dimasukkan baris demi baris ke dalam jendela Protokol yang Didekodekan. Saat Anda memilih garis data di jendela, program menunjukkan lokasi data ini pada bagan.
Osiloskop Digital vs Penganalisis Logika
Untuk membandingkan opsi, saya "menempelkan" empat tangkapan layar layar osiloskop dan sebuah fragmen diagram penganalisis logika dalam editor grafis:

Mulai ditandai dengan lingkaran hijau, Berhenti ditandai dengan lingkaran merah. Diagram pertama memeriksa keberadaan perangkat dengan alamat 0x60 di bus, dan kemudian menulis 0x80 ke register 0xB7 perangkat ini.
Jika kita mendekati perbandingan opsi "dengan bias", kita dapat melihat bahwa pada diagram penganalisis logika (frekuensi sampling 24 MSa / dt) ada "jitter" dari sinyal SCL, yang tidak ada, dengan demikian, pada osilogram dengan frekuensi sampling 1 GSa / dt. Sisa gambarnya sama, dan penganalisis logis juga mendekripsi data dengan benar dalam mode otomatis.
Ketika memilih "salah satu atau" di "residu kering", kami memiliki, dalam kasus osiloskop, perangkat universal yang mahal yang tidak nyaman untuk menganalisis bus sebagai penganalisa logika, tetapi untuk uang sebanding dengan itu. Di bawah kondisi ini, saya pribadi, sebagai insinyur dari "sekolah lama," akan memperoleh osiloskop digital.
Namun, jika ada perangkat lunak dengan perjanjian lisensi yang memungkinkan penggunaan klon penganalisis logika populer yang murah, seperti Saleae Logic 8 atau DSLogic Plus ...
Dan perangkat lunak semacam itu ada
Klon murah dari penganalisis logika populer, dan tidak hanya itu, didukung oleh
perangkat lunak open source
proyek sigrok .
Tempat kerja dikumpulkan:

Kemudian mulailah "menari dengan rebana." Pada Windows 10, hanya PulseView versi 32-bit yang diluncurkan. Dia tidak menentukan keberadaan klon Saleae Logic China murah dalam sistem (harga di situs penjual adalah $ 7).
Setelah itu, driver WinUSB dipasang di Zadig untuk perangkat
Logic , dan setelah memindai ulang itu didefinisikan di Zadig sebagai perangkat
fx2latw :

Setelah itu, driver WinUSB sekali lagi diinstal untuk perangkat
fx2latw di Zadig, dan hanya setelah itu PulseView melihat perangkat Saleae Logic dalam daftar. Perangkat telah terhubung.
Setelah menghubungkan perangkat, pengaturan program berikut dibuat (dari kiri ke kanan pada toolbar, dimulai dengan tulisan "Saleae Logic"):
- Rasio penangkapan pra-pemicu = 2% diatur dengan menekan tombol dengan tombol dan obeng;
- input tambahan dinonaktifkan dengan menekan tombol dengan probe merah;
- mengatur volume rekaman 100 K sampel;
- atur frekuensi sampling ke 24 MHz;
- Alat analisa protokol I2C dihidupkan dengan menekan tombol dengan ikon kuning-hijau.
Lebih jauh di panel di sebelah kiri saluran:
- saluran diberikan label teks yang sesuai dengan sinyal;
- kondisi pemicu yang ditetapkan pada tepi naik dari sinyal SDA;
- Sinyal I2C diberikan saluran yang sesuai.
Setelah menyalakan peralatan yang sedang diuji, tombol Run ditekan. Hasilnya sudah tidak asing lagi:

Tampaknya “menari dengan rebana” tidak sia-sia!
UPD : Setelah menginstal secara manual driver
libusb-win32 di Device Manager untuk perangkat USB
Logic , program PulseView mulai secara stabil mendeteksi keberadaan Saleae Logic dalam sistem tanpa memanipulasi Zadig.
Kesimpulan singkat:
Artikel tersebut menjelaskan metodologi untuk menganalisis sinyal bus I2C menggunakan osiloskop digital dengan penganalisa memori dan logika dengan paket perangkat lunak aplikasi.
Metode universal analisis sinyal, tetapi tidak murah dan lambat, adalah penggunaan osiloskop digital dengan memori.
Metode analisis sinyal yang cepat dan murah, tetapi dengan tugas yang tidak sepele untuk menghubungkan peralatan, adalah penggunaan klon yang murah dari penganalisis logika dalam hubungannya dengan PulseView.
Saya akan senang jika publikasi saya membantu menghemat waktu dan uang pembaca.
Dalam publikasi berikutnya saya akan memberi tahu Anda bagaimana saya mengukur frekuensi di mana resonator kuarsa dimulai pada synthesizer frekuensi, tanpa pengukur frekuensi. Tapi itu cerita lain ...