基板

I2Cの2電圧レベル変換回路を作る【その1】

1.1.8V,3.3V,5Vの双方向レベル変換をしたい

最近趣味でXilinx(現AMD)製Zynq7000SoCが搭載されたZyboZ7ボード(https://akizukidenshi.com/catalog/g/gM-12553/)で遊んでいます。今回はこのボードのPmodコネクタに異電圧デバイスを接続できるレベル変換アダプタを作ってみようと思います。

  • 今回やること:Zynq(3.3V) <-> I2Cセンサ(5V)
  • 最終目標:Zynq(1.8V) <-> デバイス(3.3V)、Zynq(3.3V) <-> デバイス(1.8V)

今回は信号の方向依存が無いように対応します。I2Cのような双方向バスや、1ビットごとに方向が後から決定できるようにして接続するデバイスを制限しないようにするということです。(後述しますが、バスバッファだと8bitや4bit単位で方向が固定されます)

Pmod の信号はzynqのbankの電圧によって決まります。bank500、34、35、13は3.3Vです。I2Cデバイスは3.3V対応のものが多いので、レベル変換は不要の場合が多いです。ただし、今後1.8V系やI2C以外の双方向バスを扱う可能性があるので、勉強のために第一歩として3.3-5V系の信号変換回路を作成してみます。

2.バスバッファとバススイッチの違い

信号レベル変換の方法は分圧抵抗からICを使うものまで様々なものがあるのですが、今回はレベル変換用のICを使用します。ICの種類はいくつかあります。

  1. レベル変換汎用バスバッファ
  2. レベル変換汎用バススイッチ
  3. I2C専用レベル変換リピータ
  4. バスアイソレータ

今回はI2Cをテーマにしていますが、あくまで勉強用で汎用性がほしいため③のI2C専用ICは外します。④のアイソレータは信号を光学的、磁気的に絶縁します。回路が複雑になり難易度が高く、今回はパスします。

①の汎用バスバッファですが、これはICに供給されている電源で信号を駆動する回路(バッファ)が入っています。駆動回路は単方向のため1ビットに2つ双方向に搭載され、DIRと呼ばれる方向制御入力で駆動回路を選択します。DIRは4bit,8bit単位で信号の方向を決めます。また、DIRの入力が必要ということは逆に信号の方向が自動検知できないため、I2Cは使用できません。

②の汎用バススイッチは②信号間を接続・開放するただのスイッチになります。故に駆動回路によって、信号をHigh/Low にすることができませんが、信号の伝送方向に制約がありません。信号の駆動は各デバイスが行うかあるいはプルアップ抵抗が必要になります。今回はバススイッチを選択することにしました。

3.回路作成【KiCad】

レベル変換用バススイッチICを選ぶに当たり、有名なメーカーのTIにしようとしたのですが、東芝の解説ドキュメント(https://toshiba.semicon-storage.com/info/application_note_ja_20210131_AKX00097.pdf?did=68796)がわかりやすかったので、東芝の8bitのTC7MPB9307FTを選びました。

信号のプルアップ抵抗はI2Cバスの最大周波数1MHzとして、10kΩに決めました。計算式は上記解説より、信号の容量とプルアップ抵抗のCR時定数で決めます。

  • 容量C=スイッチオン容量Cio14pF+負荷容量30pF(推定)
  • プルアップ抵抗値R=10kΩ
  • 最大周波数=1/(CR)=2.2MHz>1MHz

回路定数が決まったので、KiCadでプリント基板を作ります。大学生時代はRSオンラインのDesignSpark PCBを使用していたのですが、シェアが多いKiCadに乗り換えました。

乗り換えるに当たり、以前技術書典で見かけて購入していた、小坂さんの「KiCad Basics」(https://booth.pm/ja/items/3544989)で操作方法を勉強しました。かなり詳しい説明になっているので、チュートリアルどおりにやれば操作に慣れることができました。最新のKiCad6に対応しているのでおすすめです。

作成した回路図は以下のようになりました。

TC7MPB9307FTはライブラリを自分で作成しています。その他は特に難しいことをしていません。

4.アートワーク【KiCad】

今回は2層基板でつくります。基板の形状を決めるためにzyboz7ボードの寸法を適当に測定します。

隣接するPmodコネクタ同士で干渉しないよう、幅を20mmにしました。高速信号でもなく、またEMC対応はやったことがないので、アートワークは適当です。グランド帰還電流を1経路にするため、信号の1次・2次側でグランドプレーンを分けて一点グランド接続しています。

KiCadは3DCAD向けのデータ出力が可能なので表示してみました。素晴らしい。

自分専用のシルクロゴをいつか作りたいですね。

今回はここまでです。基板屋さんは今回はFusionPCBにしようと思います。中国の基板屋さんはとても安価で、ホビーで基板製造できる時代になりました。すごいですね。

次回は発注編をやろうと思います。

ABOUT ME
sh-goto
組込エンジニア. 最近の遊びはLinuxの低レイヤいじりとXilinxのZynqとFPGAを使った電子工作
関連記事