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出版社 新刊情報


近日発売

Interface 2025年 2月号

ラズパイで作り学ぶ Dockerコンテナ

CQ ham radio 2025年 1月号

2025年のアマチュア無線

HAM国家試験

第4級ハム国試 要点マスター 2025

HAM国家試験

第3級ハム国試 要点マスター 2025

トランジスタ技術 2025年 1月号

注目のロボット センサ&走行制御!

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