• 締切済み

I2Cのノイズについて

I2Cはなぜノイズに弱いのでしょうか? 自分でも一応調べてみたのですが、ワイヤードORだからとかインピーダンスが高いからとかまでは書いてあったのですが、それらがなぜノイズに弱いのかが分かりません。 インピーダンスに関しては、そもそもプルアップされているので、ハイインピーダンスではなくなっていると思いますし、通信速度を早くするためそこまで大きな抵抗は入れないと思うのですが・・・。

みんなの回答

  • SUDOTECK
  • ベストアンサー率100% (1/1)
回答No.4

 1つはポートが Open Drainなので Lowレベル時はインピーダンスが低いのでノイズに対しては CMOSと同様ですが、High時はプルアップ抵抗のインピーダンス(最低でも1KΩくらい)なのでノイズに弱いと言えます。 2つめはクロック同期といってもハード的に同期クロックを作って UARTみたいにその数倍でデーターをサンプリングしているわけでなく(私の知る範囲ですが..)、ノイズでもその立ち上がりでデーター読み込みをトリガしてしまうので、その点では弱いと言えるのではないでしょうか。 3つめはTXと ACKを同じデーター線で行うこと。高速になれば配線長やスレーブの数でミスが出やすくなると考えます。

回答No.3

No.1です。 >私が聞きたかったのは、デジタル的な事ではなく、アナログ的(ハード的)にI2Cがノイズに弱いと言う事なのです。 すみませんが、その「I2Cが弱い」って元のソース教えてもらえませんか? それと、そもそもの「ノイズ」って何処に由来するものですか? 対圧試験として実測したことありますけど、 「RS-232c」ではなく、「UART」と「PCI」に「I2C」では平面基盤上に平行に配線しただけの同一条件化(通信電圧も同値)においての外来要因(誘導電流による通信ラインへの励起波)ではアナログ的なノイズ耐性について一切差はありませんよ? 「デジタル」で「L/H」=「0/1」といっても、コレは「アナログの値が境界値となる電圧よりも低いか高いか」を判断しているだけです。 つまり微細な電圧変動により論理は反転します。 そして、ノイズは通常正方向に働きますから、その原理上一番影響を受けやすいのがI2Cであるというだけです。

warahara11
質問者

お礼

何回もご解答頂き有難う御座います。 SnowShowerがもとれられているような資料か分かりませんが、下記URLなどに書いてあったり、昔I2C通信のプログラムを作っていた時に誰から言われた記憶のみしかありません。 http://okwave.jp/qa/q4117659.html http://mkubara.com/index.php/I2C (あいまいで、中途半端な回答で申し訳御座いません) UARTやSPIはCMOS出力で、I2CはNchオープンドレイン出力なので、アナログ動作としては違ってきます。特にI2Cに関してはプルアップ抵抗や寄生容量などによって波形自体も大きく変わってきます。 その影響でノイズ耐性に影響が出ているのではとは思っているのですが、その理由が分からず質問をさせて頂いておりました。 シュレッショルド(TTLレベル・CMOSレベル共に)については知っているつもりですが、それはノイズが乗った後の事だと思っています。 私が知りたいのはSnowShowerが最後に書かれている、「原理上一番影響を受けやすいのがI2C」の根拠の部分ではと思っています。

回答No.2

No.1です >弱いというのは同じ単線シリアルのSPIやUARTと比べて(CMOSとオープンドレインと比べて)なぜ弱いのかが知りたいのです。 そちらの方ですが、勘違いしていたようです。 でも、書くことはNo.1とそんなに違いはありませんが。 I2Cは「SDA」と「SCL」の2線で通信を行いますが、他のシリアルと一番違うところは「SCL」の立下りを検出してから半クロックずれた位置から「SDA」の取得を行うところです。 この「半クロック」というのが曲者で、半クロック分のLを検出できない場合、データの取得を行いません。 UARTは送受信デバイスが所有するクロック、SPIはクロックラインのエッジ同期の為、I2Cよりノイズ特性は高くなります。 とはいっても、シングルラインである以上はそれほど違いはありませんが。 興味があれば、参考リンクもどうぞ。

参考URL:
http://journal.mycom.co.jp/column/sopinion/index.html
warahara11
質問者

お礼

再度ご解答頂き有難う御座います。 ですが、まだ私が聞きたかった内容とずれているようです。 I2Cのデジタル処理ついてはある程度知っているつもりです。 マイコンの汎用ポートでI2Cを作り、バスフリーズ検知及びその対処まで出来る程度の知識はあります。 また、UARTやSPIに関してもノイズが乗ってしまったらデータ化けの可能性はI2Cと同じで、SPIに関してはクロックにデータが乗ってしまうとデータずれが起きるので、I2Cとあまり変わらないと思っております。 私が聞きたかったのは、デジタル的な事ではなく、アナログ的(ハード的)にI2Cがノイズに弱いと言う事なのです。

回答No.1

>ワイヤードORだからとかインピーダンスが高いからとかまでは書いてあったのですが インピーダンスがどうとか以前に「信号線が単線」だから。 すでに実用化されている「USB」「IEEE1394」「SATA」等の高速シリアル通信は全て「差動信号」を用いている。 これは、正規の信号線に対して論理を逆転させた信号を送る線を用意し通信を行う。 ノイズが影響を与える場合には一本ではなく近接している線全てに影響を与える為、仮にノイズが混入しても論理反転している信号を反転して比較すればノイズ成分は簡単に除去できる。 しかしながら、単線ではノイズが混入した場合、チェックサムデータに影響を受ければ信号を復元することができなくなってしまう。

warahara11
質問者

お礼

ご解答頂き有難う御座います。 私の質問の仕方が悪かったです。 弱いというのは同じ単線シリアルのSPIやUARTと比べて(CMOSとオープンドレインと比べて)なぜ弱いのかが知りたいのです。 こういった理由からノイズが乗りやすいとか、こういった理由からノイズが乗るとICの破壊が起きやすいなどそう言った事が知りたいと思っています。