異なる電圧レベル間でI2C

後輩から携帯にこんなメールが来た。

I2Cでラインをプルアップしているんですが、あれは電圧を3.3Vにすれば、異なるレベルのインターフェース間でも通信できますか?

なかなか興味深い内容だ。この後もメールのやり取りがあったのだが結論から言うとこうなる。

まず前提として、I2Cは双方向通信なのでマスタ・スレーブの両側がデータの読み取り側になりうる。異なるレベル間というのを5Vと3.3Vとすると、3.3V駆動の読み取りは3.3Vでプルアップすれば問題無いが、5V駆動の読み取りはHレベルの閾値が2VいかにあるTTLバッファなら問題ないけどCMOSバッファだと保証されない、というか個体差や環境の違いで動いたり動かなかったりすると思う。

普通はI2Cなんていう複雑な規格でレベルシフトを行おうとすることはあまり無く、マスタとスレーブは電源電圧をあわせ、ほかの単方向の部分でレベルシフトを行う。
しかし、どうしてもI2Cでレベルシフトをしなければならないとすればどのような回路を考えればよいだろう。

あまり良い回路では無いが以下のようなものを考えてみた。




順番に回路の挙動を見ていこう。
最初に3.3V系5V系ともに出力の論理がH、すなわちハイインピーダンス状態であるとする。
このときQ1はOFFとなっているので、それぞれの端子はプルアップ抵抗により3.3Vおよび5Vに保持される。

つぎに3.3V系の出力がLのとき。
Q1は普通のトランジスタの動作でONとなる。R2からQ1のコレクタへ電流が流れ込み。コレクタ電圧はほぼ0Vとなる。

最後に5V系の出力がLのとき。
2SC1815などのNPNトランジスタはN型半導体にP型半導体がはさまれた構造をしていることを知っている人も多いと思う。
この図を見るとP型半導体を境に左右対称な構造をしているように見える。なので、トランジスタに極性があるのはおかしいと思えてしまう。つまり、コレクタとエミッタをさかさまに使っても使えるのではないかと。

まぁ、そうはいってもなぜかトランジスタには極性があるわけだが、実を言うとさかさまに接続してもそれなりに使えるらしい。
このような状態をトランジスタの逆接続動作といいます。逆接続動作時のhFEに対応するパラメータをβR(beta reverse;逆接続動作時の電流増幅率)とよび一般に0.5~10ほどだそうです。
逆接続動作時の注意点としてはエミッタ-ベース間電圧の定格は一般的に低いということです。2SC1815ではVebo=5Vとなっているので電圧レベルの低いほうが5Vより大きくなる回路では利用できません。この辺は「黒田 徹 著 はじめてのトランジスタ回路設計」からの受け売りです。

そんなわけで、5V系がLのときも3.3V系がLのときと同様に動作すると考えることが出来る。ただし、βRはhFEにくらべて小さいのでベース抵抗の値はI2Cデバイスのシンク能力の許す限り大きく、プルアップ抵抗は許す限り大きく選ぶ必要があります。
もちろんトランジスタ自体のβRが大きくなるように選別することが一番大事です。

実機で試してはいないので、本当に動作するかも怪しい回路ですが本当に作る人はクロック速度も抑えないと怖いかもしれません。おそらく400kHz・・・100kHz・・・まぁ、この辺が限度?毎度のことですけど本当に作る人は自己責任でお願いしますね。

追記:PIC16F88のSSPモジュールのI2Cモードでの入力端子はシュミットトリガ入力。すなわちCMOSレベルですね。

---
シミュレーションしました。→異なる電圧レベル間でI2C その2
コメント欄で書いた『同じ原理の回路に関する記事』→FETを用いたUSB機器の電池/Vbus切り替え回路


tag: レベルシフト インターフェース I2C トランジスタ 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoCOPアンプCPA強磁性PICモンテカルロ解析常微分方程式odeトランジスタecalj状態密度DOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト乱数レベルシフトHP6632A温度解析分散関係I2Cトランジスタ技術R6452A可変抵抗ブレッドボードセミナーバンドギャップ数値積分確率論反強磁性偏微分方程式バンド構造絶縁熱設計非線形方程式ソルバフォトカプラシュミットトリガLEDLM358カオスISO-I2C三端子レギュレータGW近似A/Dコンバータカレントミラーアナログスイッチ数値微分マフィンティン半径TL431発振回路サーボPC817CUSB直流動作点解析74HC4053補間FFTBSch開発環境パラメトリック解析2ちゃんねるチョッパアンプ量子力学bzqlty電子負荷イジング模型LDA標準ロジックアセンブラ基本並進ベクトルブラべ格子単振り子熱伝導位相図TLP621キュリー温度繰り返し状態方程式MaximaVESTAスイッチト・キャパシタ相対論FETランダムウォークスピン軌道相互作用SMP六方最密充填構造抵抗不規則合金ewidthスレーターポーリング曲線GGAラプラス方程式cygwingfortranQSGW失敗談コバルト条件分岐TLP521テスタLM555Writer509TLP552格子比熱マントルデータロガー自動計測詰め回路ガイガー管ダイヤモンドQNAPMCUFXA-7020ZR過渡解析三角波UPSNE555固有値問題熱力学ブラウン運動フェルミ面awk起電力第一原理計算OpenMPfsolveubuntu最大値xcrysden最小値最適化仮想結晶近似VCA差し込みグラフスーパーセル井戸型ポテンシャル平均場近似シュレディンガー方程式FSMフラクタルOPA2277固定スピンモーメント2SC1815全エネルギー合金multiplotgnuplotc/aTeX結晶磁気異方性interp1ウィグナーザイツ胞初期値マンデルブロ集合疎行列面心立方構造fcc不純物問題非線型方程式ソルバフィルタL10構造PGA半金属二相共存SICZnOウルツ鉱構造BaO重積分クーロン散乱磁気モーメント電荷密度三次元CIF岩塩構造CapSenseノコギリ波デバイ模型ハーフメタル正規分布フォノンquantumESPRESSOルチル構造スワップ領域リジッドバンド模型edelt縮退キーボード軸ラベルグラフの分割凡例トラックボールPC不規則局所モーメント片対数グラフトランス両対数グラフCK1026MAS830L直流解析Excel円周率パラメータ・モデルヒストグラム日本語最小二乗法等価回路モデルGimp線種シンボルTS-110TS-112PIC16F785LMC662化学反応文字列specx.f入出力ifortマテリアルデザインヒストグラム確率論Realforce等高線ジバニャン方程式P-10Ubuntuナイキスト線図Crank-Nicolson法陰解法熱拡散方程式HiLAPWAACircuit連立一次方程式負帰還安定性境界条件EAGLEMBE関数フィッティング

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