異なる電圧レベル間で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カウンター
カテゴリ
ユーザータグ

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

最新コメント
リンク

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