Görüşmeci , ters mantık da uygulanabildiğinde SDA ve SCL'de neden çekme dirençlerinin kullanıldığını bilmek istedi . Seçilen tasarımın neden pull-up direnç kullanımı olduğuna dair bir açıklama var mı?
Görüşmeci , ters mantık da uygulanabildiğinde SDA ve SCL'de neden çekme dirençlerinin kullanıldığını bilmek istedi . Seçilen tasarımın neden pull-up direnç kullanımı olduğuna dair bir açıklama var mı?
Yanıtlar:
Jon'un cevabını biraz genişletmek için:
Evet, hepsi hangi MOSFET'leri kullanmak istediğinizle ilgilidir.
N-kanal MOSFET'leri mantık değiştirme için P-kanalından çok daha iyidir, çünkü:
Bu nedenle, açık kanallı bir konfigürasyon için (I2C'nin ne olduğu), P-kanallı MOSFET'lerle "boşta düşük" yerine N-kanallı MOSFET'lerle "boşta yüksek" bir düzenleme kullanarak oluşturmak çok daha ucuz ve kolaydır.
Üçüncü bir seçenek, N kanallı MOSFET'leri kullanarak "boşta düşük" olacaktır, ancak bunun için, MOSFET'in açılması için geçit voltajını kaynak voltajının çok üzerinde yükseltmek için yüksek voltajlı bir kapı sürücüsüne ihtiyacınız vardır. Küçük haberleşme veriyolları için pratik değildir, ancak bu düzenleme aslında H köprüsünün yüksek tarafı ve alçak tarafı arasında aynı (veya benzer) yanıta sahip olmak istediğiniz H-köprülerinde oldukça yaygın olarak kullanılmaktadır. Bir H-köprüsünde P-kanal ve N-kanal çiftlerinin kullanılması, genellikle P-kanalını kapatmak ve N-kanalını açmak arasında çok daha uzun sürdüğü için ölü bir bölge kullanmanız gerektiği anlamına gelir ve bu da güç verimliliğinizi azaltır. .
Ancak, yüksek hız, düşük maliyet ve kullanım basitliğine ihtiyaç duyduğunuz I2C gibi küçük iletişim otobüsleri için, N-kanallı MOSFET ve çekme dirençli "rölanti yüksek" açık ara en yüksek maliyetlidir.
Pasif yukarı çekmenin / aktif aşağı çekmenin bir diğer avantajı, çeşitli güç voltajlarıyla çalışabilmesidir. Dijital yüksek ve düşük seviyelerin IIC ile açıkça belirtildiğini unutmayın. Bu seviyeler 3,3 V çekme ile çalışacak kadar düşüktür. Bu nedenle hem 5 V hem de 3,3 V güçle çalışan cihazlar üretilebilir. Aslında, IIC veri yolu hatları 3,3 V'a kadar çekilebilir ve bu, veri yolunda farklı voltajlarda ayrı olarak çalışan cihazların bir karışımı ile çalışacaktır.
NMOS'un hız / alan açısından PMOS'a göre bir avantajı olsa da, bir veya iki pimdeki bir sürücüden bahsederken bu fark gerçekten çok küçüktür. Sonuçta, çoğu çıkış sürücüsü aslında hem NMOS hem de PMOS gerektiren totem-kutup tipleridir, bu yüzden bir aşağı çekme veya yukarı çekme konfigürasyonu seçseler de, bir totemden daha küçük bir çıkış sürücüsü ile sonuçlanacaklardı. kutup sürücüsü.
Ancak PMOS açık drenaj üzerinden NMOS açık drenaj çıkışlarının doğrudan I2C için geçerli olmayan bir faydası vardır: VCC pozitif olduğunda, NMOS açık drenaj, farklı VCC seviyelerine sahip yongaların birbirine bağlanmasına izin verir. Bu, sayısız NMOS açık drenajlı ayrık mantık IC'sinin (bir kısmı) neden mevcut olduğudur.
Öte yandan, piyasadaki mevcut herhangi bir PMOS açık tahliye yongalarının farkında değilim. Aslında, herhangi bir çip üzerinde bir PMOS açık tahliye çıkışı ile karşılaştığımıza inanmıyorum. (PMOS açık drenajına benzer davranışa sahip bir NPN açık yayıcı çıkışı olan ECL'yi birçok kez kullandım)
NMOS açık drenaj ayrık mantık çiplerinin mevcudiyeti, NMOS açık drenajı, elektronik tasarımcılara PMOS açık drenajdan çok daha aşina hale getirir.
Hem ayrık yongaların tanıdıklığı hem de kullanılabilirliği (örneğin prototipleme için), muhtemelen I2C tasarımcılarını NMOS açık drenaj konfigürasyonunu seçmeleri için etkiledi.
Sanırım cevap, ilk etapta neden negatif bir zemin sözleşmesi kullandığımıza dayanıyor (ve bu kesinlikle yarı iletken dönemden önce her yerde değil). Bunun nedeni, kullanılan çoğunluk taşıyıcı türlerinin fiziği nedeniyle N-Kanal cihazlarının P-Kanal cihazlarından daha iyi performans göstermesidir.
Entegre devrelerin ilk günlerinde, bu oldukça ciddi bir sınırlamadır ve bu nedenle mümkün olan en yüksek performansı elde etmek için N-Kanal (veya NPN) transistörlerinin kullanılması tercih edildi. Bundan negatif bir topraklama sistemi ve açılır kapanma yerine çekme dirençlerinin kullanılmasını gerektiren açık kollektör çıkışları elde ettik.
Tabii ki I2C veri yolu çok yüksek hızdadır, bu yüzden aşağı çekme dirençleri kullanılarak uygulanamamasının bir nedeni yoktur, aynı zamanda avantajı da yoktur. Bu yüzden konvansiyona sadık kalıyoruz ve pull-up kullanıyor.
İşte bazı (tarihsel olarak topraklanmış) spekülasyonlar ...
Çekme (itme-çekme yerine) olduğunda, aşırı akımlar akmadan otobüs için çekişme halinde birden fazla cihaza sahip olabilirsiniz (İyi Bir Şey - ancak bir açılanla aynı şeyi elde edebilirsiniz).
Bipolar transistörlerin "eski günlerinde", en basit TTL mantığı NPN transistörlü açık toplayıcılar kullandı - her şey toprağa atıfta bulunur, bu da bus voltajından bağımsız olarak tetik seviyelerini tanımlamayı kolaylaştırır. Ayrıca, NPN PNP'den daha hızlıydı.
Ben kendi besleme gerilimi ile çalışan birden fazla cihaz var ve bu besleme gerilimi daha sonra çekme-up yerine bir çekme sahip sabit değilse aşağı olur zorunludur . Birden fazla cihaz veri yolunu kendi besleme raylarına çekmeye çalışırsa, akım akışı kısıtlanamaz ve bir şeyler kızarır. En azından hepsi toprağın değeri üzerinde hemfikirdir, bu nedenle bu sorun ortaya çıkmaz.
CMOS ile hikaye değişir - şimdi tetikleme seviyesi orta raydır. Ancak Enerji Verimliliği geleneksel bir grup olabilir. Kesinlikle, transistörlerin ilk günlerinden itibaren , yukarıdaki nedenlerden dolayı pull-up seçimini hiç sorgulamadım .
Dediğim gibi, bu sadece spekülasyon.
Bu tarihsel bir şey olabilir.
Eski transistörler ve entegre devreler aslında 5 V'dayken 0 V'den daha az güç tüketiyorlardı. Daha sonra, zaman geçtikçe, transistörler ve IC'ler gelişti ve her iki devlet de kabaca aynı miktarda güç tüketdi, ancak standartları değiştirmek için gerçek bir neden yoktu.
Şimdi, standartların hiç değişmediği için - boşta 5 V olduğu gibi birçok şey görüyorsunuz.
I2C spesifikasyonunu okuduğumdan bu yana uzun yıllar geçti, ama ilk ne zaman kullanıldığını hatırlıyorum, insanlar genellikle 2 telli açık toplayıcı otobüs olarak adlandırdı. Bağlantıları ve çarpışma tespitini biraz vurmak için bile çok kolay hale getirdi. 20 yıl önce bile, sadece ucuz ve kolay, yüksek performanslı bir otobüs olarak kabul edilmedi.
I2C'nin bağlı tüm ünitelerin açık drenaj veya açık toplayıcı olması gereken bir veri yolu olarak tanımlandığını söyleyebilirim. Bu, otobüsü sadece yüksek değil, düşük sürdüğü anlamına gelir. (Çıkış sürücüsü transistörü kapatıldığında, pim yüksek empedans durumundadır.)
Bu şema, örneğin farklı sinyal voltajlarına sahip cihazları bağlayabileceğiniz ve veri yolunun iletişim hatalarından kendi kendini iyileştirdiği bazı güzel faydalar sağlar.
Açıkçası, standart bir başka şekilde tanımlanmış olabilir, boşta-düşük / aktif-yüksek bir konfigürasyon ve burada diğer cevaplar bu öğeye oldukça iyi dokunuyor.
Kaynak: LabWorX 1, I2C Otobüsünde Ustalaşmak, Vincent Himpe. I2C hakkında gerçekten iyi bir kitap, tarihsel geçmişi, donanımda nasıl uygulanacağı ve yazılım ve hata ayıklama uygulamalarında nasıl kullanılacağı.
Hiç kimsenin yeterince dokunmadığı gerçek cevap, farklı voltajlarla çalışan cihazları (G / Ç pimleri toleranslı olduğu sürece) bağlamanızı sağlar. Örneğin, 3,3V'lık bir cihaz, 1,8V'lık cihazın IO'su 3,3'e kadar gerilimlere toleranslı olduğu sürece 1,8V kapalı olan bir cihazla iletişim kurabilir. Tabii ki her cihaz 0V çalıştırabilir, ancak her cihaz çekme dirençlerinizdeki gerilime kadar yükselemeyebilir.
Ayrıca, çoğu IC, kaynak verebileceğinden daha fazla akım batırabilir. Bunun nedeni ısı dağılımıdır. Bu nedenle, çekme için batma akımı (sürüş zemini), çekme akımlarına akım sağlamaktan (yüksek voltaj sürme) daha kolaydır.