I2CはEEPROMを初め結構色々使われている通信インターフェースの一つ。システム内で使用するとき、同じ電圧で使用する場合では単にプルアップで接続すれば良いのだが、最近では3.3Vと5Vの混在システムも増えてきた。
その場合は、FETを入れるだけで電源を分離することができる。具体的には
2N7002などの安価で入手性の良いNchFETを利用することができる。
これは、ある基板を異なる電源のI2Cに接続するために改造した例。
これがその結果。クロックを観測すると、上が5V側、下が3.3Vの波形だ。特に問題なく電圧が変換できている。1.8Vはまだ試していないが、3.3Vと5Vで400KHzであればFETでも長年実績のある回路なので問題はないだろう。
FETの応用として、シリアル通信でも異電圧間のインターフェースに利用が可能だ。但し、通信速度によるスルーレートなどの確認が必要。
これはどういう事かが分からなかったのでツイッターで何となく呟いたら、NXPからの回答をいただけた。どうやらFETを使った回路ではスレショルド電圧などに絡んだ問題が起こる場合があるので,仕様書に掲載しなくなったとの事だ。(
ツイッターでの回答)
また、FETを含め独自のレベル変換器を用いる場合は、充分な評価をお願いしたいとの事だった。(
ツイッターでの回答) NXPでは保証範囲から外したということだろう。
なるほどそういう事があったのか。ちなみにFETによる回路は、今まで私はよく利用しており、デバイスが1~2個程度では問題に遭遇したことがない。むしろプルアップや直列終端の値や容量が適正に設計されないと問題が起きる事があるので、その辺に神経を使う。
あと、I2CでSDAが固まってバスシステムが止まった場合、
SCLを9回叩くとハードリセットする事を知った。尤も、デバイスにハードリセットがあればそれを利用することや、そのデバイスの電源を制御するからくりをつけておいた方が良いのは言うまでもない。
今回はツイッターで色々NXPから助言を頂いた。迅速な対応に感謝感謝である。
I2C仕様書
※2014/8/14リンク修正
最近のコメント