I2Cレベル変換を抵抗分圧で行う

I2Cは5V系と3V系の製品が混在する。そのため信号ライン(SCL/SDA)にはレベルコンバータが良く使われるが、ちょっとした実験のときなどに抵抗分圧にしたいと思う時がよくある。プッシュプル出力なら抵抗分圧により簡単にレベル変換できるがI2Cのようなオープンドレイン出力を同じように抵抗分圧しても動作はしない。

だが抵抗分圧できないわけではない。要点としては5V側も3V側もデジタル入力レベルとしてHIGHが認識できるレベルであれば良いということだ。上限は3V側の最大耐圧が限界となるので一般的にはHIGHレベルを3.0V~3.3V程度にすれば良いだろう。なので次のようにすることで抵抗分圧でも問題なく動作させることが可能となる。


※通信速度に合わせた適切な抵抗値を選択すること、消費電流が増えてしまうこと、プルアップ抵抗が内蔵されている製品を使う場合はそれを考慮した抵抗値とする必要があることに注意しよう。ちなみに下側の抵抗をツェナーダイオードに置き換えても良い。

抵抗分圧のさいの抵抗値の組み合わせは次のサイトが便利なのでお勧め。
系列抵抗の選定ツール