Komunikasi Papan Jarak Pendek ke Papan

24

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.

masukkan deskripsi gambar di sini

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?

Saad
sumber
1
Apa waktu naik Anda?
Kortuk
@ Kortuk Benar-benar lupa menyebutkannya, maaf. Memperbarui pertanyaan.
Saad
7nS naik waktu, itu berteriak cepat.
Kortuk
Maaf untuk dua pertanyaan yang tidak relevan. apa osiloskop yang Anda gunakan? 2. Mengapa cincin sangat penting?
richieqianle

Jawaban:

15

Rule-of-thumb mengatakan Anda harus menghitung efek saluran transmisi jika panjang koneksi Anda lebih dari 1/10 panjang gelombang sinyal.

masukkan deskripsi gambar di sini

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.

ΩΩ resistor untuk memulai, dan melihat seberapa jauh itu membuat kita.

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:

masukkan deskripsi gambar di sini

Menempatkan resistor seri akan membentuk LPF orde pertama dengan kapasitansi saluran. Jika kami memperkirakannya pada 50pF maka

R=12π100M.Hz50halF=32Ω

Ω

stevenvh
sumber
2
Frekuensi 1MHz tidak relevan. Ini waktu naik yang penting.
Rocketmagnet
@stevenvh, Mencoba menambahkan resistor 1K ke ground di tujuan. Ini membantu dengan paku tetapi juga menurunkan level sinyal. Apakah itu normal? Ketika saya mengatakan tingkat di mana sinyal menetap. Juga mencoba 500 Ohm, efek yang sama 220 Ohm tetapi lebih jelas.
Saad
@ Saad - Berapa harganya? 3.3V dalam 1k hanya 3mA, pengemudi harus benar-benar dapat memasok itu. Ini mungkin memiliki beberapa hambatan internal, tapi itu beberapa puluh ohm, jadi levelnya seharusnya lebih rendah 2 atau 3%.
stevenvh
@stevenvh Saya lupa bahwa saya seri resistor di telepon, jadi jelas saya akan menjatuhkan beberapa tegangan. Saya konyol! Namun, bahkan resistor 180 Ohm tidak banyak membantu. Ini membawa overshoot ke 4.5V. Saya kira saya akan membutuhkan resistensi yang jauh lebih rendah tetapi kemudian saya harus khawatir tentang hasil imbang saat ini.
Saad
Juga, haruskah saya mempertimbangkan penghentian aktif? Menggunakan resistansi rendah akan meningkatkan kebutuhan daya di seluruh papan dan karena bus beroperasi setiap saat, itu meningkatkan konsumsi daya. Apakah menggunakan dioda Schottky sebagai klem bekerja dengan baik?
Saad
6

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.

Olin Lathrop
sumber
Saya sudah mencoba pendekatan itu, Olin. Saya menggunakan resistor 100 Ohm dan menjatuhkan overshoot sekitar 500 mV dan membawanya ke 4,3 V dari 4,7 V. Itu masih volt di atas 3,3 V! Waktu naik itu 12 ns dibandingkan dengan awal 7.
Saad
Sepertinya saya sedang menghitung resistor saya saat Anda memposting jawaban Anda, Olin. Maaf tentang itu
stevenvh
@ OlinLathrop I meningkatkan resistansi seri ke 330 Ohm dan membawa overshoot ke 3.7V. Saya cukup senang dengan ini. Waktu naik adalah 10 ns. Haruskah saya tetap dengan ini atau meletakkan resistor terminasi pada revisi papan berikutnya? Saya bertanya karena Anda merekomendasikan untuk tidak melebihi 120 Ohm.
Saad
@ Saad: Saya khawatir tentang efek dari beban lain di telepon dan semakin rentan terhadap kebisingan. Jika sinyal bersih dan tidak ada beban DC (hanya input CMOS impedansi tinggi, misalnya) pada saluran, maka lanjutkan dan gunakan 300 Ohm.
Olin Lathrop
4

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.

Wouter van Ooijen
sumber
+1: kita sering menggunakan LVDS untuk membawa sinyal SPI.
Jason S
1

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.

Stephen Collings
sumber