Подтягивающий резистор 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 кОм.
Как пользоваться калькулятором
- Напряжение, к которому подтянуты SDA и SCL, от 1 до 15 В. Понимаются записи 3,3, 3.3 и 3V3.
- Режим — по частоте SCL, на которой работает шина: 100 кГц (Standard-mode), 400 кГц (Fast-mode) или 1 МГц (Fast-mode Plus). Режим должны поддерживать все устройства на шине.
- Ёмкость одной линии в пикофарадах: выводы всех микросхем, дорожки, разъёмы и провода вместе. По спецификации на вывод приходится до 10 пФ. Можно ввести и значение с приставкой, например 0,2 нФ.
В результате — рекомендуемый номинал, обе границы диапазона, все подходящие номиналы ряда и проверка рекомендуемого резистора: время нарастания фронта и ток через открытый ключ. Рекомендуемый номинал выбирается так: из значений ряда E24, попавших в диапазон, берётся ближайшее к среднему геометрическому границ — у него одинаковый запас «в разах» до минимума и до максимума. Если в диапазон не попал ни один номинал E24, калькулятор переходит к ряду E96. Введённые значения сохраняются в адресе страницы, поэтому расчётом можно поделиться: кнопка под калькулятором копирует результат вместе со ссылкой.
Если ёмкость заранее неизвестна, оцените её сверху, а на готовой плате измерьте. Осциллограф показывает время нарастания фронта между уровнями 0,3 и 0,7 от VDD, и ёмкость равна tr / (0,8473 · Rp). Фронт 210 нс при резисторах 2,2 кОм — это 113 пФ; с этим числом расчёт уже точный.
Формулы
Коэффициент 0,8473 — это : столько постоянных времени занимает рост напряжения от 0,3 до 0,7 от VDD. Пределы , и зависят от режима; калькулятор берёт их из спецификации NXP UM10204:
| Режим | Частота SCL, не больше | Время нарастания tr, не больше | Ёмкость линии Cb, не больше | Ток выхода IOL, не меньше |
|---|---|---|---|---|
| Standard-mode | 100 кГц | 1000 нс | 400 пФ | 3 мА при VOL = 0,4 В |
| Fast-mode | 400 кГц | 300 нс | 400 пФ | 3 мА при VOL = 0,4 В |
| Fast-mode Plus | 1 МГц | 120 нс | 550 пФ | 20 мА при VOL = 0,4 В |
| Питание до 2 В включительно, все режимы | 2 мА при VOL = 0,2·VDD | |||
Нижняя строка таблицы — особый случай. При питании до 2 В включительно спецификация нормирует выходы Fast-mode и Fast-mode Plus иначе: низкий уровень не выше 0,2·VDD при токе 2 мА. Для Standard-mode отдельной нормы нет, поэтому калькулятор применяет эти числа ко всем трём режимам.
Проверка выбранного резистора — те же формулы, развёрнутые в обратную сторону:
Пример расчёта: 3,3 В, 400 кГц, 100 пФ
- Нижняя граница: (3,3 − 0,4) В / 3 мА = 967 Ом.
- Верхняя граница: 300 нс / (0,8473 · 100 пФ) = 3,54 кОм.
- В диапазон попадают 13 номиналов ряда E24, от 1 до 3,3 кОм. Среднее геометрическое границ — √(967 · 3541) ≈ 1,85 кОм, ближайший номинал — 1,8 кОм.
- Проверка: фронт 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 идут рядом к одним и тем же микросхемам, их ёмкости близки, поэтому ставят два одинаковых резистора, рассчитанных по большей из двух ёмкостей.
Источники
- 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 — последовательные резисторы
- 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>Обновлено . Нашли ошибку в расчёте? Напишите нам.