はじめに
界隈ではオシロスコープで波形観測できる環境が整っている様なので、静電容量を推定して、Rpを決定する方法について解説します。
これにより、より正確なRp選定ができます。
その5にて”I2Cバスに繋げる配線のトータルの長さを測り、配線長300mm当たり100pFと想定してバスの負荷容量を計算する。”と値はオーバー目の”見なし”となっていますのでオシロスコープを使える方は、この記事を参考にして下さい。
ファースト・モード:ビット・レート400kbit/s( 最大 ) にて設計計算を行います。
I2Cの波形は矩形波にはなりません
I2Cバスの静電容量を5Vに充電するのはRp、0Vに放電するのはマイコンやセンサ内のFETオン抵抗ですので、桁違いです。
当然立ち上がりと立下りの波形は全く異なりますので、矩形にはなりません。
どちらかと言えば”のこぎり”に近い波形です。
以下の様に仕様書でも立ち上がりが遅い事は明示されています。
矩形波に近づける事に執着してプルアップ側を強化すると、”Low Level”のマージンが無くなって通信障害を起こします。
静電容量推定方法
Rpの値が既知であることが前提になっています。
ここではRp=1kΩにします。
300mmの配線にセンサを付けて、オシロスコープにて立ち上がり波形を観測します。
時定数を測定しますので、トリガ電圧は3.16V( 1τ )に設定しました(Lowレベルのオフセットの影響は少ないので無視していますが、気になる方はオフセット分足したトリガ電圧を設定して下さい)。
立ち上がり-トリガの時間を測定します。
測定結果は73.40nsとなりました。
以下の式で静電容量が算出できます。
時定数 ÷ Rp = 静電容量
73.4×10^-9(秒) ÷ 1×10^3(Ω) = 73.4×10^-12(F)
静電容量は73.4pFです。
このマイコンボードを測定に使ってます。I2Cセンサを5個接続可能ですので、写真の300mmの配線を追加で接続します。
300mmの配線追加で静電容量は95pF( 時定数95.00nsより )になりました。
差分より追加した300mm配線の静電容量が21.6pとなります。
300mm配線無しで基板のみの場合、計算上51.8pFとなりますが、実はSDS1104添付のプローブの静電容量30pFが含まれますので、実態は21.8pFです。
( SDS1104についてはこちら ↓ を参照下さい )
〇 300mm配線の静電容量 = 21.6pF
〇 基板の静電容量 = 21.8pF
〇 I2Cバスの静電容量は43.4pF
となります。
後述の設計計算に、この値を用います。
pFを問題にする場合のプローブの使い方
プローブとI2Cバスの間に配線を繋ぐと静電容量が増えますので注意が必要です。
グランドリードも静電容量を不定にする要因です。
pFオーダーの測定を行う場合はグランドリードを外して、スプリンググランドを使用します。
設計計算
設計計算を行う為に必要なものは以下の4点です。
〇 安全率(I2Cバス仕様にはありません! VIL = 1.5Vに対して0.375Vを安全率4倍と定義)
〇 I2Cバスの電源電圧
〇 センサやマイコンのLow側へのドライブ能力
〇 I2Cバスの静電容量
安全率はマージンをどの程度に設定するか?ですので、自分が納得できる値を決めれば良いのですが、ここでは4倍(1倍はマージン無しなのでNGです)とします。
電源電圧は5Vとします。
ドライブ能力は4mAとします(ご使用のセンサやマイコンのデータシートで調べて下さい)。
I2Cバスの静電容量は前出の測定・計算結果 43.4pFを用います。
プルアップされた信号線をGNDに引っ張ることでLowにする方式ですので"Low Level"が守られている事が重要となります。
各接続デバイスのノイズ・マージン(ヒステリシスを含む)はHigh側0.2VDD、Low側0.1VDD ( I2Cバス仕様Ver2.1より引用 ) とLow側が厳しいことが分かります。
VIL(Low level Input Voltage) = 0.3×VDD
ですのでVDD = 5.0Vの場合1.5Vです。
各デバイスは1.5V以下ならLowと判断してくれます。
安全率4より、1.5V ÷ 4 = 0.375V をLowレベルに設定します。
ドライブ能力4mAにて0.375VとなるRpは
Rp =( 5V - 0.375V ) ÷ 4mA = 1156.25Ω
E24系列で選択するとRp = 1.2kΩとなります。
VIH(High level Input Voltage) = 0.7×VDD
ですのでVcc = 5.0Vの場合3.5Vです。
これを守るにはI2Cバスの静電容量とRp( プルアップ抵抗 )からなる時定数による”立ち上がりのなまり”に注意が必要です。
このなまり具合は、S D AおよびS C L信号の立ち上がり時間300ns以内と仕様にありますので、安全率4倍より300ns ÷ 4 = 75ns とします。
75ns以内に3.5Vを超えると言う意味ですが、Lowレベルが完全に0Vにならず、少しオフセットしている事と計算が楽なので3.16V( 1τ )に丸めを行います。
この丸めにより時定数を算出すると、そのまま立ち上がり時間になります。
Rp = 1.2kΩ・I2Cバスの静電容量 = 52.08pFより
1.2×10^3(Ω) × 52.08×10^-12(F) = 52.08(ns)
と75nsに対して余裕があります。
RpはI2Cバス全体のプルアップ抵抗ですので、複数センサを繋げる時は合成抵抗になりますので注意が必要です。
出典: I2Cバス仕様書 Ver2.1 2000年1月版