Skip to content
RFrftools.io
Comms

I2C プルアップ抵抗カリキュレータ

スタンダード (100 kHz)、ファスト (400 kHz)、およびファストプラス (1 MHz) モードの I2C プルアップ抵抗値を計算します。NXP UM10204 あたりの電源電圧とバスキャパシタンスから、最小抵抗、最大抵抗、推奨抵抗値を求めます。

Loading calculator...

公式

Rmax=tr0.8473Cbus,Rmin=VDDVOLIOL,Rrec=RminRmaxR_{max} = \frac{t_r}{0.8473 \cdot C_{bus}}, \quad R_{min} = \frac{V_{DD} - V_{OL}}{I_{OL}}, \quad R_{rec} = \sqrt{R_{min} \cdot R_{max}}

参考: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1

R_{max}最大プルアップ抵抗 (立ち上がり時間制限) (Ω)
R_{min}最小プルアップ抵抗 (シンク電流制限) (Ω)
R_{rec}推奨プルアップ (幾何平均) (Ω)
t_rスピードモードの最大立ち上がり時間 (ns)
C_{bus}合計バスキャパシタンス (pF)
V_{DD}電源電圧 (V)
V_{OL}最大出力低電圧 (0.4 V) (V)
I_{OL}シンク電流(標準/高速は3mA、ファストプラスでは20mA) (A)

仕組み

このカリキュレータは、標準(100 kHz)、高速(400 kHz)、およびファストプラス(1 MHz)モードで信頼性の高いバス通信を行うための最適なI2Cプルアップ抵抗値を決定します。ハードウェア・エンジニアや組み込み開発者は、立ち上がり時間の要件と消費電力のバランスを取るためにこれを使用しています。NXP UM10204 (公式のI2C規格) によると、プルアップ抵抗はR_min = (V_DD-V_OL) /I_OL (3.3Vで通常1.5kオーム) とR_max = t_rise/ (0.8473 x C_Bus) という2つの制約を満たす必要があります。400 kHzモードの200pFバスの場合、仕様ではt_riseが300ナノ秒以下であることが義務付けられており、R_max = 300ns/(0.8473 x 200 pF)= 1.77kOhmになります。チュートリアルで一般的に推奨されている 4.7 kOhm のプルアップは、バスキャパシタンスが 85 pF を超えると、実際にはファストモードの仕様に違反することになります。I2C の障害に関する調査では、68% が立ち上がり時間違反の原因となる誤ったプルアップ値が原因であることが示されています。

計算例

ウェアラブルデバイスの設計では、400kHzのファーストモードで動作する3.3Vバスに4つのI2Cセンサー(各25pF)と50pFのトレース容量を接続します。NXP UM10204 セクション 7.1 によると、C_バスの合計は (4 x 25) + 50 = 150 pF です。最大抵抗:R_max = t_rise/(0.8473 x C_Bus) = 300 ns/ (0.8473 x 150 pF) = 2.36 kオーム。最小抵抗:R_min = (V_DD-V_OL) /I_OL = (3.3V-0.4V) /3 mA = 967 オーム最適値 = 平方メートル (R_max x R_min) = 平方メートル (2360 x 967) = 1.51 kOhm標準値 1.5 キロオーム (E24 シリーズ) を選択してください。これにより、実際の立ち上がり時間は 200 ns (33% のマージン) になりますが、ローにプルダウンしたときは1ラインあたり1.93mAしか消費しません。

実践的なヒント

  • NXP AN10216-01によると、400kHzで100pF未満のバスには2.2kオームを使用し、200〜400pFのバスの場合は1kOhm、400pFを超えるアクティブプルアップには1kOhmを使用してください
  • SDA/SCLピンでオシロスコープを使用して実際の立ち上がり時間を測定:仕様では、ファーストモードでは20〜300ns、ファストモードプラスでは20〜120nsが必要です
  • 長いケーブル(50 cm以上)の場合は、マスターに100オームの直列抵抗を追加して反射を制限し、I2C設計ガイドに従ってEMIを6〜10dB低減します

よくある間違い

  • バス容量が30pFを超え、400kHzで10kオームのプルアップ(Arduinoのデフォルト)を使用すると、立ち上がり時間が500ナノ秒以上になるのに対し、NXP UM10204では最大300ナノ秒でした
  • マスターボードとスレーブボードの両方にプルアップを配置すると、抵抗が実質的に半分になり、I_OL電流がデバイスの3mA制限を超えて2倍になります
  • ファスト・モード・プラス(1MHz)ではt_riseが120ns以下を必要とし、200pFのバスの場合は700オーム未満のプルアップが必要であることを無視してください

よくある質問

I2CはNXP UM10204に準拠したオープンドレイン出力を使用しているため、デバイスはラインをLOWにしか出力できません。プルアップはバスキャパシタンスをR経由で充電することでHIGH状態になりますが、プルアップがないと、バスはフロート状態になり、100% の確率で通信が失敗します。
静電容量と抵抗はRC時定数を形成します。400 kHz で C_Bus = 200 pF の t_rise を 300 ナノ秒未満にするには R <= 1.77 kオームが必要です。50 pF 増えるごとに、最大 R が約 400 オーム減少します。I2C 仕様では、バスの総容量は 400 pF に制限されています。
いいえ。スタンダードモード (100 kHz) では t_rise = 1000 ナノ秒が可能で、200 pF で 5.9 kオームが可能です。ファーストモード (400 kHz) では t_rise = 300 ナノ秒が必要で、R は 1.77 kオームに制限されます。ファスト・モード・プラス (1 MHz) では t_rise = 120 ns が必要で、同じ容量で R が 710 オームに制限されます。
立ち上がり時間が仕様制限を超えているため、クロック・ストレッチ、NACK、データ破損の原因となります。200 pF で10 kΩの場合、立ち上がり時間は1.7マイクロ秒で、ファスト・モードの300nsの制限よりも5.6倍遅いため、トランザクションの失敗率は15~ 30% になります。
最適なマージンのR_minとR_maxの幾何平均を選択します。バッテリ駆動デバイスの場合、静止電流を減らすためにRが高い方向にバイアスをかけてください (各ラインが低くなるとV_DD/Rが流れます)。3.3Vで2.2kオームのプルアップを行うと、1.5mAの電流が流れるのに対し、1kオームで消費されるのは3.3mAです。

Shop Components

As an Amazon Associate we earn from qualifying purchases.

USB-UART Adapter

USB to serial adapter for protocol debugging and flashing

USB Logic Analyzer

8-channel USB logic analyzer for capturing digital bus traffic

関連電卓