Калькулятор резисторов I²C

Укажите параметры линии и допустимое время нарастания.

Питание шины Vcc
В
Наибольшее выходное напряжение низкого уровня при указанном токе IOL. В модели оно не выше 30% питания.
В
Ток, при котором выход гарантирует заданный VOL. Возьмите ограничивающее устройство на этой линии, не абсолютный максимум тока вывода.
мА
Сумма ёмкостей проводников, разъёмов и входов для одной линии SDA или SCL.
пФ
Длительность нарастания от 30% до 70% питания. Задайте допустимое время для своей линии.
нс

Диапазон Rp (кОм)

0,9667–1,77

Читайте объяснение ниже

Как подобрать подтяжку для линии I²C

Две небольшие платы с соединительными проводами и отдельная пара подтягивающих резисторов

Подтягивающий резистор возвращает линию I²C к высокому уровню, когда все выходы с открытым стоком отпущены. Маленькое сопротивление быстрее заряжает ёмкость линии, но требует большего тока при передаче нуля. Большое уменьшает ток, зато замедляет фронт. Калькулятор находит диапазон между этими двумя ограничениями для одной линии SDA или SCL.

Первый подбор для питания 3,3 В. Пусть выход гарантирует низкий уровень не выше 0,4 В при токе 3 мА, ёмкость линии составляет 200 пФ, а допустимый фронт от 30% до 70% питания равен 300 нс. Получается диапазон от 0,967 до 1,770 кОм. Например, резистор 1,5 кОм с допуском ±5% имеет границы 1,425 и 1,575 кОм: обе лежат внутри расчётного интервала при этих исходных данных.

Результат относится к эквивалентному сопротивлению всей пассивной подтяжки. Если резисторы уже установлены на нескольких модулях, номинал добавляемой детали не равен итоговому сопротивлению. SDA и SCL проверяют отдельно: у них могут различаться ёмкости, подключённые устройства и ограничения выходов. Одинаковые резисторы на двух линиях допустимы только тогда, когда подходят обеим.

Откуда берутся нижняя и верхняя границы

Rmin⁡=Vcc−VOLIOLRmax⁡=trln⁡(7/3) Cb\begin{aligned}R_{\min}&=\frac{V_{\mathrm{cc}}-V_{\mathrm{OL}}}{I_{\mathrm{OL}}}\\R_{\max}&=\frac{t_r}{\ln(7/3)\,C_b}\end{aligned}

Нижняя граница Rmin ограничивает ток выхода. Из напряжения питания Vcc вычитается допустимый низкий уровень VOL, а разность делится на гарантированный ток IOL. Подставлять абсолютный максимальный ток вывода сюда нельзя: он не обещает нужного напряжения при нормальной работе. Нужна связанная пара VOL и IOL из электрических характеристик устройства.

Верхняя граница Rmax ограничивает скорость зарядки ёмкости Cb через резистор. Для обычной RC-цепи переход от 30% до 70% питания длится ln(7/3)·R·C, приблизительно 0,8473·R·C. Калькулятор использует полный логарифм. Учитывается именно этот участок нарастания, а не время от полного нуля до окончательно установившегося напряжения.

Форма принимает вольты, миллиамперы, пикофарады и наносекунды; обе границы выводятся в килоомах. Для нижней границы вольт, делённый на миллиампер, уже даёт килоом. Для верхней отношение наносекунд к пикофарадам также даёт килоомы. Если считать вручную в основных единицах, ток переводят в амперы, ёмкость в фарады, время в секунды и получают омы.

Модель предполагает пассивную резистивную подтяжку и суммарную сосредоточенную ёмкость. Низкий уровень должен быть не выше 30% питания, чтобы линия начинала фронт до нижнего измерительного порога. Активные ускорители фронта, источники тока и буферы с особой логикой требуют собственной модели. Общий расчёт достижения заданного уровня есть в калькуляторе времени заряда конденсатора.

Что меняется вместе с ёмкостью, током и питанием

После сокращения проводов. Если в исходном примере уменьшить ёмкость с 200 до 100 пФ, верхняя граница удвоится до 3,541 кОм. Нижняя останется 0,967 кОм. Появляется больше свободы в выборе сопротивления, поскольку выход тратит меньше времени на заряд линии. Сокращение длины проводов полезно не само по себе, а через уменьшение реальной нагрузки и улучшение формы сигнала.

После подключения дополнительного модуля. При ёмкости 400 пФ верхняя граница снизится до 0,885 кОм. По току по-прежнему требуется не менее 0,967 кОм. Общего диапазона нет: любой резистор нарушит хотя бы одно из введённых условий. Покупка ближайшего номинала не исправляет противоречие. Нужно уменьшать ёмкость, менять допустимое время фронта или выбирать устройства с подходящими выходными характеристиками.

Более сильный выход. Если каждое устройство, способное удерживать эту линию в нуле, гарантирует 0,4 В уже при 6 мА, нижняя граница для питания 3,3 В уменьшится до 0,483 кОм. Верхняя при 200 пФ и 300 нс останется 1,770 кОм. Одного более сильного контроллера недостаточно: слабый выход другого участника всё ещё может ограничивать всю линию.

