Neden I2C pull-up rezistörleri ile çalışmak için tasarlandı ve pull-down'ları değil?


22

I2C'de, SCL ve SDA hatlarının pull-up dirençleri kullandığını ve pin sürücülerinin pinleri zemine sürdürebilen açık kollektör NPN cihazları olduğunu biliyorum. Bu, I2C'ye aynı veri yolunun şimdi birden fazla köle ile paylaşılabilmesi ve iki veya daha fazla kölenin yanlışlıkla aynı anda otobüsü sürmeye çalışmasına rağmen, sisteme zarar vermeyeceği bir avantaj sağlar.

Ancak bu, PNP açık tahliye sürücüleri ve SDA ve SCL hatlarındaki çekme dirençleri kullanılarak da yapılabilir . Bununla saat uzatma ve çok ana tahkim gibi şeylere de ulaşılabilir.

I2C protokolünün şu anki uygulaması yukarıda önerilen alternatif uygulamaya göre herhangi bir fayda sağlıyor mu?


1
Açık kollektör transistörleri 80'lerde IC'lerin çoğundaydı.
PlazmaHH

9
@PlasmaHH Sebebi, NPN (belirsiz olarak hatırladığım kadarıyla), substrattaki daha yüksek elektron hareketliliği nedeniyle alan başına daha fazla mevcut kapasiteye sahip olduğunu düşünüyorum, bu nedenle bununla "güçlü" çıktı aşamaları oluşturmak daha kolaydır.
Marcus Müller

7
@ MarcusMüller Aslında, bu doğruydu (ve hala doğruydu). NPN'ler ve NMOS Fets, aynı boyutta verildiğinde "daha güçlüdür". CMOS'ta faktör 2 ila 3 tipiktir. PNP ve NPN için bu, üretim sürecine bağlıdır, ancak neredeyse her zaman PNP'ler, NPN'lerden çok daha zor ve karmaşıktır. Ayrıca bir P-katkılı alt tabakadan başlayarak (çoğu işlemde olduğu gibi) bunu vurgulamaktadır (daha iyi NPN'ler).
Bimpelrekkie

@Bimpelrekkie ben :-) bu Tarih benim katı hal fiziği sınıfından 2.3 olan bir faktör hatırlamak
Winny

1
Mevcut I2C veriyolu herhangi bir nedenden dolayı yanlışlıkla toprağa kısa devre yapıyorsa, sadece çekme direnç akımı çekersiniz. Aktif yüksek sürücülerin ve düşük dirençlerin tamamlayıcı düzenlemesi ile, I2C'nin ilk yıllarından itibaren basit sürücülere zarar vereceksiniz. Tahtalar arasında giderken, şasiye kısa devre yapılması önemlidir. Fakat geri kalanların aşağıya çekilmesinin, diğerlerinin de yanıtladığı diğer birçok nedenden biri.
TonyM

Yanıtlar:


30

Elektriksel olarak anlamlıdır çünkü toprak, IIC veriyolundaki tüm cihazlara ortak bir bağlantıdır. Bu, hatları yüksek sürdüyse ve sürtünmelerden aşağı kayarsa gerekli olacak şekilde, tüm IIC cihazlarıyla ortak bağlantı olmaya zorlama gücünden çok daha az bir kısıtlamadır.

IIC cihazlarının hepsinin aynı ağdan veya aynı voltajdan beslenmesine gerek olmadığını unutmayın. Her iki veri yolu hattının tek ortak güç voltajına sürülmesi gerektiğinde bu doğru olmaz.


5
Olumsuz oy benim değil ve sen de benim gibi uzun yıllar I2C deneyimine sahip olmalısın, bu yüzden buradaki amacım yanlış bir anlama olabilir, ancak: " IIC cihazlarının hepsinin [...] aynı voltajdan güç almasına gerek yok " olabilir. 5V ve 3V ile çalışan I2C cihazlarının (örneğin), herhangi bir ek bileşen veya önlem almadan (seviye tercümanlarından bahsetmediğinizden) aynı I2C veriyolunu paylaşabileceğini ima ediyorlar. Ve tabii ki bunu yapamazlar, çünkü her cihazın I2C mantık eşikleri şimdi kendi Vcc'lerine referans olarak verilmiştir. Belki seviye tercümanların açık bir şekilde belirtilmemesi eksikliğe neden olmuştur.
SamGibson,

