Apa saja masalah desain untuk komunikasi SPI off board?

8

Gambaran:

Saya berkomunikasi di antara 3 papan PCB kustom dengan dspic33 pada mereka menggunakan SPI. Saya memiliki master dan 2 budak, tetapi saya mengirimkan kedua budak data yang sama (dan membiarkan mereka memilih apa yang harus diperhatikan).

Pengaturan perangkat keras:

Kedua budak telah membangun pengontrol motor BLDC dan Master mengendalikan pengontrol motor ini melalui SPI. Kabel dijalankan sekitar 3 kaki dari master ke masing-masing budak dan header khas .1 "pitch melalui lubang header SAMTECH. Setiap pengontrol motor memiliki regulator 3,3 volt yang menjalankan elektronik dsPIC / LV. Saya menggunakan satu regulator pengontrol motor (ayo panggil dia A) untuk juga menyalakan SPI master DSPIC. Untuk pengontrol motor lainnya (sebut saja B), saya jalankan saja jalur SPI dan ground dari master. CLK SPI berjalan pada 100KHz

Sampai ke titik (Akhirnya):

Dengan tidak ada motor yang menjalankan ini semua berfungsi dengan baik, semua data muncul seperti yang diharapkan untuk kedua budak. Namun, ketika saya memulai motor, Bslave tidak lagi mendapatkan data yang benar. Dia mengambil jam tambahan atau menjatuhkannya, saya kira lakukan untuk kebisingan tambahan. Bagaimanapun, checksumnya mulai gagal. Aslave bekerja seperti seorang juara tidak peduli apa.

1) Apakah Anda berharap bahwa semua perangkat ini perlu dijalankan dari sumber 3,3 volt yang sama? Jika demikian, dapatkah Anda meyakinkan saya dengan berbicara tentang loop induktansi yang lebih panjang dan ilmu hitam seperti itu.

2) Apakah Anda memiliki aturan praktis tentang seberapa cepat saya dapat berharap dapat menjalankan SPI clk dan sukses dengan pengaturan perangkat keras seperti di atas?

Mat
sumber
Simulasi diperlukan untuk memperkirakan seberapa cepat jam dapat berjalan. Dengan asumsi Anda memiliki papan berlapis ganda atau tunggal, aturan praktis yang baik adalah merutekan jejak tanah atau bidang tembaga tanah (pada lapisan yang berlawanan) di bawah atau berdekatan dengan garis SPI untuk mengurangi kebisingan yang digabungkan ke dalam jejak.
Steinar

Jawaban:

5

Saya sudah menjalankan SPI (2MHz clock) sekitar 5m dari 1 kotak ke kotak lain dan saya tidak ragu dalam mendesain jam dan data menjadi output seimbang. Kabel (khusus) antara keduanya juga menggunakan twisted pair dan layar pada data dan jam.

Saya juga mengirim daya terisolasi ke kotak jauh melalui konverter dc-to-dc. Saya tidak punya cukup waktu untuk mendapatkan yang salah ini jadi mungkin solusi saya adalah kerja keras tapi hei, itu berhasil. Alasan saya di balik keputusan ini adalah bahwa saya tidak ingin lonjakan "konsumsi saat ini" turun di layar pasangan bengkok. Layar tidak terhubung ke ground pada akhir pengiriman PC. Perlakukan sinyal digital seperti sinyal analog yang berharga untuk mendapatkan kinerja terbaik - selalu singkirkan layar Anda di ujung penerima dan jika Anda harus (karena alasan apa pun) berhenti dengan enggan (juga) di ujung pengirim.

Itu untuk mentransmisikan 128 saluran sinyal analog kecepatan rendah ke kotak keluar dari PC. Saya curiga, bahwa jika perlu, saya dapat mengoperasikan ini pada clock 20MHz.

Andy alias
sumber
Ketika Anda mengatakan "layar", maksud Anda "perisai" saat merujuk ke kabel khusus?
JYelton
1
@JYelton di Inggris itu disebut layar. Anda berada di negara apa?
Andy alias
Saya di usa Salah satu teman terbaik saya adalah orang Inggris, jadi kami sering berdiskusi tentang pilihan kata. :) "Layar" bagi saya adalah layar atau monitor, atau kain jala yang membuat lalat keluar rumah ketika jendela terbuka.
JYelton
@Jelton. Aha kain bertautan yang menjaga barang-barang keluar. Kedengarannya seperti layar bagi saya LOL
Andy alias
Dipilih sebagai jawaban karena itu adalah satu-satunya jawaban di mana 1) dan 2) ditujukan. Meskipun, seperti yang banyak disarankan, jika saya mendesain ulang papan, saya mungkin hanya akan mengubah protokol alih-alih menjadi sinyal diferensial. Saya percaya bahwa ini akan berhasil. Dalam hal ini saya hanya menggunakan SPI karena sudah tersedia di prototipe saya.
Matt
5