Переход к питанию 5 В. При прежних VOL 0,4 В и IOL 3 мА минимум возрастёт до 1,533 кОм. Максимум останется 1,770 кОм, потому что RC-формула использует относительные уровни 30% и 70%. Интервал стал узким. Этот пример сравнивает числа и не подтверждает, что подключённые входы выдерживают 5 В; совместимость питания проверяют отдельно.

Более мягкое требование к фронту. При допустимых 1000 нс, ёмкости 200 пФ и остальных исходных значениях верхняя граница составит 5,901 кОм. Это расширяет выбор только если такое время действительно разрешено для используемой линии. Нельзя произвольно увеличить поле, чтобы получить удобный номинал, а затем оставить прежний режим обмена без проверки его временных требований.

Как использовать интервал на реальной плате

В Cb входят проводники платы, кабель, разъёмы и входные ёмкости всех подключённых устройств. Для проверки худшего случая берут обоснованную верхнюю оценку, а не только типовое значение одного входа. Если точных данных нет, измерение фронта осциллографом помогает проверить собранную линию. Сам щуп тоже добавляет ёмкость, особенно заметную на короткой малонагруженной шине.

Для нижней границы используют наибольшее питание в рассматриваемом режиме и ограничивающую пару VOL/IOL среди выходов. Для верхней важны наибольшая ёмкость и допустимый фронт. Допуски резистора проверяют по обоим концам: его минимальное сопротивление не должно опускаться ниже Rmin, а максимальное не должно превышать Rmax. Совпадение границ оставляет единственную математическую точку без запаса на допуск.

Параллельные подтяжки складываются по проводимости. Два резистора по 4,7 кОм дают 2,35 кОм, три таких резистора дают приблизительно 1,567 кОм. Проверить другие сочетания можно в калькуляторе соединения резисторов. Удаление одного резистора меняет эквивалент всей линии, поэтому после изменения набора модулей расчёт полезно повторить.

Частоту тактового сигнала не подставляют вместо времени фронта. Период и длительность перехода между уровнями описывают разные свойства. Здесь нет пересчёта частоты в универсальный номинал и нет оценки ошибок адресации. Для другого распространённого последовательного интерфейса используется отдельный калькулятор скорости UART: он проверяет делитель и отклонение скорости, а не подтяжку I²C.

Подтяжки модулей и проверка линии

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

Можно ли обойтись внутренней подтяжкой микроконтроллера?

Только если её фактический диапазон сопротивлений и остальные свойства подходят вашей линии. Встроенная подтяжка нередко задаётся широким диапазоном, а не точным номиналом. Для фронта проверяют её наибольшее сопротивление, для тока – наименьшее. Одного факта включения внутреннего резистора в программе недостаточно для подтверждения требуемых уровней и времени перехода.

Почему нельзя взять максимальный ток вывода из absolute maximum ratings?

Абсолютные предельные значения описывают границы, выход за которые может повредить компонент. Они не гарантируют требуемый низкий уровень при длительной работе. Для IOL нужна электрическая характеристика выхода с указанным VOL и применимыми условиями питания и температуры. Если такой пары нет, калькулятор не может восстановить её по одному допустимому току.

Учитывает ли калькулятор уже припаянные резисторы модулей?

Автоматически нет. Результат задаёт допустимое эквивалентное сопротивление, а состав подключённых модулей вводом не описывается. Например, два модуля с подтяжками по 10 кОм создают 5 кОм. Если добавить ещё 10 кОм, получится около 3,333 кОм. Сначала определите полную параллельную комбинацию, затем сравните её с найденными границами.

Можно ли сложить гарантированные токи нескольких устройств?

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

Осциллограф измеряет фронт 10–90%. Подойдёт это число?

Напрямую нет: в форме нужен переход 30–70%. Для идеальной RC-экспоненты длительность 10–90% равна ln(9)·RC, а 30–70% равна ln(7/3)·RC. Их отношение примерно 0,386. Такое преобразование допустимо лишь при подходящей форме сигнала; для реальной линии удобнее настроить пороги измерения непосредственно на 30% и 70% питания.

Подходит ли одна подтяжка устройствам с разным питанием?

Ответ зависит от допустимых напряжений входов, порогов логических уровней и схемы соединения. Само по себе подходящее сопротивление не обеспечивает согласование уровней. Если используется преобразователь или буфер, его стороны могут иметь отдельные подтяжки и ёмкости. Рассматривайте каждую сторону по документации этого устройства, не объединяя автоматически её параметры с другой стороной.

Почему после подбора сопротивления обмен всё равно не работает?

Расчёт проверяет только две электрические границы пассивной RC-модели. Он не обнаруживает неверный адрес, отсутствие общей земли, конфликт настроек, задержки программного обеспечения или неисправный участник. Посмотрите реальные уровни и фронты, наличие тактов и подтверждения приёма. Если электрические условия выполнены, искать следующую причину нужно в последовательности обмена и подключении устройств.

Похожие калькуляторы

Возможно вам пригодятся ещё несколько калькуляторов по данной теме:

Есть что добавить?

Напишите своё мнение, комментарий или предложение.