Чому I2C призначений для роботи з підтягуючими резисторами, а не розсувними?


22

Я розумію, що в лініях I2C, SCL і SDA використовуються підтягуючі резистори, а драйвери штифтів - це пристрої NPN з відкритим колектором, які можуть загнати шпильки на землю. Це дає перевагу I2C в тому, що одну і ту ж шину тепер можна ділити з декількома рабами, і навіть якщо два або більше рабів випадково намагаються керувати шиною одночасно, це не завдасть шкоди системі.

Але це також можна зробити за допомогою драйверів відкритого зливу PNP та резисторів, що падають, на лініях SDA та SCL. Таких речей, як розтягування годин і багатомайстерний арбітраж, можна досягти і з цим.

Чи дає поточна реалізація протоколу I2C якісь переваги порівняно із запропонованою вище альтернативною реалізацією?


1
відкриті колекторні транзистори, здавалося, були в більшості в ІМС у 80-х.
ПлазмаHH

9
@PlasmaHH Я думаю, що причина полягала в тому, що NPN (наскільки я неясно пам’ятаю) має більшу потужність на область через більшу рухливість електронів у підкладці, тому з цим легше будувати «сильні» вихідні етапи.
Маркус Мюллер

7
@ MarcusMüller Дійсно, це було (і досі є) правдою. NPNs та NMOS Fets "сильніші", коли даються однакові розміри. У CMOS типовий коефіцієнт від 2 до 3. Для PNP проти NPN це залежить від процесу виготовлення, але майже завжди PNP набагато складніше і складніше, ніж NPN. Також, починаючи з субстрату, легованого Р (як це робить більшість процесів), це підкреслює (кращі NPN).
Бімпелрекіе

@ Bimpelrekkie Я пам'ятаю коефіцієнт 2,3 з мого класу фізики твердого тіла до цієї дати :-)
winny

1
Якщо наявна шина I2C з будь-якої причини випадково замикається на землю, тоді ви будете тільки підтягувати резисторний струм. Завдяки додатковому розташуванню драйверів, що працюють на високому рівні та резисторів, що випадають, ви можете пошкодити простих драйверів з початкових років I2C. При переході між дошками врахування короткого розміру до ходової частини. Але це лише одна з багатьох причин для того, щоб їхати на низькому підйомі, про решту з яких інші відповіли нижче.
TonyM

Відповіді:


30

В електричному сенсі це має сенс, оскільки заземлення - це єдине загальне з'єднання для всіх пристроїв на шині IIC. Це набагато менше обмежень, ніж примушувати живлення бути загальним з'єднанням для всіх пристроїв IIC, як це було б потрібно, якби лінії проходили високо і пливли низько через витягування.

Зауважте, що пристрої IIC не повинні живитись від однієї мережі або однієї напруги. Це не було би правдою, якби обидві лінії шини повинні були приводитись до єдиної загальної напруги живлення.


5
Не мій голос, і ви повинні мати стільки років досвіду I2C, як я, тому моя думка тут, ймовірно, непорозуміння, але: " пристрої IIC не всі повинні живитись від [...] тієї ж напруги ". вважається, що це означає, що пристрої I2C, що працюють на 5V та 3V (наприклад), можуть використовувати однакову шину I2C без додаткових компонентів чи запобіжних заходів (оскільки ви не згадали перекладачів рівня). І звичайно, вони не можуть цього зробити, оскільки логічні пороги I2C кожного пристрою тепер посилаються на їх власний Vcc. Можливо, відсутність явної згадки про рівних перекладачів спричинила зниження голосу?
СамГібсон

13
Залежно від використовуваних підключень та штифтів вводу / виводу, комунікації у стилі I2C можуть безперебійно працювати між пристроями 5В та 3.3В. Наприклад, використовуючи 10K підтягувачів до 5В, можна було б використовувати пристрої 3.3V, якщо вони не мають затиснених входів на 5V або якщо вони можуть переносити 150uA в свої захисні діоди. А використання підтягувачів до 3,3 В буде працювати, принаймні на менших швидкостях, для взаємодії з 5В пристроями, які мають високий поріг входу, який становить 2,5 В або менше.
supercat

7
@Sam: Насправді пристрої IIC напругою 5 В і 3,3 В можуть знаходитися на одній шині IIC. Прилади з фіксованим рівнем напруги незалежно від їх напруги живлення конкретно згадуються та санкціонуються в специфікаціях IIC.
Олін Латроп

