Почему I2C предназначен для работы с подтягивающими резисторами, а не с понижающими?


22

Я понимаю, что в линиях I2C, SCL и SDA используются подтягивающие резисторы, а драйверы выводов являются устройствами NPN с открытым коллектором, которые могут приводить контакты в землю. Это дает I2C преимущество в том, что одна и та же шина теперь может совместно использоваться несколькими ведомыми, и даже если два или более ведомых устройства случайно попытаются управлять шиной в одно и то же время, это не приведет к повреждению системы.

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

Дает ли текущая реализация протокола I2C какие-либо преимущества по сравнению с предложенной выше альтернативной реализацией?


1
Транзисторы с открытым коллектором, казалось, были в большинстве в микросхемах в 80-х годах.
PlasmaHH

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

7
@ MarcusMüller Действительно, это было (и остается) правдой. NPN и NMOS Fets "сильнее", если они имеют одинаковый размер. В CMOS коэффициент от 2 до 3 является типичным. Для PNP против NPN это зависит от процесса изготовления, но почти всегда PNP намного сложнее и сложнее, чем NPN. Кроме того, начиная с подложки, легированной P (как это делает большинство процессов), это подчеркивается (лучшие NPN).
Bimpelrekkie

@Bimpelrekkie Я помню коэффициент 2,3 от моего класса физики твердого тела до этой даты :-)
Винни

1
Если существующая шина I2C по какой-либо причине случайно закорочена на землю, вы будете получать только ток подтягивающего резистора. При дополнительном расположении активных драйверов высокого напряжения и понижающих резисторов вы можете повредить простые драйверы I2C, начиная с первых лет. При переходе между платами следует учитывать замыкание на шасси. Но это всего лишь одна из многих причин, по которой мне нужно тянуть на низком уровне тяги, на остальные другие ответили ниже.
TonyM

Ответы:


30

Электрически это имеет смысл, потому что заземление - это одно общее соединение со всеми устройствами на шине IIC. Это намного меньшее ограничение, чем принудительное включение питания в качестве общего соединения для всех устройств IIC, что потребуется, если линии будут подняты высоко и низко подвешены из-за понижений.

Обратите внимание, что не все устройства IIC должны питаться от одной сети или от одного и того же напряжения. Это было бы неверно, если бы обе шинные линии приходились на одно общее напряжение питания.


5
Не мое отрицательное мнение, и у вас должно быть столько же лет опыта работы с I2C, сколько и у меня, так что моя точка зрения здесь, вероятно, является недоразумением, но: « Не все устройства IIC должны питаться от [...] одного и того же напряжения » Это подразумевает, что устройства I2C с питанием 5 В и 3 В (например) могут использовать одну и ту же шину I2C без каких-либо дополнительных компонентов или мер предосторожности (поскольку вы не упомянули преобразователи уровня). И, конечно, они не могут этого сделать, поскольку пороги логики I2C каждого устройства теперь привязаны к их собственному Vcc. Возможно, отсутствие явного упоминания о переводчиках уровней вызвало понижение рейтинга?
СамГибсон

13
В зависимости от используемых подтягивающих выводов и выводов ввода / вывода, связь в стиле I2C может бесперебойно работать между устройствами 5 В и 3,3 В. Например, использование повышающих напряжений 10 кОм до 5 В позволило бы использовать устройства 3,3 В, если они имеют устойчивые к 5 В входы без помех или если они могут выдерживать 150 мкА в своих защитных диодах. И использование подтягиваний до 3,3 В будет работать, по крайней мере, на более медленных скоростях, для взаимодействия с устройствами 5 В, которые имеют высокий порог входа, который составляет 2,5 В или менее.
суперкат

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

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

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

24

В старые добрые времена водители TTL гораздо лучше справлялись с потерей сигнала, чем с ним. Поэтому такие протоколы, как I2C, а также линии прерывания, сброс и т. Д., Были реализованы с использованием раскрывающегося раскрывающегося списка.


8
В лучшие современные времена то же самое сохраняется, поскольку это присущее полупроводникам свойство. Сегодня просто не так дорого получить более мощный транзистор с подтягиванием, способный выдерживать тот же ток.
Арсенал

2
Мне сказали, что с КМОП также намного легче подобраться к напряжению шины питания. Еще один «вопрос», где TTL боролся. (Может быть, мы должны считать себя счастливчиками, поскольку это позволило 3V3 CMOS взаимодействовать с TTL)
Oldfart

14

Проще использовать землю в качестве общего эталона среди подсистем, которые могут иметь различные напряжения питания. Если вы используете PNP-транзисторы для поднятия напряжения питания, все подсистемы должны быть подключены к одному источнику питания.


8

Хороших ответов здесь предостаточно, но есть и другая причина.

Если состояние покоя автобуса находится на земле, невозможно определить, подключена ли шина или просто висит в пространстве.

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

Подчиненный, когда он подключен к шине, может затем обнаружить, что линия перегружена (при условии, что она не используется), и знать, что шина действительно там и работает тихо. Это не будет иметь место с автобусом, смещенным на землю.


Чтобы обнаружить, что шина вытянута высоко, во-первых, ведомый должен опустить ее низко. Я не уверен, почему подобная процедура была бы невозможна с противоположной полярностью.
Дмитрий Григорьев

