Перейти к содержанию

Калькулятор подтягивающих резисторов I²C

Введите напряжение питания шины, режим скорости и ёмкость линии — калькулятор покажет допустимый диапазон подтягивающего резистора, предложит номинал из ряда E24 и проверит его по времени нарастания и току.

Исходные данные

В

обычно 3,3 или 5 В

Режим (максимальная частота SCL)
пФ

до 10 пФ на вывод каждого устройства плюс дорожки и провода

Результат

Рекомендуемый Rp
1,3 кОм
ряд E24, середина допустимого диапазона
Минимум Rp
967 Ом(3,3 В − 0,4 В) / 3 мА
Максимум Rp
1,77 кОм300 нс / (0,8473 · 200 пФ)
Подходят из ряда E24
1 кОм, 1,1 кОм, 1,2 кОм, 1,3 кОм, 1,5 кОм, 1,6 кОм
Время нарастания с 1,3 кОм
220 нснорма до 300 нс
Ток ключа при VOL = 0,4 В
2,2 мАдопустимо до 3 мА

Подтягивающий резистор I²C выбирают между двумя границами. Нижнюю задаёт ток, который выход устройства обязан принять, удерживая линию в нуле: Rp(min) = (VDD − VOL) / IOL. Верхнюю — время, за которое резистор успевает зарядить ёмкость линии: Rp(max) = tr / (0,8473 · Cb). Для шины 3,3 В и линии 100 пФ получается от 967 Ом до 11,8 кОм на 100 кГц и от 967 Ом до 3,54 кОм на 400 кГц; калькулятор предложит 3,3 кОм и 1,8 кОм.

Как пользоваться калькулятором

  1. Напряжение, к которому подтянуты SDA и SCL, от 1 до 15 В. Понимаются записи 3,3, 3.3 и 3V3.
  2. Режим — по частоте SCL, на которой работает шина: 100 кГц (Standard-mode), 400 кГц (Fast-mode) или 1 МГц (Fast-mode Plus). Режим должны поддерживать все устройства на шине.
  3. Ёмкость одной линии в пикофарадах: выводы всех микросхем, дорожки, разъёмы и провода вместе. По спецификации на вывод приходится до 10 пФ. Можно ввести и значение с приставкой, например 0,2 нФ.

В результате — рекомендуемый номинал, обе границы диапазона, все подходящие номиналы ряда и проверка рекомендуемого резистора: время нарастания фронта и ток через открытый ключ. Рекомендуемый номинал выбирается так: из значений ряда E24, попавших в диапазон, берётся ближайшее к среднему геометрическому границ — у него одинаковый запас «в разах» до минимума и до максимума. Если в диапазон не попал ни один номинал E24, калькулятор переходит к ряду E96. Введённые значения сохраняются в адресе страницы, поэтому расчётом можно поделиться: кнопка под калькулятором копирует результат вместе со ссылкой.

Если ёмкость заранее неизвестна, оцените её сверху, а на готовой плате измерьте. Осциллограф показывает время нарастания фронта между уровнями 0,3 и 0,7 от VDD, и ёмкость равна tr / (0,8473 · Rp). Фронт 210 нс при резисторах 2,2 кОм — это 113 пФ; с этим числом расчёт уже точный.

Открытый сток на шине I2C: монтажное И и RC-фронтСлева: линия подтянута к VDD резистором Rp, на неё нагружены ёмкость Cb и выходные транзисторы двух устройств. Справа: при открытии ключа линия падает в ноль быстро, а после закрытия поднимается по экспоненте; время нарастания между уровнями 0,3 VDD и 0,7 VDD равно 0,8473·Rp·Cb.VDDRpлиния SDA или SCLключ устр. 1ключ устр. 2CbVDD0,7 VDD0,3 VDD0ttr= 0,8473 · Rp · Cbключ открытключи закрыты:Cb заряжается через Rp
Обе границы на одной схеме: резистор Rp заряжает ёмкость линии Cb, а открытый ключ любого устройства принимает ток (VDD − VOL) / Rp.

Формулы

Rp(min)=VDD−VOL(max)IOL,Rp(max)=tr0,8473⋅Cb.R_{p(min)} = \frac{V_{DD} - V_{OL(max)}}{I_{OL}}, \qquad R_{p(max)} = \frac{t_r}{0{,}8473 \cdot C_b}.

