I²C のプルアップ抵抗は、下限と上限の間で選ぶ

4.7kΩ は 5V・100kHz・小さなバスでの経験値で、3.3V・400kHz でモジュールを 5 つつなぎケーブルを 30cm 伸ばすと間に合いません。抵抗には下限と上限があり、どちらも計算で決められます。

最終更新: 2026-10-30 I²Cプルアップ抵抗オープンドレインバス容量

オープンドレインだから、抵抗が立ち上がりを決める

I²C の SDA と SCL はオープンドレイン出力で、デバイスは線を Low に引くことしかできません。High に戻すのはプルアップ抵抗で、Rp がバス容量 Cb を充電するので、立ち上がりは時定数 Rp·Cb で決まります。抵抗が小さいほど立ち上がりは速く、Low に引く電流は増えます。

以下の主な計算例は、VDD=3.3V、VOL=0.4VでIOL=3mAを使うStandard/Fast-modeの抵抗プルアップです。30〜70%立ち上がり時間の上限はStandard-modeで1000ns、Fast-modeで300ns、Fast-mode Plusで120nsです。バス容量上限はStandard/Fastで400pF、Fast-mode Plusで550pFと異なり、各ICの電圧条件と駆動能力も確認します。

プルアップ抵抗が信号の立ち上がりを支えるイメージ
プルアップ抵抗が信号の立ち上がりを支えるイメージ。概念を表すAI生成イラストです。実際の回路・条件は本文の図と説明を参照してください。
オープンドレインのバスで、High に戻すときと Low に引くときの電流左は High に戻すとき。デバイスの MOSFET は OFF で、VDD から Rp を通る電流がバス容量 Cb を充電する。右は Low に引くとき。MOSFET が ON になり、VDD から Rp を通る電流をデバイスがグラウンドへ引く。 オープンドレインのバスには、電流の流れが 2 つある デバイスは Low に引くだけ。High に戻すのはプルアップ抵抗 High に戻すとき VDD Rp SDA/SCL Cb OFF Rp が Cb を充電する 立ち上がりは時定数 Rp·Cb で決まる 上限:立ち上がり時間 Low に引くとき VDD Rp SDA/SCL Cb ON デバイスが電流を引く 流れる電流は (VDD − VOL) ÷ Rp 下限:シンク電流 3mA
図1:Low では Rp から流れ込む電流をデバイスが引き、High に戻すときは Rp が Cb を充電する。

下限:3mA で 0.4V 以下に引けるか

デバイスが線を Low に引くとき、プルアップから流れ込む電流は (VDD − VOL) ÷ Rp です。これが規格のシンク電流 3mA を超えると、VOL を 0.4V 以下に保証できません。

Rp(min) = (VDD − 0.4V) ÷ 3mA。VDD = 3.3V なら 967Ω、5V なら 1.53kΩ で、これより小さい抵抗は使えません。Fast mode Plus 対応のデバイスは 20mA まで引けるので、3.3V で 145Ω まで下げられます。3mA 引けないデバイスがあれば、その IOL で計算し直します。

上限:立ち上がり時間に間に合うか

RC 充電で 30% から 70% まで上がる時間は tr = Rp · Cb · ln(0.7 ÷ 0.3) ≒ 0.847 · Rp · Cb です。規格の上限から、Rp(max) = tr(max) ÷ (0.847 · Cb)。

バス容量が 100pF なら、Standard mode(1000ns)で 11.8kΩ、Fast mode(300ns)で 3.5kΩ、Fast mode Plus(120ns)で 1.4kΩ が上限です。3.3V・Fast mode で 4.7kΩ を使うと、100pF で既に上限を超えています。4.7kΩ で間に合うのは、Standard mode で 250pF 程度、Fast mode で 75pF 程度までです。

プルアップ抵抗の違いによる立ち上がりと、30%→70% の時間バス容量 100pF での立ち上がり。Rp = 3.5kΩ の曲線は 30%→70% が Fast mode の上限 300ns に収まり、Rp = 4.7kΩ の曲線は収まらない。 立ち上がりは、30%→70% の時間で測る Fast mode の上限は 300ns。Rp が大きいと間に合わない VDD 30% 70% 上限 300ns(Fast mode) 300ns を超える Rp = 3.5kΩ Rp = 4.7kΩ Cb = 100pF tr = 0.847 · Rp · Cb 3.3V・Fast mode・100pF では、4.7kΩ は上限を超える。
図2:100pF で Rp = 3.5kΩ なら 30%→70% が 300ns に収まり、4.7kΩ では収まらない。

バス容量の見積もりと、成立する範囲

バス容量は、デバイスのピン容量(規格上 10pF 以下、実際は 5〜10pF)、基板配線(0.5〜1pF/cm)、ケーブル(50〜100pF/m)の合計です。デバイス 5 個、配線 20cm、ケーブル 30cm なら 50 + 15 + 25 = 90pF 程度で、ESD 保護ダイオードは 1 個あたり数 pF です。

