MCU saya menjalankan bus SPI dengan sekitar 4 perangkat. Saya ingin memperpanjang bus ini menjadi off board juga yaitu memiliki beberapa PCB yang terhubung ke papan "utama" dan memperluas fungsionalitas. Jarak "pad ke pad" adalah:
panjang jejak papan utama + Panjang kabel + panjang jejak pada papan memanjang
3 "+ 6" + 3 "= sekitar 12"
Dalam pengalaman saya, bahkan sinyal 1 MHz, dengan kenaikan sekitar 7 ns, pada jarak ini melalui kabel pita overshooting lebih dari 1 V (tetapi tidak ada dering berlebihan). Papan akan diberi daya oleh catu daya yang sama.
Catatan: Anda tidak dapat melihat waktu kenaikan di sini tetapi Anda dapat melihat overshoot yang berlebihan - ini adalah sinyal 3.3V. Dan ya, ini diukur dengan benar dengan kawat yang sangat pendek dari probe ke ground. Sama seperti itu sering merekomendasikan di situs ini. Saya tidak berpikir itu kesalahan pengukuran.
Saya ingin sistem bekerja pada 4 MHz tetapi 2 MHz juga dapat diterima. Maks. jumlah papan yang ingin saya hubungkan adalah sekitar 4 dan ini akan memperpanjang bus SPI untuk memiliki sekitar 12 perangkat. Saya tidak berpikir ini akan terlalu sulit untuk dikelola melalui kode karena saya sudah memiliki sesuatu yang berfungsi seperti ini. Memiliki garis pilih budak tambahan juga tidak menjadi masalah.
Namun, yang menjadi perhatian saya adalah bagaimana mengirim data SPI dari satu papan ke yang lain. Haruskah saya mengirim SPI langsung atau mengubahnya ke LVDS di satu ujung dan kemudian mengubahnya kembali menjadi SPI di ujung lainnya?
sumber
Jawaban:
Rule-of-thumb mengatakan Anda harus menghitung efek saluran transmisi jika panjang koneksi Anda lebih dari 1/10 panjang gelombang sinyal.
Saluran transmisi akan menyebabkan pantulan di mana mereka menunjukkan perubahan impedansi yang tiba-tiba. Sinyal yang dipantulkan menambah aslinya, dapat memantul lagi di sisi pemancar, dan dengan cara itu bolak-balik. Hasilnya ditampilkan dalam grafik: overshoot yang Anda bicarakan, dan beberapa dering.
edit (ulang pembaruan pertanyaan)
Waktu naik tampaknya 7ns. Itu cepat, seperti yang dikatakan Kortuk, itu artinya Anda memiliki spektrum setidaknya hingga 400MHz, dan harmonisa itu memang akan mengalami efek saluran transmisi, bahkan jika jam Anda hanya 1MHz. Cobalah untuk menyaringnya, bandwidth 20MHz (80MHz untuk clock 4MHz) memberi Anda lebih dari cukup waktu naik. Ini adalah gelombang persegi 1MHz yang difilter dengan dinding bata LPF pada 20MHz:
Menempatkan resistor seri akan membentuk LPF orde pertama dengan kapasitansi saluran. Jika kami memperkirakannya pada 50pF maka
sumber
Untuk bus sesingkat itu, saya akan mencoba meletakkan resistor kecil secara seri dengan apa pun yang menggerakkan garis. Itu bukan cara ideal teoretis yang memperhitungkan teori saluran transmisi, tetapi pendekatan pragmatis yang menurut saya akan cukup baik untuk kasus Anda. Coba 47 Ω sebagai permulaan dan lihat apa fungsinya. Jika itu membantu tetapi tidak cukup, Anda bisa naik lebih tinggi tetapi saya tidak akan melebihi 120 Ω. Kemungkinannya adalah bahwa di suatu tempat dalam kisaran itu Anda akan menemukan nilai yang cukup baik.
sumber
AFAIK overshoot dapat dihilangkan dengan pemutusan yang benar, jika driver Anda dapat mendorong beban. Kalau tidak, beberapa pasangan driver / penerima khusus seperti LVDS atau bahkan RS485 pasti akan melakukannya.
sumber
Saya punya masalah serius di masa lalu menjalankan SPI melalui kabel pita, meskipun yang jauh lebih lama dari apa yang Anda gambarkan. Kekebalan kebisingan menjadi masalah nyata, dan perintah yang rusak akhirnya sampai ke perangkat saya. Itu cukup untuk gagal pengujian imunitas kebisingan CE. Jika Anda mengalami masalah dalam hal ini nanti, saya akan merekomendasikan menempatkan MCU terpisah di setiap papan dan menghubungkan mereka melalui CANbus.
sumber