I2Cバスのプルアップ抵抗の値




LTspiceドット・コマンドから学ぶアナログ回路アーカイブs

■問題
ディジタル回路

小川 敦 Atsushi Ogawa

 図1は,I2Cバスを使用してCPUから複数のICを制御するためのブロック図です.黄色の部分のコンデンサは,SDA,SCLそれぞれの端子の容量と,プリント基板などの寄生容量の合計値です.通信は「Standard-mode(100kbit/s)」で行います.この条件のとき,R1,R2の値として最も適切なのは(a)~(d)のどれでしょうか.ただし,CPUや被制御ICの内部に,プルアップ抵抗は付いていないものとします.


図1 I2Cバスを使用してCPUから複数のICを制御するためのブロック図
「Standard-mode(100kbit/s)」で通信する場合,R1,R2の値として最も適切な値は何Ω?

(a) ∞(抵抗は付けない) (b) 33kΩ (c) 3.3kΩ (d) 330Ω


■ヒント

 I2Cバスは,フィリップス(現在はNXPセミコンダクター)が開発した通信方式です.SCL(Serial Clock)とSDA(Serial Data)の2つの信号線でデータ通信を行います.SCLとSDAの出力は,オープン・コレクタまたはオープン・ドレインとなっています.
 SCLラインの立ち上がりでデータを取り込むため,SCLラインには通信速度と同じ周波数のクロック信号が発生します.100kbit/sで正しく通信可能で,I2Cの負荷電流規格を満たしているのはどれか,を考える必要があります.

■解答


(c) 3.3kΩ

 SCLとSDAの出力は,オープン・コレクタ,または,オープン・ドレインなので,必ずプルアップ抵抗が必要です.そのため「(a) ∞(抵抗は付けない)」は間違いです.また,100kHzのクロック信号の半周期の時間は5μsです.33kΩと150pFの時定数は5μsになり,クロック信号電圧が十分に立ち上がりません.したがって「(b) 33kΩ」も間違いです.
 また,I2C出力の規格では,吸い込み電流の最小値が3mAとなっています.そのため,プルアップ抵抗が330Ωでは,信号が十分にロー・レベル("L"レベル)とならないため,「(d) 330Ω」も間違いです.
 一方,3.3kΩのときの時定数は0.5μsと小さく,3mAの電流で十分に"L"レベルになるため,適切な抵抗値は3.3kΩということになります.


■解説

●I2Cバスの概要
 I2Cバスは,2本の信号線で,複数のデバイスと通信できるため,主に,プリント基板に実装されたCPUとIC間の通信に使用されています.また,さまざまなセンサの出力としても使用されています.CPU基板のArduinoやラズベリー・パイにセンサをつないでデータ取得する,といった用途でも活用されています.通信速度を向上させるため,何度か仕様追加があり,現在では以下の5つ通信モードがあり,ここでは,Standard-modeを例に特性を解説します.

・Standard-mode(100kbit/s)
・Fast-mode(400kbps/s)
・Fast-mode Plus (1Mbit/s)
・High-speed(3.4Mbit/s)
・Ultra Fast-mode(5Mbit/s)

 SDAがデータ・ラインで,SCLがタイミングをとるためのクロック・ラインです.図2は,I2Cバスのタイミングチャートの一部です.SCLが"L"レベルのときに,SDAのデータを変化させ,SCLの立ち上がりのタイミングで,SDA信号がハイ・レベル("H"レベル)か"L"レベルかを読み取ります.


図2 I2Cバスのタイミングチャート
SCLの立ち上がりのタイミングで,SDAが"H"レベルか"L"レベルかを読み取る.

