Masalah Penghentian Bus SPI

10

Saya telah mengerjakan proyek di mana master OMI Linux SPI berinteraksi dengan 6 perangkat budak SPI (konverter 5x A / D dan magnetometer tunggal).

Saya dapat mengatur frekuensi clock SPI dan telah bereksperimen dengan 50 kHz, 100 kHz, dan 1MHz.

Saya memasang diagram kabel / papan yang menunjukkan panjang dari master SPI dan semua periferal. Panjang bus SPI (semua panjang kawat) dari master kira-kira 970mm untuk kasing percobaan saya.

masukkan deskripsi gambar di sini

Masalah yang saya temukan adalah bahwa komunikasi dengan 1 perangkat gagal ketika saya menambahkan lebih banyak perangkat lain di bus. Bahkan jika komunikasi menembus magnetometer di sisi jauh dari bus, komunikasi dengan konverter A / D di sisi lain gagal sampai magnet harness stub dilepas dan kemudian bagian A / D kembali.

Saya sudah membaca di sini: Pertimbangan Pengakhiran Bus SPI dan di sini: Komunikasi Dewan Jarak Pendek ke Dewan

di mana disarankan untuk meletakkan RC LPF sedekat mungkin dengan node penggerak, jadi SCLK dan MOSI di sisi master dan masing-masing dari sinyal MISO / SOMI 6x saya. Saya telah melihat pendekatan serupa dilakukan untuk USB dengan jaringan RC 47pF / 27R. Niat saya adalah untuk mencoba ini di sirkuit saya dalam upaya untuk mengurangi tepi tajam cepat ~ transisi 100nsec tepi.

Apakah ini prosedur yang tepat yang saya ikuti di sini dengan menambahkan RC LPF? Ini sepertinya sangat goyah, apakah ada latihan yang lebih baik? Saya melihat catatan aplikasi dari TI di mana mereka berbicara tentang memperpanjang SPI untuk jarak bus yang lebih panjang, apakah ini solusi yang tepat di sini atau masalah saya hanyalah salah satu harmonik frekuensi tinggi dari transisi tepi kecepatan tinggi? http://www.ti.com/lit/an/slyt441/slyt441.pdf

Terima kasih, Nick

Pengukuran CLK / MISO yang bersih dari magnetometer

Mengukur waktu transisi jam dari sinyal CLK

Apakah garis MISO ini (saluran # 1) menunjukkan refleksi?  Level tidak terlihat digital dengan case tangga, apakah ini refleksi

Shraken
sumber
Apakah Anda memiliki kemampuan untuk menambahkan resistor seri dan mengubah kabel?
efox29
Hai efox29, ya tapi itu akan sedikit kotor. Master SPI saya menggunakan SOM yang dipasang di papan anak saya. Niat saya adalah untuk memotong jejak untuk SCK dan MOSI dan memasang 330-ohm / 47pF 0603/0805 RC untuk masing-masing menggunakan epoksi / lem dan melakukan sesuatu yang serupa pada A / D dan papan magnetometer untuk MISO. Saya akan mencoba dan membuat GND stub sedekat GND pad atau pesawat yang bisa saya dapatkan. Menahan ini sampai saya mendengar lebih banyak tetapi berencana untuk mencoba besok. Saya tidak memiliki kemampuan untuk mengubah SPI menjadi rantai daisy atau apa pun. Lagi pula tidak akan banyak gunanya, papan perlu di ujung yang berlawanan.
shraken
Bagaimana sistem Anda dengan jam yang lebih lambat seperti 50KHz? Apa mikrokontroler yang Anda gunakan?
efox29
Saya akan menyarankan mulai dengan baris SCK terlebih dahulu sebelum menambahkan Rs dan Cs ke baris lain. Lagi pula, ujung-ujungnya hanya penting pada garis jam, garis lainnya akan lebih toleran terhadap refleksi.
alex.forencich
2
Dan dengan masalah seperti ini, ini adalah laju perubahan tegangan tepi yang menjadi masalah, bukan frekuensi clock. Jika Anda melihat masalah yang sama terlepas dari frekuensi clock, maka fast edge adalah masalahnya dan perlu diperlambat.
alex.forencich

Jawaban:

5

Sulit untuk menjawab ini tanpa semua detail, tetapi di sini ada pandangan umum pada masalah yang saya percaya mungkin juga merupakan jenis jawaban yang lebih berguna untuk situs ini.

Multi-node-nets harus selalu disimulasikan. Mereka sangat sulit diprediksi. Dan butuh sekitar 3 menit untuk melihat bahwa desain Anda mungkin tidak optimal.

Berikut ini adalah pengaturan simulasi untuk jam dari master ke semua perangkat slave (nilainya hanya perkiraan kasar, seperti halnya jika Anda melakukan ini sebelum membangun apa pun):

masukkan deskripsi gambar di sini

Dan plot simulasi yang dihasilkan (kita mengabaikan apa itu, unit dll karena jelas tidak layak dibangun):

masukkan deskripsi gambar di sini

Ide pertama yang muncul di pikiran adalah rantai daisy dari semua input dan penghentian paralel sederhana. Skema fly-by jika Anda mau. Ini terlihat seperti ini dalam pengaturan simulasi:

masukkan deskripsi gambar di sini

Dan plot hasilnya terlihat jauh lebih baik:

masukkan deskripsi gambar di sini

Jika Anda dapat hidup dengan konsumsi daya yang meningkat dari terminasi thevenin dan pengurangan tegangan ayun pada input jam dari berbagai perangkat dan ... (hanya Anda yang tahu kendala sebenarnya) ... maka beberapa variasi dari ini sebenarnya mungkin bernilai bangunan.

Ada solusi lain yang akan berhasil, tetapi kuncinya adalah memahami bahwa jaring multi-simpul tidak mudah diprediksi. 5 menit simulasi di sini sebelum Anda membangun sesuatu dapat menghemat banyak waktu kemudian. Sayangnya simulator jenis ini tidak datang murah.

Saya menggunakan Cadence SigXplorer di sini. Penafian yang biasa berlaku: Saya mengajar kelas dalam integritas sinyal dan sering memiliki lisensi perangkat lunak sponsor Cadence atau Mentor untuk kelas tersebut.

Rolf Ostergaard
sumber
Perangkat lunak apa yang Anda gunakan untuk saluran transmisi sim?
efox29
@ efox29 Cadence SigXplorer dan Mentor Hyperlynx.
Rolf Ostergaard
@nickishere (OP) Apakah ini menjawab pertanyaan Anda?
Rolf Ostergaard
Hai Rolf, Terima kasih telah meluangkan waktu untuk mensimulasikan rangkaian ini, sangat menghargainya. Saya harus melihat ke dalam Cadence SigXplorer dan akan def. cari alat seperti itu lain kali saya mendekati ini bus besar. Saya menandai jawaban Anda sebagai jawaban yang paling detail dan relevan. Namun, saya harus mengatakan saya akhirnya menggunakan topologi secara empiris sehingga saya tidak bisa mengatakan itu berfungsi.
shraken