Коэффициент 0,8473 — это ln⁡(7/3)\ln(7/3): столько постоянных времени RpCbR_p C_b занимает рост напряжения от 0,3 до 0,7 от VDD. Пределы trt_r, CbC_b и IOLI_{OL} зависят от режима; калькулятор берёт их из спецификации NXP UM10204:

РежимЧастота SCL, не большеВремя нарастания tr, не большеЁмкость линии Cb, не большеТок выхода IOL, не меньше
Standard-mode100 кГц1000 нс400 пФ3 мА при VOL = 0,4 В
Fast-mode400 кГц300 нс400 пФ3 мА при VOL = 0,4 В
Fast-mode Plus1 МГц120 нс550 пФ20 мА при VOL = 0,4 В
Питание до 2 В включительно, все режимы2 мА при VOL = 0,2·VDD

Нижняя строка таблицы — особый случай. При питании до 2 В включительно спецификация нормирует выходы Fast-mode и Fast-mode Plus иначе: низкий уровень не выше 0,2·VDD при токе 2 мА. Для Standard-mode отдельной нормы нет, поэтому калькулятор применяет эти числа ко всем трём режимам.

Проверка выбранного резистора — те же формулы, развёрнутые в обратную сторону:

tr=0,8473⋅Rp⋅Cb,I=VDD−VOL(max)Rp.t_r = 0{,}8473 \cdot R_p \cdot C_b, \qquad I = \frac{V_{DD} - V_{OL(max)}}{R_p}.

Пример расчёта: 3,3 В, 400 кГц, 100 пФ

  1. Нижняя граница: (3,3 − 0,4) В / 3 мА = 967 Ом.
  2. Верхняя граница: 300 нс / (0,8473 · 100 пФ) = 3,54 кОм.
  3. В диапазон попадают 13 номиналов ряда E24, от 1 до 3,3 кОм. Среднее геометрическое границ — √(967 · 3541) ≈ 1,85 кОм, ближайший номинал — 1,8 кОм.
  4. Проверка: фронт 0,8473 · 1,8 кОм · 100 пФ = 153 нс при норме 300 нс, ток ключа (3,3 − 0,4) В / 1,8 кОм = 1,6 мА при допустимых 3 мА.

Рекомендуемый номинал — не единственно верный. Резисторы 2,2 кОм, которые чаще оказываются под рукой, тоже проходят: фронт 186 нс, ток 1,3 мА. А 4,7 кОм — уже нет: фронт 398 нс длиннее нормы.

Готовые значения

Жирным выделен номинал, который предложит калькулятор, под ним — допустимый диапазон.

VDDЁмкость линииStandard-mode100 кГцFast-mode400 кГцFast-mode Plus1 МГц
1,8 В50 пФ4,3 кОм720 Ом – 23,6 кОм2,2 кОм720 Ом – 7,08 кОм1,5 кОм720 Ом – 2,83 кОм
100 пФ3 кОм720 Ом – 11,8 кОм1,6 кОм720 Ом – 3,54 кОм1 кОм720 Ом – 1,42 кОм
200 пФ2 кОм720 Ом – 5,9 кОм1,1 кОм720 Ом – 1,77 кОмнет решенияминимум 720 Ом больше максимума 708 Ом
400 пФ1,5 кОм720 Ом – 2,95 кОм820 Ом720 Ом – 885 Омнет решенияминимум 720 Ом больше максимума 354 Ом
3,3 В50 пФ4,7 кОм967 Ом – 23,6 кОм2,7 кОм967 Ом – 7,08 кОм620 Ом145 Ом – 2,83 кОм
100 пФ3,3 кОм967 Ом – 11,8 кОм1,8 кОм967 Ом – 3,54 кОм470 Ом145 Ом – 1,42 кОм
200 пФ2,4 кОм967 Ом – 5,9 кОм1,3 кОм967 Ом – 1,77 кОм330 Ом145 Ом – 708 Ом
400 пФ1,6 кОм967 Ом – 2,95 кОмнет решенияминимум 967 Ом больше максимума 885 Ом220 Ом145 Ом – 354 Ом
5 В50 пФ6,2 кОм1,53 кОм – 23,6 кОм3,3 кОм1,53 кОм – 7,08 кОм820 Ом230 Ом – 2,83 кОм
100 пФ4,3 кОм1,53 кОм – 11,8 кОм2,4 кОм1,53 кОм – 3,54 кОм560 Ом230 Ом – 1,42 кОм
200 пФ3 кОм1,53 кОм – 5,9 кОм1,6 кОм1,53 кОм – 1,77 кОм390 Ом230 Ом – 708 Ом
400 пФ2,2 кОм1,53 кОм – 2,95 кОмнет решенияминимум 1,53 кОм больше максимума 885 Ом300 Ом230 Ом – 354 Ом