●I2Cバスの電気的特性
 I2Cバスは,さまざまなメーカのIC間でも通信ができるように,電気的特性が定められています.その中で重要なものが,論理レベルや吸い込み電流値,信号立ち上がり時間です.
 図3は,ICに内蔵されたI2CバスのSCL端子の簡易等価回路です.IC内部には,バスの信号を読み取るためのシュミット・トリガとオープン・ドレインのMOSトランジスタが内蔵されています.
 ノイズ誤動作を防止するためのシュミット・トリガのヒステリシス幅(変化の幅)は,Standard-modeでは規定はありませんが,Fast-modeでは最小値が電源電圧(Vdd)の5%となっています.また,出力用MOSトランジスタの吸い込み電流能力は,ドレイン電圧(出力電圧)が0.4Vのときに,3mA以上流せるようにする必要があります.


図3 ICに内蔵されたI2CバスのSCL端子の簡易等価回路
シュミット・トリガとオープン・ドレインのMOSトランジスタが内蔵されている.

 図4は,図1のI2Cバスを使用した回路のSCL端子の電圧波形の一例です.図4を使用してI2Cバスの電気的特性を確認していきます.SCL端子の電圧はシュミット・トリガで1,0の信号に変換されます.その論理レベルは,電源電圧(Vdd)の30%および70%と定められています.電源電圧を5Vとすると「5*0.7=3.5V」以上の電圧を"H"レベルと認識する必要があります.同様に,「5*0.3=1.5V」以下の電圧を"L"レベルと認識する必要があります.
 SCL端子の電圧が"L"レベル入力電圧とクロスしたときの時間をt1とし,"H"レベル入力電圧とクロスしたときの時間をt2とすると,立ち上がり時間(tr)は「tr=t2-t1」となります.立ち上がり時間(tr)は,Standard-modeでは1μs以下,Fast-modeでは0.3μs以下と定められています.


図4 SCL端子電圧波形の一例
この図を使用してI2Cバスの電気的特性を確認していく.

●プルアップ抵抗の最小値を計算する
 I2Cの出力吸い込み電流の仕様から,プルアップ抵抗(RP)の最小値を計算してみます."L"レベルの出力電圧をVOLとすると,プルアップ抵抗に流れる電流(IRP)は式1で計算できます.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(1)

 I2Cバスの仕様より,出力電圧(VOL)が0.4Vのときの吸い込み電流の最小値が3mAなので,プルアップ抵抗に流せる電流も3mAになります.IRPが3mA以下となるプルアップ抵抗の最小値(RPmin)は式2で計算することができます.

・・・・・・・・・・・・・・・・・・・・・・(2)

●プルアップ抵抗の最大値を計算する
 次に,trの仕様から,プルアップ抵抗の最大値を計算してみます.I2Cバスはオープン・ドレイン出力のため,出力が"L"から"H"に変わる立ち上がり時間は,プルアップ抵抗とバス・ラインについている容量で決まります.コンデンサ(C)をVddに接続された抵抗(RP)で充電するときの,コンデンサの電圧の時間的変化は,式3で表すことができます.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(3)

 出力電圧が,"L"レベル入力電圧(0.3*Vdd)と等しくなる時間をt1とすると,式3は式4のように変形できます.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・(4)

 式4から,t1を計算すると,式5になります.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(5)

 同様に,出力電圧が"H"レベル入力電圧(0.7*Vdd)と等しくなる時間をt2とすると,式3は式6のように変形できます.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・(6)

 式6から,t2を計算すると,式7になります.

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(7)

 立ち上がり時間(tr)はt2からt1を引いたものなので,式8のように計算できます.

・・・・・・・・・・・(8)

 式8を変形すると,式9のようにプルアップ抵抗の最大値(RPmax)を求めることができます.

・・・・・・・・・・・・・・・・・・・(9)

 式2および式9より,図1の回路のプルアップ抵抗は1.5kΩ~7.87kΩの間の値とする必要があることが分かりました.なので,(a)~(d)の中で適切な抵抗値は3.3kΩということになります.

●LTspiceでMOSトランジスタの出力電流能力を調整する
 I2Cバスの出力波形をシミュレーションするための準備として,出力電流能力がI2Cバスの仕様に合致したMOSトランジスタを用意します.図5がMOSトランジスタのサイズを検討するためのシミュレーション用の回路図です.NMOSというデフォルトのモデルを使用してlを1μとし,wの値を変えて,ドレイン電流をシミュレーションします.ゲート電圧は5Vとし,ドレイン電圧はI2Cの仕様に合わせ,0.4Vとしています.