5
У старому документі "Шина I2C та як її використовувати" від Philips у розділі 10.0 згадуються фіксовані вхідні пороги ранніх (як правило, NMOS) 5В пристроїв I2C. Потім йдеться: " Пристрої шини I2C з рівнями входу, пов'язаними з VDD, повинні мати одну загальну лінію живлення, до якої також підключений підтягуючий резистор " (мій жирний шрифт). @supercat - Ви згадали: " Пристрої 5 В, які мають високий поріг входу, який становить 2,5 В або менше ". Чи можете ви допомогти мені, наводячи приклад такого пристрою? Читаючи старі документи I2C, я можу знайти лише згадування фіксованого мінімуму 3V I2C Vih для тих старих пристроїв 5В. Спасибі.
СамГібсон

2
@SamGibson: Пристрої з рівнями входу, пов'язаними з VDD, можливо, повинні працювати від напруг, які знаходяться в певному діапазоні один від одного. Наскільки вони повинні бути близькими, залежить від того, наскільки напруги пов'язані з VDD. Лист даних Microchip для PIC16F877 (5В частина, вибрана довільно), перераховує V (IH) для його звичайних штифтів як 0,25VDD + 0,8 В, хоча для його входів тригер Schmitt він був би набагато більшим. При VDD = 5,2 В нормальний вхід мав би заданий V (IH) 2,1 вольт; Я не бачив специфікації для апаратного I2C V (IH), хоча типовий графік продуктивності говорить про те, що він знаходиться між нормальним та ST входом.
supercat

24

У старі добрі часи драйвери TTL були набагато кращими, щоб тягнути сигнал вниз, ніж витягувати його. Тому такі протоколи, як I2C, а також лінії переривання, скидання та інші, були реалізовані за допомогою підтягування з розподіленим спадом.


8
У кращі сучасні часи це все-таки справедливо, оскільки це властива напівпровідників. Сьогодні це просто не коштує стільки, щоб змусити транзистор підтягувача, який керує тим самим струмом.
Арсенал

2
Мені сказали, що з CMOS також набагато простіше наблизитися до напруги в силовій шині. Ще одне «питання», де TTL боровся. (Можливо, нам варто порахувати себе щасливчиком за те, що це дозволило 3V3 CMOS взаємодіяти з TTL)
Oldfart

14

Простіше використовувати землю як загальну орієнтир серед підсистем, які можуть мати різну напругу живлення. Якщо ви використовуєте транзистори PNP для підведення напруги до напруги, всі підсистеми повинні бути підключені до одного джерела живлення.


8

Хороших відповідей тут багато, але є й інша причина.

Якщо стан спокою шини знаходиться на місці, немає можливості сказати, підключена ли шина чи просто висить у просторі.

Це нормально, щоб підтягувач знаходився біля головного пристрою. Раби зазвичай не мають підтягування. Це відбувається тому, що струм, що спадає, який потрібен для встановлення низького рівня, збільшився б із кількістю пристроїв, підключених до шини.

Раб, підключившись до шини, може виявити, що лінія натягнута високо (якщо припустити, що вона не використовується) і знати, що шина насправді є і тиха. Це було б не так із наземним упередженим автобусом.


Для того, щоб виявити, що автобус підтягується високо, раб повинен в першу чергу витягнути його низько. Я не впевнений, чому подібна процедура була б неможлива з протилежною полярністю.
Дмитро Григор’єв

@DmitryGrigoryev чому б потрібно було тягнути щось, що вже є низьким?
Trevor_G

5

Якщо я правильно розумію питання, одним із аспектів є:

  • Чому ви використовуєте підтягуючі резистори та NPN-транзистори замість висувних резисторів та PNP-транзисторів?

Перш за все, слід зазначити, що ви використовуєте не біполярні транзистори (NPN, PNP), а MOSFET (які існують у чотирьох різних варіантах).

Пристрої, що використовують варіант " підтягування та NPN ", використовують розширення n-каналів MOSFET для . Оскільки джерело цього MOSFET підключено до заземлення напруга джерела затвора (керуючи потоком струму) дорівнює напрузі між затвором і землею. Таким чином, MOSFET можна керувати за допомогою напруги між 0 і Vdd.