13
Kullanılan pull-up ve I / O pinlerine bağlı olarak, I2C tarzı iletişim 5V ve 3.3V cihazlar arasında sorunsuz çalışabilir. Örneğin 5V'a 10K'lık pull-up'ların kullanılması, 3.3V cihazların 5V toleranslı sıkıştırılmamış girişleri varsa veya 150 uA'yı koruma diyotlarına tahammül edebiliyorsa kullanılmasına izin verir. Ve 3.3V'ye kadar olan çekimleri kullanmak, en azından daha düşük hızlarda, 2.5V ya da daha düşük bir giriş yüksek eşiğine sahip 5V cihazlarla arabirim oluşturmak için çalışacaktır.
supercat

7
@Sam: Aslında 5V ve 3.3 V IIC cihazlar olabilir , aynı IIC otobüs olmak. Besleme voltajından bağımsız olarak sabit voltaj seviyesine sahip cihazlar IIC şartnamelerinde özel olarak belirtilmiş ve onaylanmıştır.
Olin Lathrop

5
Philips'in "I2C-veri yolu ve nasıl kullanılacağı" adlı eski belgede, bölüm 10.0, ilk (tipik olarak NMOS) 5V I2C cihazlarının sabit giriş eşiklerini belirtir. Daha sonra şöyle diyor: " VDD ile ilgili giriş seviyesine sahip I2C-Bus cihazları , çekme direncinin de bağlı olduğu ortak bir besleme hattına sahip olmalıdır " (koyu renk). @supercat - sizden bahsettiniz: " 2.5V veya daha düşük giriş yüksek eşiğine sahip 5V cihazlar " Böyle bir cihaza bir örnek vererek bana yardımcı olabilir misiniz? Eski I2C belgelerini okuyarak, sadece eski 5V cihazlar için sabit bir 3V I2C Vih'den bahsederim. Teşekkürler.
SamGibson

2
@SamGibson: VDD ile ilişkili giriş seviyeli cihazların , belirli bir aralıktaki voltajlardan çalışması gerekebilir. Ne kadar yakın olmaları gerektiği, voltajların VDD ile nasıl ilişkili olduğuna bağlıdır. PIC16F877 (isteğe bağlı olarak seçilen 5V'lik bir bölüm) için Mikroçip veri sayfası, normal pimleri için 0.25VDD + 0.8V olarak V (IH) listeler, ancak Schmitt Trigger girişleri için çok daha yüksek olurdu. VDD = 5.2V’de normal bir giriş, 2.1 voltluk belirli bir V (IH); Tipik performans grafiği normal ve ST girişleri arasında olduğunu öne sürse de, I2C V (IH) donanımı için bir spesifikasyon görmedim.
supercat

24

Eski güzel günlerde, TTL sürücüleri bir sinyali aşağı çekmek yerine yukarı çekmekten çok daha iyiydi. Bu nedenle, I2C gibi protokoller, fakat aynı zamanda kesme hatları, sıfırlama ve diğerleri gibi protokollerin tümü, dağıtılmış açılır pencereli bir çekme işlemi kullanılarak gerçekleştirildi.


8
Daha iyi modern günlerde, yarı iletkenlerin kendine özgü bir özelliği olduğu için aynı şey hala geçerli. Bugün, aynı akımı idare etmek için daha hassas bir yukarı çekme transistörü edinmek için maliyeti yoktur.
Arsenal

2
CMOS ile güç demiryolu voltajına yaklaşmanın daha kolay olduğu söylendi. TTL'nin mücadele ettiği bir başka 'sorun'. (Belki de 3V3 CMOS'un TTL ile etkileşim kurmasına izin verdiği için kendimizi şanslı saymalıyız)
Oldfart

14

