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

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

最新コメント
リンク

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