I2C: 3.3V-veriyolunda seviye değiştirmeden 3.3V ve 5V cihazlar?


12

3.3V'luk pull-up'ları olan bir I2C-bus'ta 5V ile çalışan cihazlar kullanıyorsam gerçekten seviye değiştiriciye ihtiyacım var mı? Anladığım kadarıyla, cihazlar sadece hatları (SDA, SCL) alçak (toprağa) çekecek ve besleme voltajlarını asla veriyoluna sürmeyecek. Bu nedenle, tüm cihazlar pull-up'lardan (3.3V) voltajı mantıksal yüksek olarak algıladığı sürece seviye değiştirici için bir neden görmüyorum. Besleme olarak 5V kullanan cihazlarda durum böyle olmalıdır.

Benim durumumda, girişleri master olarak 5V toleranslı olmayan bir IC'ye sahibim ve kölelerime 3.3V ile güç verebiliyorum , ancak 5V kullanmak devremde daha kolay ve köleler için daha yüksek (dahili) saat oranlarına izin veriyor.


2
Yani bir şeyleri özetlemek için: - 3.3V'a kadar pull-up kullanarak bir I2C-bus'ta Vdd olarak 5V'li cihazlar kullanırken hiçbir çip tehlikede değil - Toleranslara, dahili çip tasarımına bağlı olarak çalışabilir veya çalışmayabilir ...
Jannis

2
Doğru - hasar tehlikesi yok, sadece doğru çalışma garantisi yok.
Adam Lawrence

Yanıtlar:


15

I2C

"I2C veriyoluna bağlanabilen çeşitli farklı teknoloji cihazları (CMOS, NMOS, bipolar) nedeniyle, mantıksal '0' (DÜŞÜK) ve '1' (YÜKSEK) seviyeleri sabit değildir ve Giriş referans seviyeleri VDD'nin% 30'u ve% 70'i olarak ayarlanmıştır; VIL 0.3VDD ve VIH 0.7VDD'dir Bakınız Şekil 38, zamanlama şeması Bazı eski cihaz giriş seviyeleri VIL = 1.5 V ve VIH = 3,0 V, ancak tüm yeni cihazlar bu% 30 /% 70 spesifikasyonunu gerektirir. Elektriksel özellikler için Bölüm 6'ya bakın. " (sayfa 9)

0.7×VDD

NXP I2C spec rev.  4

5V sisteminiz için:

0.7×5V=3.5V

0.3×5V=1.5V

0.7×VDD

Kilometreniz değişebilir, ancak mümkün olan her yerde spesifikasyon dahilinde olmak her zaman en iyisidir ...


Temizleme stevenvh için teşekkürler. Dün acele ediyordum.
Adam Lawrence

11

Cees'in cevabı yanlış, özellikle "her zaman" ve "herhangi". Mikrodenetleyici G / Ç'lerinin yüksek bir seviye için minimum olarak 0,6 Vdd'ye ihtiyacı olabilir, diğerlerinin minimum 0,7 Vdd'si olabilir ve Madmanguruman'ın bunun I2C için standart olduğunu gösterir. 5 V beslemede 0,7 Vdd 3,5 V, bu nedenle 3,3 V zaten çok düşük.

Ama daha da kötüsü. Voltaj regülatörleri genellikle nominal çıkış voltajlarında% 5 toleransa sahiptir, bu nedenle en kötü durum 5 V 5,25 V olabilir ve daha sonra 0,7 Vdd 3,675 V olur. Yüksek seviye için minimum giriş. 3,3 V negatif% 5 toleransa sahipse 3,3 V 3,135 V olur. Bu nedenle, dikkate alınan toleranslarla giriş yarım volt çok düşük veya% 15 olabilir.

Yani,

Bu nedenle, tüm cihazlar pull-up'lardan (3.3V) voltajı mantıksal yüksek olarak algıladığı sürece seviye değiştirici için bir neden görmüyorum. Besleme olarak 5V kullanan cihazlarda durum böyle olmalıdır.

zamansız bir sonuçtur. Daima veri sayfalarını kontrol edin ve hesaplamayı yapın.


-1

Diğer cevapların Jannis'in sorusuna gerçekten cevap vermediğini hissediyorum. 3.3V veriyolunda (muhtemelen 3.3V MCU) 5V cihazları kullanmayı sordu. SDA / SCL pimlerinin de belirtildiği gibi sadece aşağı çekeceğinden, 3.3V'ye bağlanan pull-up'ların iyi olacağını kabul ediyorum, örneğin ana cihaz için güvenli. MCU'yu aşırı gerilime karşı korumak için kölelerin ve ustanın ortak bir zemini (Vss pin eşpotansiyel) paylaşması gerekeceğine dikkat edin, ancak bu muhtemelen yine de böyle olacaktı. Bu yüzden Jannis'in yöntemi, seviye değiştirmeden çalışmalıdır.


2
Hoşgeldiniz!! Yeni bir katkıda bulunduğunuzu fark ettim, bu yüzden altı yaşından büyük bir soruya cevap verdiğinizi fark etmemiş olabilirsiniz. Sistem sürekli olarak eski soruları gündeme getirir, böylece bunlar gözden geçirilir, bunu aklınızda bulundurmalısınız.
Edgar Brown
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.