Как читать таблицу:

  • Fast-mode Plus. Столбец рассчитан на шину, где все устройства относятся к Fast-mode Plus и принимают 20 мА. Если на шине есть хотя бы одна микросхема Standard- или Fast-mode, нижняя граница — как в её столбце.
  • 1,8 В. Нижняя граница во всех режимах одна: (1,8 − 0,36) В / 2 мА = 720 Ом. Запас Fast-mode Plus по току здесь не используется, поэтому при ёмкости 200 пФ и больше резистор для него не подбирается.
  • «Нет решения». Минимум по току оказался больше максимума по времени нарастания. Для Fast-mode при 400 пФ это ожидаемо: при ёмкости от 200 до 400 пФ спецификация предлагает вместо резистора источник тока не больше 3 мА или коммутируемую подтяжку. Другие выходы — снизить ёмкость, разделить шину буфером или мультиплексором, уменьшить частоту.

Обратная задача — резисторы уже стоят на плате или на модулях, и нужно понять, что они допускают:

RpТок ключа при VOL = 0,4 ВЁмкость линии, не больше
VDD = 3,3 ВVDD = 5 В100 кГц400 кГц1 МГц
470 Ом6,17 мАтолько Fm+9,79 мАтолько Fm+400 пФпредел режима400 пФпредел режима301 пФ
680 Ом4,26 мАтолько Fm+6,76 мАтолько Fm+400 пФпредел режима400 пФпредел режима208 пФ
1 кОм2,9 мА4,6 мАтолько Fm+400 пФпредел режима354 пФ142 пФ
1,5 кОм1,93 мА3,07 мАтолько Fm+400 пФпредел режима236 пФ94,4 пФ
2,2 кОм1,32 мА2,09 мА400 пФпредел режима161 пФ64,4 пФ
3,3 кОм0,879 мА1,39 мА358 пФ107 пФ42,9 пФ
4,7 кОм0,617 мА0,979 мА251 пФ75,3 пФ30,1 пФ
10 кОм0,29 мА0,46 мА118 пФ35,4 пФ14,2 пФ

Ток посчитан для напряжения низкого уровня 0,4 В. Пометка «только Fm+» означает ток больше 3 мА: выходы Standard- и Fast-mode на него не рассчитаны. «Предел режима» — резистор справился бы и с большей ёмкостью, но спецификация ограничивает линию 400 пФ, а в Fast-mode Plus — 550 пФ.

Типичные ошибки

  • В расчёт взят один резистор, а на линии их несколько. Калькулятор считает общее сопротивление подтяжки линии. Резисторы модулей включены параллельно: модуль с 4,7 кОм и два модуля с 10 кОм дают 2,42 кОм, и на 400 кГц такая подтяжка тянет уже 146 пФ, а не 75 пФ, как одиночные 4,7 кОм. Обратная сторона — перегрузка выходов, когда модулей много; она разобрана в статье об I²C.
  • Ёмкость посчитана по одной микросхеме. В формулу входит полная ёмкость линии: все выводы, дорожки, разъёмы и провода.
  • Забыты последовательные резисторы. Защитные резисторы в разрыв линии — спецификация приводит в пример 300 Ом — нужно учитывать и в расчёте подтяжки, и в допустимой ёмкости.
  • Подтяжка выбрана у самой верхней границы. Ёмкость почти всегда известна приблизительно, и запас по фронту исчезает первым. К верхней границе стоит сдвигаться, только когда важен ток потребления, — так советует и спецификация для портативных устройств.
  • Напряжение подтяжки выше, чем выдерживают входы. По UM10204 высокий уровень на входах SDA и SCL — не больше VDD + 0,5 В и не больше 5,5 В. Шину с микросхемами на 3,3 В нельзя подтягивать к 5 В, если их входы на это не рассчитаны.
  • Встроенные подтяжки микроконтроллера вместо внешних. Их сопротивление возьмите из даташита и подставьте в формулу ёмкости. Если это десятки килоом, допустимая ёмкость линии даже на 100 кГц — считаные десятки пикофарад: 59 пФ для 20 кОм.

