Orada kesin I2C pin-out rehberliği var mı? “STANDART” aramıyorum


16

EDIT: Bu birkaç kez tekrarlandı, bu yüzden üstüne koyarak: Evet, I2C cihazlar arası konektörler için "standart" olmadığı iyi bilinir , ancak kesinlikle bu topluluk yapmak için bir "rehberlik" noktaları listesi formüle edebilir sinyal bağlantıları, gürültü minimizasyonu ve yanlış bağlantılar nedeniyle riskin azaltılmasına dayanan bu ara bağlantılar.


NXP , I2C konnektörleri için bir pin-out belirtmeden I2C standardını tanımladı , benim anlayışım. NXP'den gelen tek rehber, Vss / Gnd ara bağlantı üzerinden taşınırsa, SDA ve SCL arasına bir Toprak ve / veya Vss yerleştirilmesinden bahsedilmektedir.

Çeşitli I2C modüllerinin satın alınması bana çeşitli I2C pin çıkışları ve onlar için yapmak zorunda olduğum çeşitli küçük şerit kablo anahtarlama şimlerini takip eden bir görev bıraktı.

Örneğin

  • Mono OLED modülü: SCL, SDA, GND, 5V (saat ve veriler yan yana olduğu için ideal değil.
  • Arduino için Sensör Kalkanı: SDA, SCL, GND, 5V (yine ideal değil, artı anahtarlı SCL / SDA)
  • Renkli LCD modülü: SCL, GND, 5V, SDA (Yay!)
  • No-I2C tekrarlayıcı: SCL, 5V, GND, SDA (ah, güç pimlerini değiştirdiler! Neredeyse büyünün dışarı çıkmasına izin verin.)

Benim sorum şudur : I2C 4 pimli konektör pin-out dizisinin kullanılması için
kesin / yetkili bir kılavuz var mı , hem Vss hem de GND ana bilgisayardan cihaza taşınacak mı?

Bu başarısız olursa, her biri tarafından kabul edilen pin-out'u listeleyen I2C modüllerinin / cihazlarının herhangi bir dizini, ancak eksik mi?

Açıklama: Açıkça mevcut olmayan tanımlı bir standarttan ziyade "Vss'yi SCL'ye yaklaştırın, çünkü ..." gibi yönergeler aramak.


3
Dolayısıyla soru.
Anindo Ghosh

1
Kendi sorunuza göre, standart olmadığını görmek açık ... ve eğer varsa, insanlar bunu takip etmiyor. Şimler yapmakta sıkıştınız. : P
Toby Lawrence

1
@AnindoGhosh heh. Eğer ben olsaydım, muhtemelen önceden satın alınmış modülleri atıp kendi koparma tahtalarımı polarize bir başlık kullanarak standart bir pinout ile yuvarlardım. Muhtemelen 6 pin gibi bir şey, SDA, SCL ve 5V'nin yanında GND ve daha sonra gürültüyü azaltmak ve paraziti reddetmek için her sinyale yakın toprak tutmak için üç bükümlü çiftli bir kablo kullanmak.
Toby Lawrence

3
Bazı insanlar, I2C'nin Arduino kullanıcıları için satılan birçok modül için popüler bir varsayılan bağlantı seçeneği olduğu için rahatsız görünüyor. Hiçbir zaman dış kart konektörü için tasarlanmamış olsa bile, burada satıyor ve yeni cihazlar için konnektörü nasıl daha iyi hale getireceğine dair rehberlik istemek uzmanlar için yararlı değil ve uzmanların bunu sevmemesi mümkün.
Heyecan

1
@ExcitingProjects Hayır, söyledikleri konusunda haklılar, I2C bunun için tasarlanmadı ve interdevice bağlantısında açıkça çeşitli zorluklarla karşı karşıya. Modül tasarımcılarının I2C ile gitmeyi seçtikleri sadece bir olay. Eğer bir seçim olsaydı ben de "rahatsız" olurdu.
Anindo Ghosh

Yanıtlar:


16

Son zamanlarda I2C konektörleri kadar kendimi yuvarladım. Konektörün kendisi çok önemli değil, şu anda sadece 100mil pitch başlığı kullanıyorum (genellikle tahtada dişi, bu yüzden bağlı değilken çok pokey değil), ancak herhangi bir 4plus pin konektörü yapacak. Ayrıca, P82B715 kullanıyorumTI'den bir I2C veri yolu genişleticisi olarak. Bu, insanların söylediği gibi, I2C'nin başlangıçta tasarlanmadığı uzun I2C bırakmalarına neden olan kapasitans sorunlarının üstesinden gelir. Verdiğiniz örneklerde olduğu gibi birçok farklı kombinasyon denedim ve performansta kesinlikle bir fark görmedim. Bunun I2C'nin nispeten yavaş olması nedeniyle SDA ve SCL arasındaki parazitlenmenin pek bir sorun yaratmadığına inanıyorum. Temel olarak veri yolundaki gerilimlerin yükselme süresi (parazit olduğunda), bir bit uzunluğundan çok daha küçüktür. Yani, duymak istediğiniz şey olmayabilir, ancak daha fazla seçenek sunar. Şahsen ben [VCC, SDA, GND, SCL] ile bu çipe kolayca / bu yongadan yönlendirilmek için gittim ve ayrıca geri takıldığında bir VCC / GND karışımına bağışıklık kazandım.


2
+1 + Kabul et. Teşekkürler, muhtemelen şimdiye kadarki en pratik cevap, "interdevice I2C var, işte nasıl kullanıyorum ve neden". VCC / GND karışıklığı önleme faydalıdır. Gemide pokey pin başlıklarından kaçınmanın iyi bir noktası, kazara bazı sensör modüllerinden birkaç pim söktüm.
Anindo Ghosh

Bu sadece gerçekten yararlı olan cevaptır ve eğer yeterince itibarım varsa @Mamuel'e bir bonus vereceğim ve bu soruyu çok sevdim çünkü birçok I2C modülüm var ve bu kılavuzları takip eden bir gün I2C modülleri oluşturacağım.
Heyecan

11

İlk kurulduğunda, I2C (Entegre Devre) veri yolunun sadece tek bir PCB düzeneği üzerindeki yongaları bağlaması amaçlanmıştır. Asla birden fazla kartı birbirine bağlamak için kablolarda kullanılması amaçlanmamıştır ve bu nedenle bu amaçla hiçbir konektör tanımlanmamıştır.

Fark ettiğim tek "standart" I2C tabanlı harici arabirimler, kullanıcı arabirimi aygıtlarını bilgisayarlara bağlamak için kullanılan kısa ömürlü ACCESS.bus ve VGA, DVI ve HDMI konektörleri üzerinden monitör bilgilerini almak için kullanılan VESA Ekran Veri Kanalıdır .


Orijinal amacın farklı olduğunu anlıyorum, ancak I2C şimdi birçok kablo bağlantılı modül için kullanıldığından, birinin çeşitli ürünler tarafından kullanılan pin-out'ları, özellikle de birçok ürün için kullanılan pin-out'ları belgelemek için işbirliğine dayalı bir veritabanına başlamasını umuyorum. Arduino ve diğer mikrodenetleyici pano pazarları.
Anindo Ghosh

4

Standart pin çıkışı yok, standart konektör yok. I2C standardı bu tür şeylere uygun değildir. Cihaz düzeyinde değil veri yolu düzeyinde belirtilir. Örneğin, bir I2C cihazı takmak istediğinizde, standartların pullup'ların ana bilgisayarda mı yoksa cihazda mı olduğunu biliyor musunuz? Hayır. Bilmediğiniz diğer birçok şey de, kablo kapasitelerinizin nerede olduğu, Vcc'nin olması gerektiği gibi ....

Aslında, kesintiler ve diğer düz eski dijital I / O için ekstra hatlara ihtiyaç duyan I2C cihazları bile vardır. Kaç iğneye ihtiyacınız olduğu konusunda anlaşamıyorsanız, bunları standarda nasıl eklersiniz.

Sonuç olarak, ara bağlantılarınızda taşınabilirlik ve kararlılık arıyorsanız, I2C ve SPI bakmanız gereken yerde değildir.


3
Biri kendi cihazını yapmak için bir kılavuz arıyorsa, o 'duino için diğer tüm modüller ile çalışır (ve beğenir)? Orada bir pazar var, görmezden gelinen bir nokta görmüyorum. Bu arada, konakta ve cihazda isteğe bağlı olarak pull-up gereklidir.
Anindo Ghosh

5
Standartlar hakkında "güzel" şey seçim için çok şey var! MIDI, USB, RS232 (o aptal null modem şeylerinin yanı sıra) gibi iyi tanımlanmış bir konnektöre sahip bir standart seçiyorsunuz ve kendi cihazınıza bir çevirmen oluşturuyorsunuz. Diğer seçenek, IEEE gibi bir standart kuruluş aracılığıyla standart bir çalışma grubu oluşturmaktır. Cihazdaki "isteğe bağlı" pullup'lar, tüm veri yolunun davranışını etkiler ve benim açımdan tam anlamıyla. MIDI her cihazı standart olarak optik olarak izole eder, bu nedenle uyumlu cihazlar bu sorunlara neden olmaz
Scott Seidman

1
Standartlar hakkında komik ama çok gerçek nokta için +1! :-)
Anindo Ghosh

