Cara menangani beberapa resistor pull-up pada modul

9

Saya sedang berpikir tentang melakukan modul untuk papan pengembangan yang saya lakukan beberapa hari yang lalu yang akan mencakup antarmuka spi / i2c.

Masalahnya adalah saya tidak memasukkan resistor pull-up di pin MCU di papan utama dan berpikir untuk menambahkannya di modul untuk membuatnya lebih "generik" sehingga setiap pengguna dapat menggunakannya tanpa perlu menambahkan resistor tambahan di papan prototipe.

Tapi kemudian saya menghadapi masalah berikutnya. Jika saya menambahkan pull-up resistos di modul tambahan dan saya menghubungkan misalnya dua atau lebih modul ke bus yang sama saya akan mendapatkan resistor secara paralel sehingga hambatan akan turun dan tidak akan mencapai fungsinya.

Tetapi jika saya menambahkan resistor pull-up ke papan utama saya akan memiliki pin di MCU selalu aktif rendah.

Jadi pertanyaan utamanya adalah:

Bagaimana agar beberapa modul terhubung ke bus yang sama dengan masing-masing memiliki resistor pull-up tetapi tidak membuatnya paralel ketika Anda memiliki lebih dari satu modul? Apakah itu mungkin?

Atau solusi terbaik di sini adalah mengaktifkan resistor pullup di MCU dan tidak memasukkannya dalam modul?

Terima kasih.-

Oksigen Sein
sumber
Buat modul terpisah yang hanya akan berisi resistor pull-up :)
Alexandr Zarubkin

Jawaban:

14

Saya akan berasumsi bahwa panjang total masing-masing bus Anda di bawah 1 meter, yang khas untuk dataran I 2 C dan SPI. Juga, kapasitansi bus berada dalam spesifikasi.

Seharusnya hanya ada satu (1) set resistor pull-up. Hasilnya, tempat terbaik bagi mereka adalah di papan pengontrol utama. Jangan letakkan pull-up pada modul.

Jika Anda ingin memiliki pull-up dalam beberapa kasus dan tidak memilikinya dalam kasus lain.

  • Jangan mengisi resistor pull-up, ketika Anda tidak membutuhkannya.
  • Desain papan pengontrol utama sedemikian rupa sehingga pull-up terhubung ke saluran sinyal melalui jumper. Hapus blok korslet, ketika Anda tidak perlu pull-up.

sunting: Terus terang, saya pikir itu adalah kesalahan yang Sparkfun menempatkan pull-up pada modul slave I 2 C. Sayangnya, tidak semua orang yang membeli modul menyadari bahwa pull-up yang berlebihan dapat menjadi masalah. Akan lebih baik jika papan pengontrol (bukan papan periferal slave) memiliki pull-up dengan jumper solder. Oh ... Tunggu ... Arduino tidak membawa pull-up (opsional) (walaupun mungkin harus). Jadi, mari kita mulai di mana-mana. Pengalaman awal out-of-the-box yang lebih mudah. Tetapi tambahkan beberapa modul slave dan bus akan berhenti bekerja.

pembaruan (Mei 2015):
- Diskusi terkait dalam komentar di utas lain.
- Dalam modul terbaru mereka, SparkFun mulai menambahkan jumper gumpalan solder antara Vcc dan resistor pull-up I 2 C ( contoh ). Itu memungkinkan untuk memutuskan sambungan pull-up dengan lebih mudah.

update (Des 2015):
Pertanyaan serupa tentang pemecahan masalah I 2 C dengan beberapa modul terus bermunculan di papan pesan. Mencoba tanggapan umum yang diperluas.

Nick Alexeev
sumber
Ya sebenarnya kasus saya misalnya. Sebagai contoh, semua modul rtc yang dijual di beberapa toko termasuk resup pullup jadi ... bagaimana menangani modul-modul tersebut dalam kasus itu. Itulah mengapa saya memberi tanda tebal pada pertanyaan utama. :)
Sein Oxygen
1
@SeinOxygen Jika Anda memiliki modul dengan resistor pull-up, ditambah controller dengan pull-up sendiri, maka semua resistor ini akan muncul secara paralel dan menghadirkan pull-up yang lebih kaku (resistansi lebih kecil). Misalkan, Anda memiliki total resistor 3x (tiga) 2.2kΩ sebagai pull-up. Total resistensi pull-up adalah 733Ω. Itu melanggar spesifikasi I2C. Apa yang harus dilakukan? Hapus pull-up tambahan dari modul (mungkin, mereka seharusnya tidak ada di tempat pertama).
Nick Alexeev
@SeinOxygen Lebih lanjut tentang nilai pull-up I2C di utas ini .
Nick Alexeev
4

Salah satu opsi adalah menggunakan paket resistor SIL atau DIL, dan memasangnya dalam soket pada setiap modul. Saat membangun sistem dengan banyak modul, tarik keluar dari setiap modul kecuali yang terakhir. Ini menghemat ruang papan kecil di atas jumper.

Variasi pada tema ini dapat mencakup sakelar FET untuk menghubungkan atau melepaskan resistor, dikontrol oleh satu jumper, atau pin cadangan pada konektor (sehingga jika modul lain dicolokkan, resistor secara otomatis terputus)

Brian Drummond
sumber