60歳からの電子工作ノート

生涯学習として取り組んでいます。

I2C通信とSPI通信(I2C通信 プルアップ抵抗)

 I2C通信のプルアップ抵抗を2[KΩ]としています。センサとの接続に使用しているUSBケーブルを30cm,1m,2mとした際に、プルアップ抵抗値が適切か検討しました。以下の資料を参考にしています。資料1*1、資料2*2、資料3*3

(実験は温湿度センサ(AHT25)を使用しました。)

 

High/Low 信号の作り方

  I2C通信のHigh/Low信号は、オープンコレクタ(オープンドレイン)出力でつくります。出力信号のLowは、トランジスタをONしてVccからGNDへ電流(シンク電流)を流して作ります。出力信号のHighは、トランジスタをOFFします。

図1. I2C通信 オープンコレクタ出力によるHigh/Low出力


プルアップ抵抗最小値

プルアップ抵抗値が小さい(プルアップが強い)と電圧が降下しないため、Low出力の電圧を満たせません。規格ではLow出力時の電圧(VOL)=0.4[V]、Low出力時の電流(シンク電流)(IOL)=3[mA]となっています。プルアップ抵抗最小値は資料2の「7.1 プルアップ抵抗のサイジング」式(2)より得られます。

図2. プルアップ抵抗 最小値

計算式をグラフ化すると、資料3のFig2になります。

図3. プルアップ抵抗最小値と供給電圧の関係 (資料3より抜粋)

実際に計算すると、資料2の「6. I/Oステージとバスラインの電気特性とタイミング」の表9 よりVOL(max)=0.4[V],IOL=3[mA],Vdd=5[V]ですから、
Rmin = (5 - 0.4 )[V]/3[mA] = 1.53 [KΩ] となります。

使用しているプルアップ抵抗(=2[KΩ])は、最小値の条件は満たしています。

プルアップ抵抗最大値

プルアップ抵抗値が大きいと、バス静電容量(配線等のコンデサ分)と掛け合わせた、時定数(CR)も大きくなり、信号の立ち上がり時間(tr)を満せない場合があります。

信号の立ち上がり時間(tr)は、最大1000[nsec](Standard mode)、300[nsec](First mode)となっています。(資料2の表10 )

プルアップ抵抗最大値は資料2の「7.1 プルアップ抵抗のサイジング」式(1)より得られます。

図4. プルアップ抵抗 最大値

計算式に最大立ち上がり時間(tr)を入れてグラフ化すると、資料3のFig3になります。

図5. プルアップ抵抗最大値とバス容量(資料3より抜粋)

立ち上がり時間とバス容量

オシロで信号の立ち上がり時間(tr)を実測すれば、バス容量(Cb)が求まるようです。(資料4*4の「バス容量を測る方法」)

プルアップ抵抗最大値の計算式より、    t_r =  0.8473 \times R \times C_b  

tr:立ち上がり時間(0.3xVccから0.7xVccまでの時間)を測定し、R=2[KΩ]としてバス容量(Cb)を得ます。

Standard modeとFirst modeで、30[cm],1[m],2[m]の各ケーブル使用時のクロック波形と立ち上がり時間を調べました。

Standard mode

Standard mode(100 [Kbps] )の場合、立ち上がり時間(tr)は1000[nsec]より十分に早い事が期待されます。

図6.   30[cm]ケーブル クロック波形と立ち上がり(=114[nsec]) (Standard mode)

図7.   1[m]ケーブル  クロック波形と立ち上がり(=214[nsec]) (Standard mode)

図8.    2[m]ケーブル クロック波形と立ち上がり(=364[nsec])(Standard mode)

2[m]ケーブルを使用した場合でも、立ち上がり時間(tr)は1000[nsec])より十分に早いので、このプルアップ抵抗(2[KΩ])で適切です。
2[m]ケーブル時のバス容量(Cb)を計算してみます。

立ち上がり時間(tr=364[nsec]),R=2[KΩ]より、Cb = 364 / ( 0.8473 x 2 ) = 215

オシロのプローブのバス容量 15pFを引いて、215-15 = 200[pF] となります。

同様に30[cm],1[m]ケーブル使用時のバス容量を計算しました。

図 9. ケーブルの長さとバス容量

2[m]のケーブル使用時、図5から Cb=200[pF]のプルアップ抵抗最大値は6[KΩ]ですから、使用しているプルアップ抵抗(=2[KΩ])は、Standard modeでは最大値の条件も満たしています。

First mode

First mode(400 [Kbps] )の場合、立ち上がり時間(tr)は300[nsec]より十分に早い事が期待されます。

図9.   30[cm]ケーブル  クロック波形と立ち上がり(140[nsec]) (First mode)

図10.  1[m]ケーブル  クロック波形と立ち上がり(255[nsec]) (First mode)

図11    2[m]ケーブル クロック波形と立ち上がり(345[nsec]) (First mode)

 30[cm]ケーブル使用時のみ、立ち上がり時間(tr)が140[nsec]で、300[nsec]より十分に早い(50%以上のマージンがある)といえます。このプルアップ抵抗(2[KΩ])の使用は、First modeでは30[cm]ケーブルに限定されます。

*1:資料1「UM10204 I2C-bus specification and user manual Rev.7.0 – 1 October 2021

*2:資料2「UM10204 I2C バス仕様およびユーザーマニュアル」 Rev. 5.0J — 2012 年10 月9 日

*3:資料3「I2C Bus Pulup Resistor Calculation」TEXAS INSTRUMENTS, Application Report, SLVA689-February 2015

*4:資料4「トランジスタ技術 2014年10月 2線式シリアル・インターフェイスI2C詳解」