4

Birçok kişi I²C sinyallerini ve iki PCB arasındaki gücü taşımak için bir çeşit konektör kullanır. Örneğin,

I²C sinyallerini daha uzun mesafelerde taşımak için bazı genel ipuçları:

ps: Vikipedi: I²C Devre arabağlantısının bu soruya bağlandığını görüyorum .


3

I²C pinout veya konektör standardı olmasa da, standartlaştırılmış I²C'nin kullanıldığı birkaç yer vardır. Akla gelen bazıları bellek modülleri (DIMM, SO-DIMM), video konektörleri ( DDC içinde DVI , VGA ) ve SM-Bus (evet, bir şey gibi onların web sayfası görünüyor orta-90s yapılan bir çocuk). Özellikle, SM-bus konektörü anahtarlıdır ve yalnızca I²C ve güç içerir, ancak SM-Bus ek kısıtlamalar koyar, bu nedenle teknik olarak her I²C cihazı gerçek bir SM-Bus'a bağlanmamalıdır. Lego NXT sensörleri gibi birkaç tescilli fiş de var.


Bu bir standart olmadığı göz önüne alındığında ... Umduğum şey, cihaz tasarımcılarının takip edebileceği kuralların kanonik bir koleksiyonudur. Örneğin, SMBus'un dışında + 5V hattı bulunurken, NXP hem + V hem de GND'nin sinyal izleri arasında olmasını önerir. Hangi yol daha iyi ve neden?
Anindo Ghosh

