Apakah ada panduan pin-out I2C definitif di luar sana? Tidak mencari "STANDAR"

16

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.

Anindo Ghosh
sumber
3
Karena itu pertanyaannya.
Anindo Ghosh
1
Dengan pertanyaan Anda sendiri, jelas untuk melihat tidak ada standar ... dan jika ada, jelas orang tidak mengikutinya. Anda terjebak membuat shims. : P
Toby Lawrence
1
@AnindoGhosh heh. Jika itu saya, saya mungkin akan membuang modul yang sudah dibeli sebelumnya dan melempar papan breakout saya sendiri dengan pinout standar menggunakan header terpolarisasi. Mungkin sekitar 6 pin, dengan GND di sebelah SDA, SCL dan 5V ... dan kemudian menggunakan kabel dengan tiga pasangan bengkok untuk menjaga tanah di dekat setiap sinyal untuk membantu mengurangi kebisingan dan menolak gangguan.
Toby Lawrence
3
Tampaknya beberapa orang tersinggung bahwa I2C adalah pilihan koneksi default yang populer untuk banyak modul yang dijual untuk pengguna Arduino. Bahkan jika itu tidak pernah dirancang untuk konektor papan luar itu ada di sini dan itu menjual dan meminta panduan tentang cara yang lebih baik untuk membuat konektor untuk perangkat baru berguna bagi kita bukan ahli dan mungkin para ahli tidak suka ini.
Proyek Menyenangkan
1
@ExcitingProjects Tidak, mereka benar tentang apa yang mereka katakan, I2C tidak dimaksudkan untuk ini, dan jelas menghadapi beberapa tantangan dalam koneksi antarperangkat. Ini hanya kebetulan bahwa perancang modul telah memilih untuk pergi dengan I2C. Saya akan "tersinggung" juga jika saya punya pilihan.
Anindo Ghosh

Jawaban:

16

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.

Samuel
sumber
2
+1 + Terima. Terima kasih, mungkin jawaban yang paling bisa dipraktikkan sejauh ini, "Ide interdevice ada, inilah cara saya menggunakannya dan mengapa". Penghindaran campur-campur VCC / GND berguna. Poin bagus untuk menghindari header pin muslihat di papan, saya telah merobek beberapa pin dari beberapa modul sensor secara tidak sengaja.
Anindo Ghosh
Ini hanya jawaban yang sangat membantu dan dan jika saya memiliki reputasi yang cukup saya akan memberikan bonus kepada @Samuel untuk itu dan saya menyukai pertanyaan ini karena saya memiliki banyak modul I2C dan akan membangun modul I2C suatu hari setelah mengikuti panduan ini.
Proyek yang Menyenangkan
11

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.

Dave Tweed
sumber
Saya mengerti tujuan awalnya berbeda, tetapi karena I2C sedang digunakan untuk banyak modul yang terhubung dengan kabel sekarang, saya berharap seseorang telah memulai database kolaboratif untuk mendokumentasikan pin-out yang digunakan oleh berbagai produk, khususnya banyak produk yang melayani pasar papan Arduino dan mikrokontroler lainnya.
Anindo Ghosh
4

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.

Scott Seidman
sumber
3
Bagaimana jika seseorang mencari pedoman untuk membuat perangkat sendiri, yang akan bekerja dengan (dan suka) semua modul lain di luar sana untuk 'duino? Ada pasar di sana, jangan melihat titik mengabaikannya. Kebetulan, pull-up diperlukan di host dan opsional di perangkat, sesuai spesifikasi.
Anindo Ghosh
5
"Bagus" tentang standar adalah bahwa ada begitu banyak untuk dipilih! Anda memilih standar dengan konektor yang terdefinisi dengan baik, seperti MIDI, USB, RS232 (selain dari hal-hal modem nol bodoh itu), dan membangun penerjemah ke perangkat Anda sendiri. Opsi lainnya adalah membentuk workgroup standar melalui org standar, seperti IEEE. Penarikan "opsional" pada perangkat berdampak pada perilaku seluruh bus, membuat poin saya tepat. MIDI secara optikal mengisolasi setiap perangkat dengan standar, sehingga perangkat yang patuh tidak menyebabkan masalah ini
Scott Seidman
1
+1 untuk poin lucu-tapi-begitu-benar tentang standar! :-)
Anindo Ghosh
4

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.

davidcary
sumber
3

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.

Yann Vernier
sumber
Ini diberikan bahwa tidak ada standar ... Apa yang saya harapkan adalah kumpulan pedoman kanonik, yang kemudian dapat diikuti oleh perancang perangkat. SMBus, misalnya, memiliki garis + 5V di luar, sementara NXP merekomendasikan kedua + V dan GND untuk berada di antara jejak sinyal. Jalan mana yang lebih baik, dan mengapa?
Anindo Ghosh
2

Tidak ada standar.

Tidak ada praktik umum.

Adapun masalah untuk memutuskan sendiri apa yang harus dilakukan:

  1. Simpan sinyal di satu papan seperti yang seharusnya ada di tempat pertama. Saluran IIC memiliki impedansi yang cukup tinggi, memiliki satu ujung, dan karenanya rentan terhadap kebisingan dan tidak akan memutus saluran transmisi dengan baik. IIC tidak dimaksudkan untuk keluar dari papan.

  2. Jika Anda akan pergi dari papan, tetap bus pendek. Beberapa inci mungkin tidak apa-apa. Satu meter atau lebih benar-benar meminta masalah.

  3. Jauhkan dari jalur papan dari sumber kebisingan. Jangan membungkusnya dengan motor, misalnya, atau bahkan mencoba mendekatinya.

  4. Gunakan konektor yang tidak dapat dihubungkan ke belakang. Jika seseorang dapat memasangnya kembali, seseorang akan melakukannya.

  5. Kabel pita mungkin yang paling mudah digunakan. Anda membutuhkan tiga kabel minimum, SCL, SDA, dan ground. Menambahkan kekuatan mungkin merupakan ide yang bagus. Bagaimanapun, pastikan kabel arde antara SCL dan SDA untuk menghindari crosstalk. Kabel listrik tidak boleh berisik, jadi letakkan di satu sisi, tidak masalah yang mana.

  6. Setelah bermain-main dengan konektor dan mengejar masalah potensial, sadari bahwa poin 1 sebenarnya adalah satu-satunya yang perlu Anda ketahui.

Olin Lathrop
sumber
Jadi kita harus meletakkan kepala di pasir untuk semua ratusan barang I2C yang dibuat dan dijual untuk pemula arduino dan mikrokontroler lainnya?
Proyek Menyenangkan
1

Seperti biasa untuk setiap posting yang menanyakan mengapa ada sesuatu yang [standar]:
Untungnya, pengisian daya telah terpecahkan sekarang karena kita semua telah distandarisasi pada mini-USB.  [Atau apakah itu micro-USB?  Kotoran.
Dari XKCD

Connor Wolf
sumber
Mungkin jika Anda telah membaca pertanyaan lebih hati-hati, atau banyak utas komentar, Anda mungkin telah memperhatikan bahwa itu bukan standar yang dicari tetapi kumpulan kebijaksanaan dalam bentuk pedoman kanonik.
Anindo Ghosh
1
@AnindoGhosh - Saya tidak mengerti bagaimana itu membuat perbedaan. Jika Anda mengganti standar dengan pedoman dalam komik di atas, itu sama-sama valid. Setiap situasi di mana ada banyak cara untuk melakukan sesuatu umumnya menghasilkan banyak orang melakukan hal tersebut dengan banyak cara. Bahkan jika itu bukan "standar" formal.
Connor Wolf