EDIT: Ini telah diulang beberapa kali, jadi letakkan di atas: Ya, sudah diketahui bahwa tidak ada "standar" untuk konektor antar-perangkat I2C, tetapi tentunya komunitas ini dapat merumuskan daftar "petunjuk" poin untuk membuat interkoneksi semacam itu, berdasarkan pada perilaku sinyal, minimisasi kebisingan, dan mitigasi risiko karena koneksi yang salah.
NXP mendefinisikan standar I2C tanpa menentukan pin-out untuk konektor I2C, adalah pemahaman saya. Satu-satunya pedoman dari NXP tampaknya adalah menyebutkan penempatan Ground dan / atau Vss antara SDA dan SCL jika Vss / Gnd dilakukan melintasi interkoneksi.
Pembelian berbagai modul I2C telah meninggalkan saya dengan berbagai pin-out I2C, dan sedikit tugas melacak berbagai shim kabel-pita kecil yang harus saya buat untuk mereka.
misalnya
- Modul Mono OLED: SCL, SDA, GND, 5V (jelas tidak ideal, karena jam dan data bersebelahan).
- Sensor Shield untuk Arduino: SDA, SCL, GND, 5V (sekali lagi tidak ideal, plus SCL / SDA yang diaktifkan)
- Modul LCD Berwarna: SCL, GND, 5V, SDA (Yay!)
- Repeater I2C tanpa nama: SCL, 5V, GND, SDA (aduh, mereka mengganti pin power! Hampir membiarkan sihirnya keluar.)
Jadi pertanyaan saya adalah ini :
Apakah ada pedoman definitif / otoritatif untuk urutan pin-out konektor I2C 4-pin untuk digunakan, di mana baik Vss dan GND harus dibawa dari host ke perangkat?
Gagal ini, apakah ada direktori, namun tidak lengkap, modul I2C / perangkat daftar pin-out masing-masing telah diadopsi?
Klarifikasi: Mencari pedoman seperti "menempatkan Vss lebih dekat ke SCL karena ..." daripada standar yang ditetapkan yang jelas tidak ada.
sumber
Jawaban:
Saya baru-baru ini menggulung saya sendiri sejauh konektor I2C pergi. Konektor itu sendiri tidak terlalu penting, saat ini saya hanya menggunakan header 100mil pitch (biasanya perempuan di papan sehingga tidak terlalu muslihat ketika tidak terhubung), tetapi setiap konektor pin 4plus akan dilakukan. Selain itu, saya menggunakan P82B715dari TI sebagai extender bus I2C. Ini mengatasi masalah kapasitansi yang terkait dengan menjalankan I2C jauh dari papan, yang seperti yang orang katakan, I2C tidak dimaksudkan untuk awalnya. Saya memang mencoba banyak kombinasi berbeda, seperti pada contoh yang Anda berikan dan saya perhatikan sama sekali tidak ada perbedaan dalam kinerja. Saya percaya ini karena I2C relatif lambat, gangguan antara SDA dan SCL tidak banyak masalah. Pada dasarnya waktu naik untuk voltase (ketika interferensi akan terjadi) pada bus jauh lebih kecil daripada panjang bit. Jadi, itu mungkin bukan yang ingin Anda dengar, tetapi itu memang memberi lebih banyak pilihan. Secara pribadi saya menggunakan [VCC, SDA, GND, SCL] agar mudah dialihkan ke / dari chip ini dan juga kebal terhadap campuran VCC / GND ketika dicolokkan ke belakang.
sumber
Ketika pertama kali didirikan, bus I2C (Inter-Integrated Circuit) hanya dimaksudkan untuk menghubungkan chip pada rakitan PCB tunggal. Itu tidak pernah dimaksudkan untuk digunakan pada kabel untuk menghubungkan beberapa papan bersama-sama, dan oleh karena itu, tidak ada konektor untuk tujuan itu yang ditentukan.
Satu-satunya antarmuka eksternal berbasis "standar" yang saya ketahui adalah ACCESS.bus yang berumur pendek untuk menghubungkan perangkat antarmuka pengguna ke komputer dan Saluran Data Display VESA yang digunakan untuk mengambil informasi monitor melalui konektor VGA, DVI, dan HDMI.
sumber
Tidak ada pin-out standar, tidak ada konektor standar. Standar I2C tidak bisa menerima hal semacam ini. Ini ditentukan pada level bus, bukan level perangkat. Misalnya, ketika Anda ingin mencolokkan perangkat I2C, apakah Anda tahu menurut standar apakah pullup ada di host atau di perangkat ?? Tidak. Banyak hal lain yang tidak Anda ketahui, seperti di mana kapasitansi kabel Anda, apa Vcc perlu ....
Bahkan, bahkan ada perangkat I2C yang membutuhkan saluran tambahan untuk interupsi dan I / O digital lama lainnya. Bagaimana Anda menambahkannya ke standar, jika Anda tidak bisa mendapatkan persetujuan tentang berapa pin yang Anda butuhkan.
Intinya, jika Anda mencari portabilitas dan stabilitas di interkoneksi Anda, I2C dan SPI tidak perlu Anda perhatikan.
sumber
Banyak orang menggunakan semacam konektor untuk membawa sinyal dan daya I²C antara dua PCB. Sebagai contoh,
Beberapa tips umum untuk membawa sinyal I²C jarak jauh:
ps: Saya melihat bahwa interkoneksi Sirkuit Wikipedia: I²C telah dikaitkan dengan pertanyaan ini.
sumber
Meskipun tidak ada standar pinout atau konektor I²C, ada beberapa tempat yang digunakan standar I²C. Beberapa yang muncul dalam pikiran adalah modul memori (DIMM, SO-DIMM), konektor video ( DDC dalam DVI , VGA ) dan SM-Bus (ya, halaman web mereka terlihat seperti sesuatu yang dibuat anak-anak di pertengahan tahun 90-an). Secara khusus, konektor SM-bus dikunci dan hanya berisi I²C dan daya, tetapi SM-Bus menempatkan batasan tambahan sehingga secara teknis tidak setiap perangkat I²C harus terhubung ke SM-Bus yang sebenarnya. Beberapa colokan eksklusif juga ada, seperti sensor Lego NXT.
sumber
Tidak ada standar.
Tidak ada praktik umum.
Adapun masalah untuk memutuskan sendiri apa yang harus dilakukan:
sumber
Seperti biasa untuk setiap posting yang menanyakan mengapa ada sesuatu yang [standar]:
Dari XKCD
sumber