Topraklamayı, değişken besleme gerilimi olabilecek alt sistemler arasında ortak bir referans olarak kullanmak daha kolaydır. Bir besleme voltajına kadar çekmek için PNP transistörleri kullanırsanız, tüm alt sistemler aynı kaynağa bağlanmalıdır.


8

Burada iyi cevaplar var, ama başka bir neden daha var.

Otobüsün sakin durumu zeminde ise, otobüsün bağlı olup olmadığını veya uzayda asılı olup olmadığını söylemenin bir yolu yoktur.

Çıkarma işleminin ana cihazda bulunması normaldir. Köleler genellikle bir çekme hakkına sahip değildir. Bunun nedeni, düşük seviyeye sahip olmak için gerekli olan çekme akımının veri yoluna bağlı cihazların sayısı ile artacağıdır.

Otobüse takıldığında bir köle, hattın yüksek olduğunu algılar (kullanılmadığı varsayılarak) ve otobüsün aslında orada ve sessiz olduğunu bilir. Zemin önyargılı bir otobüsle durum böyle olmaz.


Otobüsün yukarı çekildiğini tespit etmek için, bir kölenin ilk önce onu alçaltması gerekir. Benzer bir işlemin neden ters kutuplarla mümkün olacağından emin değilim.
Dmitry Grigoryev

@DmitryGrigoryev neden zaten düşük olan bir şeyi çekmesi gerekiyor?
Trevor_G

5

Soruyu doğru anlarsam bir yönü:

  • Neden çekme dirençleri ve PNP transistörleri yerine çekme dirençleri ve NPN transistörleri kullanıyorsunuz?

Öncelikle, iki kutuplu transistörleri (NPN, PNP) değil, MOSFET'leri (dört farklı değişkende var) kullandığınızı unutmayın.

" Pull-up ve NPN " türevini kullanan aygıtlar, n kanallı bir donanım MOSFET kullanır. Bu MOSFET'in kaynağı toprağa bağlı olduğundan, kapı kaynağı voltajı (akım akışını kontrol eden) kapı ve toprak arasındaki voltajla aynıdır. Böylece MOSFET, 0 ile Vdd arasındaki bir voltaj kullanılarak kontrol edilebilir.

" Aşağı açılır ve PNP " varyantını uygulamak için üç olasılık olacaktır :

  • Bir p kanalı geliştirme MOSFET kullanma

    NMOS veya CMOS IC p-kanalında karşılaştırılabilir özelliklere (direnç vb.) Sahip MOSFET'ler n-kanallı MOSFETS'den daha fazla alan gerektirir.

    Mikroelektronikte uzay paradır, bu nedenle eğer mümkünse p-kanal MOSFET'lerden kaçınılır.

  • Bir kullanma N-kanal MOSFET

    Bu, transistörü çalıştıran mantık devresinin çıkışının, besleme voltajının "DÜŞÜK" voltajına (örn. + 5V) ve besleme voltajının üstünde "YÜKSEK" voltajına (örneğin, devrenin geri kalanı sağlandığında + 10V) sahip olmasını gerektirir. + 5V ile).

    Sebep: MOSFET iletkenken kaynak toprak gerilimi Vdd olacaktır. Kapı kaynağı voltajı pozitif olmalıdır, bu nedenle kapı ve toprak arasındaki voltaj daha da yüksek olmalıdır.

    İki voltaj kaynağına ihtiyacınız var - ve mantık devresinin çıkışını 0 ... + 5V - + 5V ... + 10V ... arasında değiştiren bir devre

  • Bir n kanal tükenmesi MOSFET kullanma

    Maalesef size bu çözüm hakkında çok fazla şey söyleyemem. Ancak Google’ı kullanarak, MOSFET’lerin tükenmesinin MOSFET’lerin geliştirilmesinden daha zor olduğunu ve bu nedenle kaçınıldıklarını söyleyen bir sayfa buldum.

    Güç elektroniğinden (mikroelektronik değil) yukarıda açıklanan "iki güç kaynağı" varyantının tükenme MOSFET'lerine göre daha fazla tercih edildiğini biliyorum. (Ama nedenini size söyleyemem.)

    EDIT n-kanal tükenmesi MOSFET'lerini kullanarak, muhtemelen negatif bir voltaja (örneğin -5V) ihtiyaç duyarsınız, böylece iki besleme voltajına da ihtiyacınız olur ...