2

Standart yok.

Ortak bir uygulama yoktur.

Kendinize ne yapacağınıza karar verme konularında:

  1. Sinyalleri, ilk başta olması gerektiği gibi bir kartta tutun. IIC hatları oldukça yüksek empedansa sahiptir, tek uçludur ve bu nedenle gürültüye duyarlıdır ve iletim hatlarını iyi sonlandırmaz. IIC tek başına gitmek anlamına gelmez.

  2. Zaten gemiden inecekseniz, otobüsü kısa tutun. Birkaç inç muhtemelen tamam. Bir metre veya daha fazlası gerçekten sorun istiyor.

  3. Pano hatlarını gürültü kaynaklarından uzak tutun. Örneğin, onları bir motorun etrafına sarmayın, hatta bir motorun yanına gitmeye çalışmayın.

  4. Arkaya bağlanamayan bir konektör kullanın. Birisi arkaya takabilirse, biri takacaktır.

  5. Şerit kablo muhtemelen kullanımı en kolay olanıdır. Minimum üç kabloya ihtiyacınız var: SCL, SDA ve toprak. Güç eklemek muhtemelen iyi bir fikirdir. Her durumda, çapraz konuşmayı önlemek için topraklama kablosunun SCL ile SDA arasında olduğundan emin olun. Güç kablosu gürültülü olmamalıdır, bu yüzden bir tarafa yapıştırın, hangisi olduğu önemli değil.

  6. Konektörlerle uğraştıktan ve potansiyel sorunları kovaladıktan sonra, 1. noktanın aslında bilmeniz gereken tek şey olduğunu anlayın.


Yani arduino ve diğer mikrodenetleyicilerin yeni başlayanlar için insanların yaptıkları ve sattıkları yüzlerce I2C şeyi için kuma koymalıyız?
Heyecan

1

Bir şeyin neden standartlaştırıldığını soran herhangi bir yazı için her zamanki gibi:
Neyse ki, şarj etme işlemi artık hepimiz mini-USB'de standart hale getirildi.  [Yoksa mikro USB mi?  Bok.
XKCD'den


Belki de soruyu daha dikkatli bir şekilde okuduysanız veya birçok yorum dizisi, bunun aranan bir standart olmadığını, kanonik kurallar biçiminde bir bilgelik koleksiyonu olduğunu fark etmiş olabilirsiniz .
Anindo Ghosh

1
@AnindoGhosh - Bunun nasıl bir fark yarattığını görmüyorum. Yukarıdaki çizgi romandaki standardı kılavuzla değiştirirseniz, aynı derecede geçerlidir. Bir şey yapmanın birden çok yolunun olduğu herhangi bir durum genellikle birçok insanın bu şeyi birçok şekilde yapmasına neden olur. Resmi bir "standart" olmasa bile.
Connor Wolf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.