SPI tidak berbeda dengan antarmuka listrik lainnya. Perhatikan masalah integritas sinyal yang biasa (perisai, area putaran, impedansi, pemutusan sinyal, dll.) Dan Anda dapat menjalankannya dengan jarak yang masuk akal. Apa jarak yang masuk akal, itu tergantung pada apa yang Anda lakukan dengannya dan seberapa baik Anda dapat mengendalikan berbagai faktor.

Bisakah Anda menjalankannya 3 kaki? Pasti. Seharusnya kamu? Ya, ada hal-hal yang lebih baik untuk digunakan. Seperti yang orang lain tunjukkan, ada RS-4xx yang bisa bekerja dengan baik. Anda juga dapat menjalankan SPI, tetapi gunakan pensinyalan diferensial melalui kabel seperti RS-4xx. Ini akan menghabiskan lebih banyak kabel, tetapi itu adalah jeda. Anda juga dapat melakukan RS-485 normal, menggunakan UART dan sejenisnya.

Saya pribadi telah menjalankan kabel SPI lebih dari 1 kaki, di dalam sasis, dengan kecepatan hingga 32 MHz tanpa masalah. Saya juga menjalankan I2C lebih dari 4 kaki pada 100 KHz di lingkungan EMI yang tinggi dan SPI jauh lebih baik daripada I2C - jadi itu bisa dilakukan. Tetapi jika Anda tidak memperhatikan detailnya maka Anda dapat dengan mudah mengalami masalah. Tapi jujur, Anda perlu memperhatikan detailnya terlepas dari apa yang Anda gunakan.


sumber
Banyak antarmuka seperti RS232 relatif kebal terhadap hal-hal seperti dering dan overshoot, asalkan efek seperti itu yang dihasilkan dari transisi garis diselesaikan dalam waktu setengah. Bahkan jika suatu garis tidak dapat mendukung laju baud yang tinggi, memperlambat laju baud akan membantu. Sebaliknya, jika hal-hal seperti dering menyebabkan masalah dengan SPI pada kecepatan apa pun, memperlambatnya mungkin tidak membantu kecuali seseorang dapat mengurangi kemiringan transisi garis.
supercat
Ini adalah jawaban yang bagus, terutama jumlah sistem yang telah Anda terapkan. Saya pikir saya akan mencoba resistor seri di sisi pengemudi untuk melihat apakah itu membantu. Namun, saya takut bahwa kebisingan menyebabkan jam tambahan ... jadi dalam hal ini mungkin tidak membantu.
Matt
5

Pertimbangkan dengan hati-hati skema landasan Anda. Lindungi garis data, jika itu membantu, dan arde perisai dengan benar. Jangan jalankan data dan jam pada twisted pair yang sama. Gunakan isolasi galvanik jika diperlukan. Selain itu, tidak ada aturan praktis yang saya sadari.

SPI dirancang untuk (1) komunikasi jarak pendek, biasanya dalam satu PCB dan (2) di lingkungan dengan EMI yang tidak banyak. Mungkin, satu-satunya bus yang berkinerja lebih buruk daripada SPI di hadapan EMI adalah I 2 C dan 1-wire. Ada bus, yang dirancang untuk komunikasi jarak jauh di hadapan EMI (RS-485, CAN, Ethernet).

Dimungkinkan untuk memperpanjang dan meningkatkan SPI. Berikut catatan aplikasi , yang menunjukkan bus SPI dengan garis diferensial.

Nick Alexeev
sumber
Saya akan mencoba untuk melindungi garis. Mengenai isolasi galvanik, ketika saya tidak menghubungkan lapangan perangkat budak tidak pernah mencatat jam yang dikirim oleh master.
Matt
1

Ada beberapa cara untuk meminimalkan efek noise pada saluran sinyal Anda. Cara termudah adalah dengan merutekan bidang tembaga atau jejak tembaga yang berdekatan dengan jejak sinyal Anda. Ini meminimalkan induktansi dari jejak dan area loop.

Pada frekuensi tinggi arus balik ingin menjalankan jalur impedansi paling rendah yang berdekatan dengan jalur sinyal itu sendiri. Saya berasumsi bahwa Anda memiliki landasan bersama di antara sirkuit Anda, tetapi ini dapat menyebabkan masalah untuk pensinyalan frekuensi tinggi jika landasan bersama Anda hanyalah "kekuatan" koneksi darat antara sirkuit. Ini akan menyebabkan area loop yang sangat besar untuk arus sinyal yang dapat memungkinkan banyak injeksi noise karena kopling magnetik yang menyimpang.

Jika Anda bisa, sambungkan koneksi ground tambahan antara dasar yang berdekatan dengan jalur sinyal SPI selain menjaga pesawat ground tembaga atau jejak yang diarahkan berdekatan dengan garis di dalam papan juga. Ini mungkin membuat dunia berbeda dalam hal seberapa rentan sirkuit Anda terhadap motor.

Steinar
sumber
Saya tidak mengerti frasa "antara dasar yang berdekatan dengan garis sinyal SPI". Secara khusus, kata yang berdekatan tidak jelas bagi saya.
Matt