0

Ayrıca, ortak bir zemin ve yukarı çekme veri hattına sahip olmanın (ortak VCC ve aşağı çekme özelliğine sahip) fazladan bir faydası daha vardır:

Orijinal niyet aynı PCB üzerindeki cihazları yalnızca birkaç inçlik aralıklarla bağlamak olsa bile, başarılı oldu, bu yüzden şu anda birkaç satır uzunluğuna sahip olmak ve bilgisayar veya eşit bir şey olabilecek "aygıtları" bağlamak nadir değildir. karmaşıklığı, bazı cihazların kendi güç kaynaklarına sahip olması (farklı kalitede, pille çalışan bir duvar prizi taktığınızı söylüyor). Bağlantının ideal olmayan şartlar altında olmasa bile "en azından iyi" olması iyi olur.

Ve bu tür bağlı cihazların çoğu bir şekilde başka yollarla, sonra sadece I2C iletişimiyle de bağlanabilir. Genellikle cihazları birbirine bağlarken common ground, bazen diğer işlevlerin bir parçası olarak, bazen sadece metal bir kasanın üzerine monte edildiğinden ve cihazlar da kasaya (veya ortak bir soğutucuyla veya benzeri bir şeyle) bağlandığından veya Topraklanmış blendajlı kablo içinde topraklanmalıdır - bu da toprakları birbirine bağlar.

Ayrıca, bu tür cihazların güç hatlarını (VCC) doğrudan bağlarsanız, bu hatların doğal olarak farklı voltajda olması durumunda sorun yaşayacaksınız (tabii ki burada ve orada 5V diyebilir, ancak güç kaynaklarının yapısına ve parça toleranslarına bağlı olarak) ayrıca 4,9V veya 5,2V olabilir veya hatta pille çalışıyorsa ve bazen bazı motorları çalıştırıyorsa, güç düşüp zamanla yükseliyorsa bile değişebilir).

Böyle bir durumda, bir A Volt güç kaynaklarının arasında etkili bir kısa devre vardır ve kaynaklara (ve yolların direncine) bağlı olarak, yalnızca enerji israfı ve ısının yükselmesiyle değil, belki de zarar görmesiyle sonuçlanan göreceli olarak yüksek akımlar akabilir. veya bu kaynaklardan bazılarının ömrünü kısaltmak). Hangisi iyi değil.

Ortak toprağa ve toplayıcılara sahip olmak bu tür problemleri önler - toprağa toprağa bağlanır ve toplanma dirençleri, VCC cihazlara göre çok fazla farklılık gösterse de, sadece gerçekten küçük çapraz akımlara izin verir.


1
Bu aslında Dave Tweed'in cevabıyla aynı.
Janka

-2

Çip ile fazla güç göndermek zorunda değilsiniz, eğer çekilirse.

Çip hiçbir şeyi süremediğinden, otobüsü 0'a getirmek için kısa bir yol yaratıyor ve 1'e açmak için açık yapıyor.

Eğer aşağı çekildiyse, veri yolunu 1'e sürmek için çipten güç göndermek zorunda kalırsınız. Eğer otobüs kazara kısa olursa, itmek için o çip boyunca sürdüğünüz çok fazla güç olabilir. 1'e kadar.

Yasal Uyarı: Bu noktada oldukça berbat bir EE'yim.


3
EE.SE’ye Hoşgeldiniz. “ Eğer çip üzerinden çok fazla güç göndermek zorunda değilsiniz, eğer yukarı çekiyorsa. ” Eğer yukarı çekme ve aşağı çekme dirençleri aynı boyuttaysa, akımlar aynı olacaktır. Çekme, sürülen çipten kaynaklanmak ve süren çipte batmak için akım gerektirir. Aşağı çekme, sürtünme çipinden kaynaklanmasını ve sürülen çip tarafından batırılmasını gerektirir. Kazara kısa devre V + veya toprak olabilir.
Transistör
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.