@DmitryGrigoryev зачем ему тянуть что-то уже высоко-низко?
Trevor_G

5

Если я правильно понимаю вопрос, один из аспектов:

  • Почему вы используете нагрузочные резисторы и NPN-транзисторы вместо понижающих резисторов и PNP-транзисторов?

Прежде всего, вы должны отметить, что вы используете не биполярные транзисторы (NPN, PNP), а полевые транзисторы (которые существуют в четырех различных вариантах).

Устройства, использующие вариант « подтягивания и NPN », используют MOSFET с улучшением n-канала . Поскольку источник этого полевого МОП-транзистора подключен к земле, напряжение затвора-источника (управляющее потоком тока) равно напряжению между затвором и землей. Таким образом, МОП-транзистором можно управлять, используя напряжение от 0 до Vdd.

Там будет три возможности для реализации " варианта раскрывающийся и PNP »:

  • Использование улучшенного p-канала MOSFET

    На микросхемах NMOS или CMOS p-канальные MOSFET с сопоставимыми характеристиками (сопротивлением и т. Д.) Требуют больше места, чем n-канальные MOSFETS.

    В микроэлектронике пространство - это деньги, поэтому по возможности избегают p-канальных МОП-транзисторов.

  • Используя n-канального улучшения MOSFET

    Это потребовало бы, чтобы на выходе логической схемы, управляющей транзистором, было «НИЗКОЕ» напряжение напряжения питания (например, + 5 В) и «ВЫСОКОЕ» напряжение выше напряжения питания (например, + 10 В, когда на остальную цепь подается питание). с + 5V).

    Причина: напряжение заземления источника будет Vdd, когда MOSFET проводит. Напряжение затвора-источника должно быть положительным, поэтому напряжение между затвором и землей должно быть даже выше.

    Вам потребуются два источника напряжения - и схема, смещающая выход логической схемы с 0 ... + 5 В на + 5 В ... + 10 В ...

  • Использование n-канального истощения MOSFET

    К сожалению, я не могу рассказать вам много об этом решении. Тем не менее, я нашел страницу, использующую Google, в которой говорится, что истощающие МОП-транзисторы сложнее производить, чем улучшающие МОП-транзисторы, и по этой причине их избегают.

    Из силовой электроники (не микроэлектроники) я знаю, что описанный выше вариант с двумя источниками питания даже предпочтительнее полевых МОП-транзисторов. (Но я не могу сказать вам, почему.)

    РЕДАКТИРОВАТЬ Используя n-канальные МОП-транзисторы с истощением, вам, вероятно, потребуется отрицательное напряжение (например, -5 В), поэтому вам также понадобятся два напряжения питания ...


0

Есть также еще одно дополнительное преимущество, заключающееся в наличии общих линий передачи данных и подтягивающих линий (по сравнению с общими VCC и нисходящими линиями):

Даже если первоначальное намерение заключалось в том, чтобы подключать устройства на одной и той же печатной плате только на расстоянии нескольких дюймов, это было достаточно успешно, так что теперь нередко бывает, что в линиях есть пара футов и соединяющие «устройства», которые могут быть компьютерами или чем-то подобным сложность, с некоторыми устройствами, имеющими свои собственные источники питания (различного качества, скажем, вы подключаете что-то от розетки с питанием от батареи). Лучше, если соединение работает «хотя бы хорошо» даже в неидеальных и нестандартных условиях.

И многие из таких подключенных устройств могут быть как-то связаны и другими способами, тогда только через I2C-связь. Обычно, когда вы соединяете устройства вместе, вы подключаете его common ground- иногда как часть других функций, иногда просто потому, что он смонтирован на металлическом корпусе, а устройства тоже заземлены на корпус (или с обычным кулером или чем-то в этом роде) или могут быть экранированным кабелем с заземленным экраном внутри, который также соединяет заземление.

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

В таком случае между этими источниками питания, составляющими часть вольт, фактически происходит короткое замыкание, и в зависимости от источников (и сопротивления путей) могут протекать относительно большие токи, что приводит не только к потере энергии и повышению температуры, но, возможно, даже к повреждению ( или сокращение срока службы) некоторых из этих источников. Что не хорошо.

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


1
По сути, это то же самое, что и ответ Дейва Твида.
Янка

-2

Вам не нужно передавать столько энергии через чип, если он тянет вверх.

Поскольку чип ничего не ведет, он просто создает короткое замыкание, чтобы довести шину до 0, и делает открытие, чтобы довести его до 1.

Если бы он был отключен, вам пришлось бы подать питание через чип, чтобы подвести шину к 1. Если шина оказалась случайной короткой, это может быть большая мощность, которую вы проезжаете через этот чип, чтобы попытаться протолкнуть его. до 1.

Отказ от ответственности: я довольно паршивый EE на данный момент.


3
Добро пожаловать в EE.SE. « Вам не нужно передавать столько энергии через микросхему, если она подтягивается. » Если резисторы подтягивания и понижения имеют одинаковый размер, то токи будут одинаковыми. Подтягивание потребует, чтобы ток был получен от ведомого чипа и погружен в приводной чип. Понижение потребует, чтобы ток был получен от движущей микросхемы и погружен ведомой микросхемой. Случайное короткое замыкание может быть на V + или на землю.
Транзистор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.