Подтягивающий резистор на линиях передачи данных — важный элемент, обеспечивающий корректную работу интерфейсов I2C, SPI, UART. Его задача — подтянуть линию к логической «1» в отсутствие активных сигналов. Неправильно подобранное сопротивление может привести к сбоям, медленным фронтам сигнала или даже перегрузке источника питания. Предлагаемый калькулятор поможет точно рассчитать оптимальное значение резистора, учитывая длину провода, паразитную ёмкость и частоту сигнала.
Что считает программа
- Общую ёмкость линии (включая длину провода).
- Рекомендуемое сопротивление подтягивающего резистора.
- Ближайший стандартный номинал резистора.
- График зависимости времени нарастания сигнала от сопротивления.
Как пользоваться
- Выберите тип интерфейса: I2C, SPI или UART.
- Задайте частоту сигнала (Гц).
- Укажите паразитную ёмкость линии (в пФ).
- Укажите длину провода (в см) — учитывается добавочная ёмкость.
- Смотрите результат и график времени фронта сигнала для разных номиналов резисторов.
Каждая линия передачи данных обладает паразитной ёмкостью — от проводников, дорожек, разъёмов и даже воздуха. Чем выше ёмкость, тем медленнее сигнал переходит из состояния «0» в «1», особенно при высоких сопротивлениях подтяжки. В интерфейсах типа I2C или UART важно, чтобы фронт сигнала успевал достичь логического уровня до момента следующего переключения. SPI обычно менее чувствителен, но тоже зависит от нагрузки линии.

Формулы расчёта
1. Общая ёмкость линии:
\[
C_{общ} = C_{ввод} + L \times 5\, \text{пФ}
\]
где:
- L — длина линии в сантиметрах,
- Cввод — паразитная ёмкость входа (пФ),
- 5 пФ/см — типичная ёмкость провода на сантиметр.
2. Максимально допустимое время фронта (\(\tau_{макс}\)) для интерфейса:
- I2C: \(\tau_{макс} = 0{,}3\, \mu s\)
- SPI: \(\tau_{макс} = 0{,}05\, \mu s\)
- UART: \(\tau_{макс} = \frac{1}{10f}\), где \(f\) — частота в герцах
3. Рекомендуемое сопротивление подтягивающего резистора \(R\):
\[
R = \frac{\tau_{макс}}{C_{общ}}
\]
где ёмкость \(C_{общ}\) переведена в фарады (\(1\, \text{пФ} = 10^{-12}\, \text{Ф}\)).
Рекомендации
- Для I2C чаще всего используют 2,2 — 10 кОм, но при большой длине и ёмкости стоит уменьшать сопротивление.
- Для UART важна только скорость фронта — в пределах долей бита.
- Для SPI обычно не требуется подтягивающий резистор, но при длинных проводах он может улучшить фронт сигнала.
👉 Если резистор будет слишком мал, он увеличит ток при логическом «0», перегружая открытые коллекторы (например, в I2C). Если слишком велик — сигнал не успеет подняться до уровня логической «1» между переключениями.
Справочная таблица по подтягивающим резисторам
| Интерфейс | Макс. время фронта, мкс | Частота, Гц | Резистор, Ом | Особенности |
|---|---|---|---|---|
| I2C | 0,3 | 100 кГц – 400 кГц | 1 кОм – 10 кОм | Двунаправленный открытый сток, чувствителен к ёмкости линии |
| SPI | 0,05 | до 10 МГц | 100 – 470 Ом | Полнодуплексный, подтягивающие резисторы не всегда обязательны |
| UART | \(\frac{1}{10f}\) | от 9600 до 1 Мбод | 220 – 330 Ом | Асинхронный, подтягивание линии RX желательно |
График под калькулятором показывает время нарастания сигнала (в микросекундах) для разных стандартных номиналов резисторов, чтобы визуально оценить влияние выбора. Подробнее про подбор и расшифровку номиналов резисторов можно прочитать здесь.







