English  中文站
第4編:I²C・SPI・UARTを波形で読む ― 通信トラブルの見つけ方
- 2025/10/6 -

 マイコンやセンサー、通信モジュールを接続してシステムを構築する際、通信が突然止まる、データが欠落する、応答が返ってこないといったトラブルに直面することがあります。こうした問題はプログラムのバグに見えて、実は信号のタイミングやレベルが原因であることも少なくありません。オシロスコープで通信波形を観測すると、デジタル通信の仕組みとトラブルの発生箇所を目で確認できます。

 I²C通信では、SCL(クロック)とSDA(データ)の2本の線を使い、マスターとスレーブ間でデータを送受信します。波形を観測すると、クロックに同期してデータが1ビットずつ送られている様子が見えます。クロックが止まっている、データ線が常にLOWのまま、といった状態はハード的な異常を示します。特にプルアップ抵抗が適切でない場合、信号が十分にHIGHまで上がらず、誤判定を起こすことがあります。波形の立ち上がり時間を確認することで、抵抗値や配線容量が適正か判断できます。

 SPI通信では、SCLK、MOSI、MISO、CSの4線が使われます。信号の同期関係を確認することで、クロック位相や極性(CPOL/CPHA)の設定ミスを検出できます。マスターのクロック立ち上がりに対してデータが安定していない場合、設定が合っていない可能性があります。また、ケーブルが長い場合や信号ラインが平行に並んでいると、隣接する線間にクロストークが発生して波形が乱れることもあります。オシロスコープで波形が振動したり反射しているように見えるときは、終端処理の検討が必要です。

 UART通信はTX(送信)とRX(受信)で構成されるシンプルな方式ですが、波形を確認すると通信速度やパリティ設定の違いが一目でわかります。例えば、9600bpsで送信しているのに受信側が115200bpsに設定されていると、波形の1ビット幅が合わずデータが崩れます。オシロスコープで1ビットの時間幅を測定すれば、実際の通信速度を正確に確認できます。また、ノイズによる誤ビットが混入していないかどうかも、時間波形を見れば容易に判断できます。

 通信トラブルの中で意外に多いのが、電源やGNDの問題です。センサーやマイコンが異なる電源から動作している場合、GNDを共通にしていないと信号の基準がずれ、通信が安定しなくなります。通信線だけをつないでも、電位差があると信号レベルが正しく認識されません。測定時には、必ずGNDクリップを共有し、異なる電源系統の場合はレベル変換器を使用するなどの対策が必要です。

 また、I²C通信では1台のスレーブが通信バスを占有してしまうことがあります。SDA線が常にLOWのままになる「バスハング」は、スレーブ側の誤動作で発生する代表的な現象です。オシロスコープでSCLが動いているのにSDAが変化していない場合、この状態が疑われます。電源を再投入するか、マスターからクロックパルスを送ることで復帰するケースもあります。こうした現象も波形を観測することで迅速に特定できます。

 通信波形を観測する際は、できるだけ短いGND線を使い、信号線の近くで接地することが大切です。長いGNDリードを使うと、周囲のノイズを拾って波形が乱れることがあります。また、測定対象が小型モジュールの場合は、無理にプローブを押し当てるとピンが折れたりショートしたりする恐れがあります。ピンヘッダやテストポイントを用意して安全に測定できる環境を整えることが望ましいです。

 オシロスコープには、通信プロトコルを自動解析してデータをデコード表示できる機能を備えた機種もあります。これを利用すれば、波形上でビット列を直接読み取ることなく、アドレスやデータの内容を一覧表示することができます。機器の違いに関わらず、まずは基本波形の正しさを確認し、通信のタイミングやレベルが正確に保たれているかを把握することが、問題解決の第一歩です。

 通信トラブルはソフトウェアだけでなく、物理層のわずかな不具合でも発生します。オシロスコープを使えば、見えないデータの流れを可視化し、安定した通信のための根拠を得ることができます。安全な接続と確実な観測を心がけ、波形の裏側にあるロジックの動きを読み解く力を身につけましょう。




オシロスコープ用途シリーズ 目次
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー