異なる電圧レベル間で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強磁性CPAPICOPアンプecalj常微分方程式モンテカルロ解析状態密度トランジスタodeDOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト分散関係レベルシフト乱数HP6632AR6452A可変抵抗トランジスタ技術温度解析ブレッドボードI2C反強磁性確率論数値積分セミナーバンドギャップバンド構造偏微分方程式非線形方程式ソルバ熱設計絶縁ISO-I2Cカオス三端子レギュレータLM358GW近似マフィンティン半径A/DコンバータフォトカプラシュミットトリガLEDPC817C発振回路数値微分直流動作点解析サーボカレントミラーTL431アナログスイッチUSB74HC4053bzqltyVESTA補間電子負荷アセンブライジング模型BSch量子力学単振り子2ちゃんねるチョッパアンプLDA開発環境基本並進ベクトルFFT標準ロジックブラべ格子パラメトリック解析抵抗SMPMaxima失敗談ラプラス方程式繰り返し位相図スイッチト・キャパシタ熱伝導状態方程式キュリー温度gfortranコバルトTLP621不規則合金Quantum_ESPRESSO六方最密充填構造ランダムウォーク相対論ewidthスピン軌道相互作用FETQSGWVCAcygwinスレーターポーリング曲線GGA仮想結晶近似PWscfシュレディンガー方程式LM555ハーフメタル固有値問題NE555最小値ガイガー管QNAPUPS自動計測ダイヤモンドマントルTLP552格子比熱最適化MCU井戸型ポテンシャル最大値xcrysdenCIF条件分岐詰め回路フェルミ面差し込みグラフスーパーセルfsolveブラウン運動awk過渡解析起電力三角波第一原理計算FXA-7020ZRWriter509Ubuntuテスタ熱力学データロガーTLP521OpenMPubuntu平均場近似MAS830LトランスCK1026PIC16F785PGA2SC1815EAGLEノコギリ波負帰還安定性ナイキスト線図MBEOPA2277P-10フィルタCapSenseAACircuitLMC662文字列固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型電荷密度重積分SIC二相共存磁気モーメント不純物問題PWgui擬ポテンシャルゼーベック係数ZnOウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデルcif2cell入出力陰解法熱拡散方程式HiLAPW両対数グラフCrank-Nicolson法連立一次方程式specx.fifort境界条件片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

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