隠居エンジニアのものづくり

自転車 電子工作 ラジコン ロボカップジュニア CAD レーザー加工機

I2Cのノイズ対策 その4(Rpの値 設計計算書の勧め)

I2Cのノイズマージン
プルアップされた信号線をGNDに引っ張ることでLowにする方式ですので"Low Level"が守られている事が重要となります。
各接続デバイスのノイズ・マージン(ヒステリシスを含む)はHigh側0.2VDD、Low側0.1VDD(I2Cバス仕様Ver2.1より引用)とLow側が厳しいことが分かります。
VIL(Low level Input Voltage) = 0.3×VDD
ですのでVDD = 3.3Vの場合0.99Vです。
VOL(Low level Output Voltage) = 0.4V これは規定ですのでデバイスが守らなくてはならない値です(規定を守れていないデバイスを見たことがあるので確認する事をお勧めします)。
VIL - VOL = 0.59V この電圧のノイズがあれば通信障害が起きます。
安全率2倍としても0.3V以下にノイズを低減する必要があります。

バスの容量400pFの規定があるので、配線長300mmの浮遊容量を100pFと想定し、プリント板パターンの浮遊容量を考慮するとI2Cバスに接続する配線は3本までになります。
方位センサなどモータから遠ざける目的がある場合以外は直近に配置する事をお勧めします。

※配線長300mmの想定は以下を御参照下さい。

 I2Cのノイズ対策 その2(一点接地編) - 隠居エンジニアのものづくり (hatenablog.com)

VIH(High level Input Voltage) = 0.7×VDD
ですのでVcc = 3.3Vの場合2.31Vです。
これを守るにはバスの容量とプルアップ抵抗からなる時定数による”立ち上がりのなまり”に注意が必要です。

I2Cバスは複雑に見えますが、プルアップ抵抗Rpの選定は意外とシンプルで”VDD”と”Lowレベル確保の安全率”の2値で決まります。
下図は設計計算書の例です。
色付きのセルVDDと安全率に値を入れるとRpが計算されます。
計算結果に最も近い値でかつ大きい値になる抵抗値をE系列より選ぶ所は手動ですが、後は自動的にVIHと信号の立ち上がりがプロットされます。

f:id:Blackbox_crusher:20210114201013j:plain
容量性負荷Cbを限界値の400pFにて計算した結果ですので、オシロスコープで信号波形観測をすればグラフより立ち上がりの良い状態になっているはずです。

 

プロトコルアナライザで1000パケット程度確認して”unknown”が発生してなければソフトウェアのI2Cバス通信手順を含めて基本動作は問題ありません。

f:id:Blackbox_crusher:20210114182649j:plain
プロトコルアナライザによるI2Cバス測定結果

 

本稿はデータシート・バス仕様書の内容掌握、エクセル、計測のスキルがあることを前提にしている部分がありますが、参考にして頂ければ幸いです。