Откуда берётся коэффициент 0,8473, как оценить ёмкость линии до изготовления платы и что делать, когда резистор не подбирается, — в разделе «Расчёт подтягивающих резисторов I²C» статьи о шине.

Частые вопросы

Какие подтягивающие резисторы ставить на I2C при 3,3 В?

Для линии около 100 пФ: 3,3 кОм на 100 кГц (допустимо от 967 Ом до 11,8 кОм) и 1,8 кОм на 400 кГц (от 967 Ом до 3,54 кОм). Привычные 4,7 кОм подходят для 100 кГц при ёмкости линии до 251 пФ, а на 400 кГц — только до 75 пФ; 2,2 кОм на 400 кГц тянут до 161 пФ. Если ёмкость неизвестна, измерьте фронт осциллографом и пересчитайте.

Подойдут ли 10 кОм для I2C?

Только для медленной и короткой шины. На 100 кГц резистор 10 кОм укладывается в норму времени нарастания 1000 нс, пока ёмкость линии не больше 118 пФ, на 400 кГц — не больше 35 пФ, а это пара микросхем на небольшой плате. При большей ёмкости фронт затягивается, и уровень не успевает дойти до порога единицы.

Почему нельзя поставить резистор поменьше, например 470 Ом?

Чем меньше резистор, тем больший ток принимает выход, удерживая линию в нуле. При 3,3 В и 470 Ом это (3,3 − 0,4) / 470 = 6,2 мА, а выходы Standard- и Fast-mode рассчитаны на 3 мА: напряжение низкого уровня может подняться выше 0,4 В. Минимум для них — 967 Ом при 3,3 В и 1,53 кОм при 5 В. Резисторы в сотни ом допустимы только на шине, где все устройства — Fast-mode Plus с током выхода 20 мА.

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

Резисторы всех модулей на одной линии включены параллельно, и в расчёт идёт их общее сопротивление. Модуль с 4,7 кОм и два модуля с 10 кОм дают 2,42 кОм. Сравните это число с диапазоном в калькуляторе: если оно ниже минимума, лишние резисторы выпаивают, если выше максимума — добавляют ещё один резистор параллельно.

Какие резисторы нужны для шины I2C на 1,8 В?

При питании до 2 В спецификация гарантирует низкий уровень не выше 0,2·VDD при токе 2 мА, поэтому минимум — (1,8 − 0,36) В / 2 мА = 720 Ом. Верхняя граница от напряжения не зависит: для линии 100 пФ это 11,8 кОм на 100 кГц и 3,54 кОм на 400 кГц. Калькулятор предложит 3 кОм и 1,6 кОм.

Нужны ли разные резисторы на SDA и SCL?

Формально каждая линия считается отдельно, по своей ёмкости. На практике SDA и SCL идут рядом к одним и тем же микросхемам, их ёмкости близки, поэтому ставят два одинаковых резистора, рассчитанных по большей из двух ёмкостей.

Источники

  1. NXP Semiconductors. UM10204: I2C-bus specification and user manual, Rev. 7.0, 1 October 2021 — п. 7.1 — формулы Rp(min) и Rp(max), коэффициент 0,8473; табл. 10 — VOL, IOL и ёмкость вывода; табл. 11 — время нарастания и ёмкость линии; п. 5.1 — источник тока при 200–400 пФ; п. 7.2 — что делать при большой ёмкости; п. 7.3 — последовательные резисторы
  2. Texas Instruments. SLVA689: I2C Bus Pullup Resistor Calculation (R. Arora, 2015) — тот же расчёт с примером для 3,3 В, Fast-mode и 200 пФ
Встроить калькулятор на свой сайт

Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах

<iframe src="https://gaw.ru/embed/i2c-pullup/" title="Калькулятор подтягивающих резисторов I²C" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/i2c-pullup/">Калькулятор подтягивающих резисторов I²C</a> — GAW.ru</p>
Автоподстройка высоты рамки

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

<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>

Обновлено . Нашли ошибку в расчёте? Напишите нам.