Saya mengerti bahwa dalam jalur I2C, SCL dan SDA menggunakan resistor pull-up dan driver pin adalah perangkat NPN kolektor terbuka yang dapat mendorong pin ke ground. Ini memberi I2C keuntungan bahwa bus yang sama sekarang dapat dibagi dengan banyak budak, dan bahkan jika dua atau lebih budak secara tidak sengaja mencoba mengemudikan bus pada saat yang sama bus itu tidak akan menyebabkan kerusakan pada sistem.
Tetapi ini juga dapat dilakukan dengan menggunakan driver drain terbuka PNP dan resistor pull-down pada jalur SDA dan SCL. Hal-hal seperti peregangan jam dan arbitrase multi-master dapat dicapai dengan ini juga.
Apakah implementasi protokol I2C saat ini memberikan manfaat dibandingkan implementasi alternatif yang disarankan di atas?
Jawaban:
Secara elektrik masuk akal karena ground adalah koneksi yang umum untuk semua perangkat di bus IIC. Itu jauh lebih sedikit pembatasan daripada memaksa daya untuk menjadi koneksi umum ke semua perangkat IIC, seperti yang akan diperlukan jika saluran didorong tinggi dan melayang rendah melalui pulldown.
Perhatikan bahwa perangkat IIC tidak semua perlu diaktifkan dari jaring yang sama atau tegangan yang sama. Ini tidak akan benar jika kedua jalur bus harus didorong ke tegangan daya tunggal yang sama.
sumber
Di masa lalu yang baik, driver TTL jauh lebih baik dalam menarik sinyal ke bawah daripada menariknya ke atas. Oleh karena itu, protokol seperti I2C, tetapi juga garis interupsi, reset, dan lainnya, semuanya diimplementasikan menggunakan pull-up dengan distribusi pull-down.
sumber
Lebih mudah untuk menggunakan ground sebagai referensi umum di antara subsistem yang mungkin memiliki voltase pasokan yang bervariasi. Jika Anda menggunakan transistor PNP untuk menarik tegangan suplai, semua subsistem harus terhubung ke suplai yang sama.
sumber
Banyak jawaban bagus di sini, tetapi ada juga alasan lain.
Jika keadaan diam bis di darat, tidak ada cara untuk mengetahui apakah bus terhubung atau hanya menggantung di luar angkasa.
Normal untuk pull-up ditempatkan di perangkat master. Budak biasanya tidak memiliki pull-up. Ini karena arus pull-down yang diperlukan untuk menyatakan level rendah akan meningkat dengan jumlah perangkat yang terhubung ke bus.
Seorang budak, ketika dicolokkan ke dalam bus, kemudian dapat mendeteksi bahwa kabelnya ditarik terlalu tinggi (dengan asumsi itu tidak digunakan) dan tahu bahwa bus itu benar-benar ada dan sunyi. Itu tidak akan menjadi kasus dengan bus bias tanah.
sumber
Jika saya memahami pertanyaan dengan benar, satu aspek adalah:
Pertama-tama Anda harus mencatat bahwa Anda tidak menggunakan transistor bipolar (NPN, PNP) tetapi MOSFET (yang ada dalam empat varian berbeda).
Perangkat yang menggunakan varian " pull-up dan NPN " menggunakan MOSFET perangkat tambahan n-channel . Karena sumber MOSFET ini terhubung ke ground tegangan gerbang-sumber (mengendalikan aliran arus) sama dengan tegangan antara gerbang dan ground. Jadi MOSFET dapat dikontrol menggunakan tegangan antara 0 dan Vdd.
Akan ada tiga kemungkinan untuk menerapkan varian " pull-down dan PNP ":
Menggunakan MOSFET peningkatan p-channel
Pada MOSFET saluran-NMOS atau CMOS IC dengan karakteristik yang sebanding (resistansi, dll.) Memerlukan lebih banyak ruang daripada MOSFET n-saluran.
Dalam ruang mikroelektronika adalah uang sehingga saluran MOSFET dihindari jika memungkinkan.
Menggunakan MOSFET perangkat tambahan n-channel
Ini akan membutuhkan output dari rangkaian logika yang menggerakkan transistor untuk memiliki tegangan "RENDAH" dari tegangan suplai (mis. + 5V) dan tegangan "TINGGI" di atas tegangan suplai (mis. + 10V ketika sisa rangkaian disuplai dengan + 5V).
Alasannya: Tegangan sumber-tanah akan menjadi Vdd ketika MOSFET sedang melakukan. Tegangan sumber gerbang harus positif sehingga tegangan antara gerbang dan tanah harus lebih tinggi.
Anda akan membutuhkan dua suplai tegangan - dan sebuah sirkuit menggeser output dari rangkaian logika dari 0 ... + 5V ke + 5V ... + 10V ...
Menggunakan MOSFET penipisan saluran-n
Sayangnya saya tidak bisa memberi tahu Anda banyak tentang solusi ini. Namun saya menemukan beberapa halaman menggunakan Google mengatakan bahwa penipisan MOSFET lebih sulit untuk diproduksi daripada peningkatan MOSFET dan mereka dihindari karena alasan ini.
Saya tahu dari elektronika daya (bukan mikroelektronika) bahwa varian "dua catu daya" yang dijelaskan di atas bahkan lebih disukai daripada MOSFET yang menipis. (Tapi aku tidak bisa memberitahumu alasannya.)
EDIT Menggunakan n-channel deplesi MOSFET Anda mungkin perlu tegangan negatif (misalnya -5V) sehingga Anda juga akan membutuhkan dua tegangan suplai ...
sumber
Ada juga satu lagi manfaat tambahan untuk memiliki jalur data ground-up dan pull-up yang sama (lebih dari memiliki VCC umum dan pull-down):
Bahkan jika niat awalnya adalah untuk menghubungkan perangkat pada PCB yang sama pada rentang beberapa inci saja, itu sudah cukup berhasil jadi sekarang tidak jarang memiliki garis panjang beberapa kaki dan menghubungkan "perangkat" yang bisa berupa komputer atau sesuatu yang setara kompleksitasnya, dengan beberapa perangkat memiliki sumber dayanya sendiri (dengan kualitas yang berbeda, katakan Anda menghubungkan sesuatu yang dihubungkan dengan sesuatu yang bertenaga baterai). Lebih baik, jika koneksi berfungsi "setidaknya baik" bahkan dalam kondisi yang tidak ideal dan di luar spesifikasi.
Dan banyak dari perangkat yang terhubung semacam itu entah bagaimana dapat terhubung juga dengan cara lain, maka hanya komunikasi I2C. Biasanya ketika menghubungkan perangkat bersama-sama Anda menghubungkannya dengan
common ground
- kadang-kadang sebagai bagian dari fungsi lain, kadang-kadang hanya karena dipasang pada casing logam dan perangkat terhubung ke tanah dengan casing juga (atau dengan pendingin umum atau sesuatu seperti itu) atau mungkin ada dilindungi kabel dengan grounded shielded di dalamnya - yang juga menghubungkan tanah.Jika Anda juga secara langsung menghubungkan saluran listrik (VCC) dari perangkat tersebut, Anda akan mendapatkan masalah ketika saluran tersebut akan berada pada tegangan yang berbeda secara alami (tentu saja, bisa dikatakan 5V di sana-sini, tetapi tergantung pada konstruksi dan toleransi sebagian dari sumber daya itu). bisa juga 4.9V atau 5.2V atau bahkan berubah, jika bertenaga baterai dan kadang-kadang menjalankan beberapa motor, membuat daya turun dan naik seiring waktu).
Dalam kasus seperti itu, ada hubungan arus pendek yang efektif antara sumber-sumber daya bagian a Volt dan tergantung pada sumbernya (dan ketahanan cara-cara) di sana dapat mengalir arus yang relatif tinggi yang tidak hanya menghasilkan pemborosan energi dan panas, tetapi mungkin bahkan dalam merusak ( atau memperpendek umur) dari beberapa sumber tersebut. Itu tidak baik.
Memiliki kesamaan ground dan pull-up menghindari masalah seperti itu - ground adalah ground dan resistor pullup hanya memungkinkan arus silang yang sangat kecil bahkan jika VCC jauh berbeda dari perangkat.
sumber
Anda tidak perlu mengirim begitu banyak daya melalui chip, jika itu menarik.
Karena chip tidak menggerakkan apa pun, itu hanya membuat pendek untuk membawa bus ke 0, dan melakukan buka untuk membawanya ke 1.
Jika itu ditarik ke bawah, Anda harus mengirim daya melalui chip untuk mendorong bus ke 1. Jika bus kebetulan pendek, itu mungkin banyak daya yang Anda kendarai melalui chip itu untuk mencoba mendorongnya hingga 1.
Penafian: Saya seorang EE yang cukup buruk pada saat ini.
sumber