I2C プルアップ抵抗カリキュレータ
スタンダード (100 kHz)、ファスト (400 kHz)、およびファストプラス (1 MHz) モードの I2C プルアップ抵抗値を計算します。NXP UM10204 あたりの電源電圧とバスキャパシタンスから、最小抵抗、最大抵抗、推奨抵抗値を求めます。
公式
参考: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1
仕組み
このカリキュレータは、標準(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オーム未満のプルアップが必要であることを無視してください
よくある質問
Shop Components
As an Amazon Associate we earn from qualifying purchases.