3.3V・Fast mode で成立する範囲は、100pF で 0.97k〜3.5kΩ、200pF で 0.97k〜1.8kΩ です。400pF は上限(0.9kΩ)が下限(0.97kΩ)を下回り、成立しません。200pF 以下に抑えるか、バスを分割するか、バッファ IC を入れます。 ここで400pFが成立しないという判断は、3.3V・3mA・300ns・単純な抵抗プルアップという仮定に限ります。

I²C プルアップ抵抗の下限と上限横軸バス容量 20〜400pF、縦軸抵抗値 100Ω〜30kΩ の両対数グラフ。下限 967Ω の水平線と、Standard・Fast・Fast mode Plus それぞれの上限曲線を描き、Fast mode の成立領域を塗る。4.7kΩ の位置も示す。 抵抗値は、下限の水平線と上限の曲線の間で選ぶ VDD=3.3V。下限は3mAの例(Fast+の20mA条件とは別) 20pF50pF100pF200pF400pF 100Ω1kΩ10kΩ プルアップ抵抗 Rp バス容量 Cb Standard(1000ns) Fast(300ns) Fast+(120ns) 下限 967Ω(3mA で 0.4V) 4.7kΩ Fast mode で成立 4.7kΩ は Standard mode なら 250pF 程度まで、 Fast mode では 75pF 程度が限界。 Fast mode・100pF なら 上限 3.5kΩ。余裕を見て 1.5〜2.2kΩ を選ぶ。 400pF は Fast mode では上限が下限を割る。 バスを分けるかバッファを入れる。
図3:3.3V での成立範囲。下限は 3mA で決まる水平線、上限はバス容量とともに下がる曲線。緑は Fast mode で成立する領域。

範囲の中でどこを選ぶか

上下限の間にあることは抵抗と容量の条件を満たすという意味で、通信全体の保証ではありません。電圧レベル、クロックのHigh/Low期間、変換回路、全デバイスの仕様も確認します。抵抗を小さくすると充電は速くなりますが、Low時の電流が増えるため、許容差を含めた下限を割らないことが条件です。

上限の一定割合を機械的に選ぶより、次の例のように抵抗最大・容量最大の立ち上がりと、抵抗最小・電源最大の電流を別々に検算します。余裕がなくなった側に応じて容量低減・抵抗変更・速度低下を選びます。

抵抗の許容差と、モジュールの並列抵抗を含める

Fast-mode、3.3V、100pF、IOL=3mA、VOL=0.4Vなら、公称計算の範囲は約967Ω〜3.54kΩです。2.2kΩ±5%を1本なら2.09〜2.31kΩで、最悪立ち上がりは0.8473 × 2.31kΩ × 100pF ≈ 196nsです。容量が150pFになると約294nsになり、300nsにほとんど余裕がありません。 200pFなら約391nsで、この抵抗では上限を超えます。

4.7kΩ±5%のプルアップが5枚のモジュールに付いていると、並列値は893〜987Ωです。最小値893Ωでは(3.3 − 0.4) ÷ 893 ≈ 3.25mAとなり、仮定した3mA条件を外れます。追加する抵抗だけでなく全抵抗の並列値を使い、最大電源・抵抗最小でLow側、抵抗最大・容量最大で立ち上がり側を確認します。

実機で引っかかるところ

  • モジュールの内蔵プルアップ。多くは 4.7kΩ や 10kΩ を載せており、5 個つなぐと 4.7kΩ が 5 並列で 940Ω になり、下限を割ります。外すか、マイコン側を省きます。
  • マイコンの内蔵プルアップ。20〜50kΩ では I²C に弱すぎ、400kHz では間に合いません。外付けにします。
  • レベル変換。3.3V と 5V が混在する MOSFET 方式(NXP AN10441)は、両側にプルアップが要り、それぞれの電圧で下限・上限を計算します。
  • SCL のストレッチ。スレーブがクロックを引き伸ばすなら SCL もオープンドレインにします。プッシュプルのマスタと衝突します。

よくある質問

結局、3.3V なら何 kΩ を使えばよいですか。
3.3V・Fast-mode・100pF・3mAの仮定では、2.2kΩ±5%は抵抗RC条件を満たします。200pFでは立ち上がりが約391nsとなり不成立です。搭載部品と配線の容量、並列抵抗、全デバイスの電流保証を使って選び直します。
プルアップをどこに置くべきですか。
電気的にはどこでも同じです。マスタの近くなら、モジュールを抜いても残ります。両端に分けるなら合計の並列値で計算します。
バス容量が 400pF を超えたらどうしますか。
I²C マルチプレクサやバッファ(PCA9515 など)でバスを分割するか、ケーブル区間を差動化する延長 IC を使います。抵抗を小さくして間に合わせると、下限を割ります。

参考にした規格・資料

← コラム一覧へ