検索
連載

I2C回路の失敗例:配線長を伸ばしすぎるとどうなる?Q&Aで学ぶマイコン講座(75)(3/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「I2C回路の失敗例。配線長を伸ばしすぎるとどうなる?」についてです。

Share
Tweet
LINE
Hatena
前のページへ |       

通信エラーが発生するメカニズム

 今回の実験では、7.5m以上の配線長で通信に失敗しています。配線長10cmと配線長7.5mを比べるとSCL信号(黄色)が9回目の立ち上がり移行、出力されていません。なぜこのような違いが出るのでしょうか?

 正常動作時は、スレーブ側が正しくアドレスを認識していればSDA信号(水色)の9ビット目でLOWを返すことで、正常に応答信号ACKが返答されたと判断し、後続の通信を継続します(図7上側

 今回の通信失敗時は、波形の崩れによりスレーブ側で正しくアドレスが認識できなかったため、スレーブ側はSDA信号の9ビット目でHIを返しています(NACK)。マスター側はスレーブ側からNACKが返されたため、通信を中断しています(図7下側


図7:通信エラーが発生するメカニズム[クリックで拡大]

通信エラーの原因を調べるには

 通信エラーの原因を調べるには、I2Cペリフェラルのレジスタ内容をデバッガで調べることを推奨します。今回のケースでは、スレーブ側でスレーブアドレスを正常に認識していない可能性があるので、スレーブ側で受信したスレーブアドレスを調べます。STM32G0B1マイコンには、I2C interrupt and status register(I2C_ISR)というレジスタにADDCODE[6:0]:Address match code という項目があり、正常にスレーブアドレスを受信した場合、ここに期待したスレーブアドレスが格納されます。この値を調べることで、スレーブ側が正常にアドレスを受信できたかどうかを調べることができます。

波形崩れの原因

 波形崩れの原因は、今回の実験では以下が考えられます(図8

(1)プルアップ抵抗のドライブ能力不足

(2)信号の反射

(3)クロストーク


図8:波形崩れの原因[クリックで拡大]

波形崩れへの対策

 波形崩れへの対策としては、下記が挙げられます。

(1)プルアップ抵抗のドライブ能力不足 適切なプルアップ抵抗値の選択
(2)信号の反射 ダンピング抵抗の挿入
(3)クロストーク SCLとSDA信号の配線を離す

 これらの対策を施すことで波形崩れを改善し、通信の失敗率を下げられる場合もありますが、基本的には短い配線長での使用を推奨します。

次の記事を読む

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る