Terminasi SPI dan resistor pull-up

12

Mikrokontroler saya (seri ATMEL) perlu berkomunikasi dengan perangkat budak menggunakan protokol SPI. Saya sedang merancang perangkat keras. Kecepatan bus SPI maksimum adalah 1 MHz. Jarak antara master dan slave kurang dari 50mm.

T1) Apakah saya perlu menambahkan terminasi secara seri pada bus SPI untuk menghindari refleksi pada kecepatan SPI ini (1MHz)? Jika demikian, bagaimana saya harus menghitung nilainya dan di mana saya harus meletakkan resistor terminasi - dekat master atau dekat slave?

Q2) Saya telah melihat desain referensi lain di mana kadang-kadang orang menggunakan resistor pull-up pada semua sinyal SPI, kadang-kadang hanya pada beberapa sinyal (CS atau MISO) dan kadang-kadang tidak ada. Apakah kita memerlukan resistor pull-up pada sinyal SPI (karena port SPI adalah konfigurasi push-pull)? Satu-satunya pin waktu akan mengambang adalah sampai mikrokontroler mendapatkan kekuatannya dan dapat mengatur pin sebagai output. Jadi haruskah saya menggunakan resistor pull-up atau apa yang akan terjadi jika saya tidak menggunakan resistor pull-up dalam desain saya?

Bharav
sumber

Jawaban:

20
  1. Pada 1 MHz dan 50 mm (2 inci) Anda tidak perlu pengakhiran. Anda memiliki sinyal digital on-board biasa, dan bahkan tidak terlalu cepat.
  2. Anda tidak perlu pullup atau pull-down pada saluran SPI. Saat digunakan, garis SPI selalu didorong secara eksplisit kedua arah. Namun, bisa baik untuk meletakkan pull-down (atau pullup) pada jalur MISO. Itu karena baris ini hanya dikendarai oleh seorang budak ketika itu jalur pilih budak dinyatakan. Ketika bus tidak digunakan, semua jalur pilih budak biasanya tidak dikonfirmasi, jadi MISO mengapung. Nilai data sewenang-wenang tidak relevan karena tidak ada yang melihat nilainya kecuali jika seorang budak dipilih, tetapi tegangan menengah pada saluran ini dapat menyebabkan penerima di master menarik arus berlebih atau mungkin berosilasi. Saya biasanya meletakkan pulldown 100 kΩ pada MISO karena alasan ini. Menjaga garis tetap rendah tanpa membahayakan saat tidak digunakan. Anda bisa menggunakan pullup, selama semua budak tetap bertenaga bahkan saat tidak digunakan.
Olin Lathrop
sumber
3
Salah satu alasan penting untuk melakukan penarikan pada pin CS / SS adalah untuk memastikan bahwa semua budak tetap tidak terpilih ketika master di reset atau memulai. Dalam hal ini, pin-pinnya biasanya hi-Z dan dengan demikian mengambang, yang dapat menyebabkan banyak budak dipilih dan mengemudikan bus MISO (menghasilkan sirkuit pendek). Mungkin ini akan menjadi tambahan yang berguna untuk jawaban ini?
Matthijs Kooijman