Існує три можливості для реалізації варіанту " спадний та PNP ":

  • Використання розширення P-каналу MOSFET

    На IC-каналах NMOS або CMOS p-канали MOSFET з порівнянними характеристиками (опір тощо) вимагають більше місця, ніж n-канальні MOSFETS.

    У мікроелектроніці простір - це гроші, тому P-канальні MOSFET уникають, якщо це можливо.

  • Використання розширення nOS -каналу MOSFET

    Для цього потрібно, щоб на виході логічної ланцюга, що веде транзистор, було напруга живлення напруги (наприклад, + 5 В) та "ВИСОКА" напруга вище напруги живлення (наприклад, + 10 В, коли подається решта ланцюга з + 5 В).

    Причина: напруга джерела-заземлення буде Vdd, коли MOSFET проводить. Напруга на джерелі затвора повинна бути позитивною, тому напруга між воротами та землею має бути навіть вище.

    Вам знадобиться два джерела напруги - і схема, що змінює вихід логічної ланцюга з 0 ... + 5 В на + 5 В ... + 10 В ...

  • Використання MOSFET з виснаженням n-каналів

    На жаль, я не можу сказати вам багато про це рішення. Однак я виявив деяку сторінку за допомогою Google, в якій говорилося, що виснаження MOSFET важче виробляти, ніж поліпшити MOSFET, і їх уникати з цієї причини.

    Я знаю з силової електроніки (а не мікроелектроніки), що описаний вище варіант "двох джерел живлення" є навіть кращим над MOSFET з виснаженням. (Але я не можу тобі сказати, чому.)

    EDIT Використовуючи NOS-канали для виснаження n-каналів, вам, ймовірно, знадобиться негативна напруга (наприклад, -5В), тому вам також знадобиться два напруги живлення ...


0

Також є ще одна додаткова перевага для спільних ліній передачі даних та підключення (над тим, що мають спільний VCC та спадний):

Навіть якщо початковий намір полягав у тому, щоб підключити пристрої до однієї плати лише на відстані декількох дюймів, це було успішно, тому зараз не рідкість мати у себе довгі пари футів та підключення "пристроїв", які могли б бути комп'ютерами чи чимось рівним. складність: деякі пристрої мають власні джерела живлення (різної якості, скажімо, ви підключаєте щось настінну розетку, що працює на батареї). Краще, якщо з'єднання працює «принаймні добре» навіть у не ідеальних та позаспеціальних умовах.

І безліч таких підключених пристроїв можуть бути якимось чином пов'язані також іншими способами, то тільки I2C-зв’язком. Зазвичай при з'єднанні пристроїв разом ви підключаєте його common ground- іноді як частину інших функцій, іноді лише тому, що він встановлений на металевому корпусі, а пристрої також підключені до корпусу (або із загальним кулером або чимось подібним) або можуть виникнути бути екранованим кабелем із заземленим щитом всередині - який також з'єднує підстави.

Якщо ви також безпосередньо підключите лінії електропередач (VCC) таких пристроїв, у вас виникнуть проблеми, коли ці лінії будуть мати різну напругу природним шляхом (звичайно, це може сказати 5В тут і там, але залежно від конструкції та частинних допусків джерел живлення це може також бути 4,9 В або 5,2 В або навіть змінюватися, якщо він працює від акумулятора і іноді працює з деякими двигунами, завдяки чому потужність падає і піднімається з часом).

У такому випадку існує фактично коротке замикання між джерелами живлення частини Вольта, і залежно від джерел (і опору способів) може протікати відносно високі струми, що призводить не тільки до енерговитрат і тепла, але навіть навіть до пошкодження ( або скорочення життя) деяких із цих джерел. Що не добре.

Наявність спільної заземлення та підтягувачів дозволяє уникнути подібних проблем - заземлення, а резистори заземлення дозволяють отримати лише дуже малий поперечний струм, навіть якщо VCC сильно відрізняється від пристроїв.


1
Це по суті те саме, що відповідь Дейва Твіда.
Янка

-2

Вам не доведеться надсилати стільки енергії через чіп, якщо він підтягується.

Оскільки чіп нічого не приводить в дію, він просто створює короткий, щоб підвести шину до 0, і зробити відкритий, щоб довести її до 1.

Якщо це було знято, вам доведеться направити живлення через мікросхему, щоб запустити шину до 1. Якщо трапляється випадковий короткий пробіг, це може бути велика сила, яку ви проїжджаєте через цей чіп, щоб спробувати просунути його до 1.

Відмова від відповідальності: Я зараз досить паршивий ЕЕ.


3
Ласкаво просимо на EE.SE. " Вам не доведеться надсилати стільки енергії через чіп, якщо він підтягується. ". Якщо резистори, що підтягуються і що падають, однакового розміру, струми будуть однаковими. Підтягування вимагатиме отримання струму з керованого мікросхеми та занурення у привідний чіп. Для витягування потрібно буде струм виводити з приводного чіпа і затоплювати керованим чіпом. Випадковий короткий може бути до V + або землі.
транзистор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.