図5 MOSトランジスタのサイズを検討するためのシミュレーション用の回路図
wの値を変えて,ドレイン電流をシミュレーションする.

 図6は,図5のドレイン電流のシミュレーション結果です.ドレイン電圧が0.4Vのときに,ドレイン電流が3mAになるのは,wが78μのときであることが分かります.実際のICでは,もう少し電流が流せるように余裕を持たせた設定をしますが,今回はwを78μとして,I2Cバスの出力波形をシミュレーションすることにします.


図6 ドレイン電流のシミュレーション結果
ドレイン電流が3mAになるのは,wが78μのとき.

●I2Cバスの出力波形をシミュレーションする
 図7は,I2Cバスの出力波形をシミュレーションする回路です.プルアップ抵抗の値を問題と同じ「抵抗は付けない,33kΩ,3.3kΩ,330Ω」と異なる,4つの回路を1つの回路図にまとめています.MOSトランジスタのサイズは,図5で求めたwの値(78μ)を使用し,ゲートに5V振幅で100kHzの矩形波を入力しています.


図7 I2Cバスの出力波形をシミュレーションするための回路
プルアップ抵抗の異なる,4つの回路を1つの回路図にまとめている.

 図8は,図7の出力波形のシミュレーション結果です.プルアップ抵抗が無い場合(V(a))は"H"レベルが出力されず,プルアップ抵抗が33kΩの場合(V(b))は"H"レベルが十分に立ち上がっていません.また,プルアップ抵抗が330Ωの場合(V(d))は"L"レベルが十分に下がりません.プルアップ抵抗を3.3kΩとした場合(V(c))は,立ち上がり時間は1μs以下で,"L"レベルも十分低くなっています.


図8 I2Cバスの出力波形のシミュレーション結果
プルアップ抵抗を3.3kΩとした場合(V(c))は,仕様を満たしている.

 以上,I2Cバスのプルアップ抵抗の値の求め方について解説しました.今回紹介したものは,I2Cバスの仕様のごく一部です.I2Cバスの仕様については,詳細に解説した次の参考資料があります.

◆参考資料◆
https://www.nxp.com/docs/ja/user-guide/UM10204.pdf


■データ・ファイル

解説に使用しました,LTspiceの回路をダウンロードできます.
LTspice8_011.zip

●データ・ファイル内容
NMOS_ID.asc:図5の回路
Tr_Tf.asc:図7の回路

■LTspice関連リンク先


(01) LTspice ダウンロード先
(02) LTspice Users Club
(03) LTspice メール・マガジン全アーカイブs
(04) ◆LTspice電子回路マラソン・アーカイブs
(05) ◆LTspiceアナログ電子回路入門アーカイブs
(06) ◆LTspice電源&アナログ回路入門アーカイブs
(07) ◆IoT時代のLTspiceアナログ回路入門アーカイブs
(08) ◆オームの法則から学ぶLTspiceアナログ回路入門アーカイブs
(09) ◆LTspiceエデュケーショナル・ファイルで学ぶアナログ回路アーカイブs
(10) ◆LTspiceドット・コマンドから学ぶアナログ回路アーカイブs

トランジスタ技術 表紙

CQ出版社オフィシャルウェブサイトはこちらからどうぞ

CQ出版の雑誌・書籍のご購入は、ウェブショップで!


CQ出版社 新刊情報



トライアルシリーズ

高精度cm級GPS測位キット実験集

計測器BASIC

改訂新版 ディジタル・オシロスコープ実践活用法

ボード・コンピュータ・シリーズ

MicroPythonプログラミング・ガイドブック

データサイエンス・シリーズ

Pythonが動くGoogle ColabでAI自習ドリル

アナログ回路設計オンサイト&オンライン・セミナ