I2C回路の失敗例:配線長を伸ばしすぎるとどうなる?:Q&Aで学ぶマイコン講座(75)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「I2C回路の失敗例。配線長を伸ばしすぎるとどうなる?」についてです。
通信エラーが発生するメカニズム
今回の実験では、7.5m以上の配線長で通信に失敗しています。配線長10cmと配線長7.5mを比べるとSCL信号(黄色)が9回目の立ち上がり移行、出力されていません。なぜこのような違いが出るのでしょうか?
正常動作時は、スレーブ側が正しくアドレスを認識していればSDA信号(水色)の9ビット目でLOWを返すことで、正常に応答信号ACKが返答されたと判断し、後続の通信を継続します(図7上側)
今回の通信失敗時は、波形の崩れによりスレーブ側で正しくアドレスが認識できなかったため、スレーブ側はSDA信号の9ビット目でHIを返しています(NACK)。マスター側はスレーブ側からNACKが返されたため、通信を中断しています(図7下側)
通信エラーの原因を調べるには
通信エラーの原因を調べるには、I2Cペリフェラルのレジスタ内容をデバッガで調べることを推奨します。今回のケースでは、スレーブ側でスレーブアドレスを正常に認識していない可能性があるので、スレーブ側で受信したスレーブアドレスを調べます。STM32G0B1マイコンには、I2C interrupt and status register(I2C_ISR)というレジスタにADDCODE[6:0]:Address match code という項目があり、正常にスレーブアドレスを受信した場合、ここに期待したスレーブアドレスが格納されます。この値を調べることで、スレーブ側が正常にアドレスを受信できたかどうかを調べることができます。
波形崩れの原因
波形崩れの原因は、今回の実験では以下が考えられます(図8)
(1)プルアップ抵抗のドライブ能力不足
(2)信号の反射
(3)クロストーク
波形崩れへの対策
波形崩れへの対策としては、下記が挙げられます。
(1)プルアップ抵抗のドライブ能力不足 | 適切なプルアップ抵抗値の選択 |
---|---|
(2)信号の反射 | ダンピング抵抗の挿入 |
(3)クロストーク | SCLとSDA信号の配線を離す |
これらの対策を施すことで波形崩れを改善し、通信の失敗率を下げられる場合もありますが、基本的には短い配線長での使用を推奨します。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイコンの周辺部品の選び方(発振子編)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「マイコンの周辺部品の選び方(発振子編)」についてです。 - 発振子よりも、マイコンが高い周波数で動作できるのはなぜ?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、上級者の方からよく質問される「発振子よりも、マイコンが高い周波数で動作できるのはなぜ?」についてです。 - 突入電流の検討方法
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。今回は、初〜中級者から多く寄せられる質問です。 - 入力ポートが足りないときに、スイッチ入力数を増やす裏ワザ
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「入力ポートが足りないときに、スイッチ入力数を増やす裏ワザ」についてです。 - マイコンが起動するまで、なぜ時間がかかるの?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「マイコンが起動するまで、なぜ時間がかかるの?」についてです。 - スターターキットの活用方法
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。 今回は、初心者の方からよく質問される「スターターキットの活用方法」についてです。