I2C uzun mesafelerde kullanılmak üzere tasarlanmamıştır, ancak gerçekte yaklaşık 2 metrelik bir mesafede kullanıldığı çeşitli uygulamaları biliyorum. Ayrıca bununla ilgili sorunları olan bir vakayı da biliyorum ve nihayetinde inanıyorum ki yer döngülerine karar verdim.
Bunun çalışacağından emin olmak için, P82B715 gibi bir I2C veri yolu genişletici kullanmalısınız.
Bununla birlikte, PB2B715'in veri sayfası bölüm 8.2'de aşağıdakileri söylemektedir:
Telefon veya Ethernet (Cat5e) kablolarında kullanılan tipik bükülmüş çift veya düz kablolar için, bu kapasitans yaklaşık 50 pF ila 70 pF / metre civarındadır, böylece kablo teorik olarak 50 m uzunluğa kadar olabilir . Pratik deneyime göre, 30 m, gösterilen değerler ile 100 kHz'e kadar bu basit şekilde sürülecek güvenli bir kablo uzunluğu kanıtlamıştır . Daha uzun mesafeler ve daha yüksek hızlar mümkündür ancak daha dikkatli tasarım gerektirir.
Bu yüzden uzmanlar (NXP, I2C'nin mucidi olan eski Philips'tir), 30 metrelik bir mesafe olduğunu kanıtladı. Tecrübelerim 2 metrelik bir mesafe olduğunu söylüyor ve bana bildirilen deneyimler, herhangi bir genişleticisiz daha ağır yüklü I2C otobüslerinin de mümkün olduğunu gösteriyor.
Uzun mesafelerde çalışan I2C veri yollarının kilit noktaları:
- Düşük kapasitans kablosu kullanarak (bükümlü çift / Ethernet);
- Veri yolu hızını sınırlamak;
- Doğru boyutta pull-up'lar olması.
Pullup hesaplama
Texas Instruments, pull-up hesaplaması hakkında iyi bir uygulama notuna (SLVA689) sahiptir .
- Çekme işleminin alt sınırı (minimum değer), veri yolu üzerindeki en zayıf çevresel akım ve herhangi bir çevre birim için 0'ı temsil eden maksimum voltaj tarafından belirlenir. Eğer 1V hala 0 ise, VCC'niz maksimum 3V6'dır ve en zayıf cihazınız sadece 20mA çekebilir, direnciniz direnç üzerindeki voltaj kaybı ve o cihazın çektiği akım tarafından belirlenir: (3.6 V−1 V) / 20 mA=130 Ω .
- Rmax=tr/(0.8473∗Cb)trCbCbtrR,m bir x= 2950 Ω . TI'nin uygulama notunda grafikler bulunur, böylece uygun değerleri hızlı bir şekilde bulabilirsiniz.
- Tabii ki, geri çekme değeri, paralel olarak bütün geri çekilmelerin eşdeğer değeridir. Master ucunda, slave ucunda ve otobüste başka herhangi bir slave / master üzerinde bir çekme olabilir.
- Ne kadar çok “sınırda” olursanız, kablodaki voltaj düşmesi gibi “parazit” de hesaba katmanız gerekir.