組み込み実践編 ④:オシロ・ロジアナ編
はじめに
前回(A-3)のJTAG/SWDは「CPUの中身」を覗く道具でしたが、CPUの外側――基板の上を走っている信号線そのものは見えません。
「レジスタには正しく書いたはずなのにデバイスが反応しない」「たまに通信がコケる」といった場面では、信号を波形として直接見るしか手がないことがあります。
本記事では、その最終手段となるオシロスコープとロジックアナライザを、手持ちの機材ベースで扱います。この2つを押さえておくと、A-1で挙げた「ソフトのバグかHWの問題か」という最後の分かれ道を、実測で決着させられるようになります。
オシロとロジアナは役割が違う
まず、この2つは似ているようで見ているものが違います。ここを混同すると道具選びを間違えます。
- オシロスコープ:電圧を連続量(アナログ波形)として見る。立ち上がり時間、電圧レベル、リンギング、ノイズ、なまり……つまり信号の「品質」 を見る道具。HW寄りの疑いを潰すのに強い。
- ロジックアナライザ:多チャンネルの信号を0/1のデジタル波形として見る。プロトコルデコード機能で、I2C/SPI/UARTのバイト列(アドレス・データ・ACK)まで人間が読める形にしてくれる。つまり 信号の「中身」 を見る道具。ソフト・データ寄りの疑いを潰すのに強い。
ざっくり言うと、「線の状態が悪いのか(オシロ)」「流れているデータが違うのか(ロジアナ)」を分担して見る、と考えると使い分けがはっきりします。
手持ち機材の比較
今回も手元にある機材で比較します。
| 機材 | 種別 | ch数 / 帯域 | 位置づけ |
|---|---|---|---|
| RIGOL DS1102Z-E | 据置オシロ | 2ch / 100MHz | 腰を据えて波形品質を見る主力。画面が大きく、微妙ななまり・リンギングまで追える。I2C/SPI/UARTのシリアルデコードも搭載 |
| MUSTOOL MDS8207 | ハンディオシロ | 2ch / 40MHz(ハンディ級) | 現場・卓上でサッと当てる用。据置を出すまでもない一次確認に便利 |
| DANIU ADS1013D | ハンディオシロ | 2ch / 100MHz(ハンディ級) | 高帯域ハンディ版。MDS8207 より周波数特性が良い代わり、画面がやや小さい |
| LA104 | ロジックアナライザ | 4ch | I2C/SPI/UARTのプロトコルデコード担当。バイト列を読みたいときはこれ |


主力の据置オシロ、RIGOL DS1102Z-E。7インチの大画面で波形品質をじっくり追えます。

現場でサッと当てるハンディオシロ(MUSTOOL MDS8207)。

高帯域ハンディ版(DANIU ADS1013D)。100MHz 対応で周波数特性が良い代わり、画面がやや小さい。
| 項目 | 仕様 |
|---|---|
| チャンネル数 | 4ch |
| 最大サンプリングレート | 100MSa/s |
| 対応デコード | I2C / SPI / UART |
| 保存 | 内蔵フラッシュ(8MB) |
| 電源・携帯性 | 内蔵バッテリ/2.8インチ画面/ポケットサイズ |
ポイントは、それぞれの得意分野で使い分けることです。DS1102Z-EはI2C/SPI/UARTのシリアルデコードを持っているので、「中身」をオシロ単体で読むこともできます。ただ、SPIのように線が4〜5本になる/初期化シーケンスが長くて広く取り込みたい、といった場面ではチャンネル数と取り込み長で有利なロジアナ(LA104)の方が楽なことが多く、本記事の実践でもLA104を例にします(DS1102Z-Eのデコードで同じものを見てもかまいません)。逆に「波形がなまっている・電圧が出ていない」といったアナログ的な異常は、ロジアナでは原理的に見えないので、そこは必ずオシロの出番になります。要は、オシロは「品質も中身もある程度見えるが品質が本領」、ロジアナは「中身を多チャンネル・長時間で追うのが本領」と押さえておくと選びやすいです。
実践1:I2Cを見る(SSD1306 OLED)
デコードの題材として使いやすいのが、I2C接続のSSD1306 OLEDです。配線が2本(SCL/SDA)で済み、アドレスも固定なので、初めてのプロトコルデコードにちょうどいい被写体です。
見るときの手順はこんな流れです。
- まずオシロでSCL/SDAの波形品質を確認:3.3V/5Vがちゃんと出ているか、立ち上がりが極端になまっていないか(プルアップ抵抗が強すぎ/弱すぎのサインが出る)
-
次にロジアナのI2Cデコードで中身を確認:スレーブアドレス(SSD1306はよく
0x3C)が意図どおり出ているか、ACKが返っているか、コマンド/データのバイト列が仕様どおりか
ここで「アドレスは合っているのにACKが返らない」なら配線・電源・アドレス設定を、「ACKは返るがデータが化ける」ならソフトが送っているバイト列を疑う、という切り分けができます。
実践2:SPIを見る(ST7735 LCD)
SPIはI2Cより線が多い(SCLK/MOSI/MISO/CS、+LCDだとD/C)ぶん、ロジアナのチャンネル数が効いてきます。ST7735のような小型SPI LCDは、初期化シーケンスが長く「どこまでコマンドが届いているか」を追うのにデコードが役立ちます。
- CS(チップセレクト)が正しく落ちているか をまず見る。CSが動いていなければ、そもそも相手が話を聞く体勢になっていない
- クロック(SCLK)の極性・位相(CPOL/CPHA=SPIモード0〜3) がデバイス仕様と合っているか。CPOL/CPHAは「クロックのどの縁(立ち上がり/立ち下がり)でデータを読むか」の取り決めで、ここがデバイス側とずれると、波形は綺麗なのにデータだけ全部化ける、という厄介な症状になる
- D/C(データ/コマンド)線の切り替わりが、コマンド送出とデータ送出のタイミングで合っているか
SPIモードの不一致は、オシロで波形を見ても「綺麗な信号」に見えてしまうため、ロジアナでデコードして初めて気づくことが多い、典型的な「中身の問題」です。
コラム:「ソフトのバグかHWの問題か」の最終切り分け
現場でいちばん揉めるのが、この一言です。ソフト担当は「HWが怪しい」と言い、HW担当は「ソフトの送り方が悪い」と言う。オシロとロジアナは、この水掛け論を実測で終わらせるための道具でもあります。
私が使っている判断の型はシンプルです。
-
線に、意図した信号が出ているか?(ロジアナで確認)
- 出ていない → ソフト側(そもそも送っていない/アドレス・データが違う)を疑う
- 出ている → 次へ
-
その信号の品質は十分か?(オシロで確認)
- なまり・リンギング・レベル不足がある → HW側(プルアップ、配線長、電源、負荷)を疑う
- 品質も問題ない → 受け手のデバイス設定・タイミング仕様(SPIモード等)を疑う
「意図したデータが、十分な品質で線に出ているのに動かない」なら、それはもう配線でもソフトの送出でもなく、受け手の設定やタイミングの問題に絞り込めます。ここまで実測で詰められると、担当間の押し付け合いになりません。
ハマりどころ
| 症状 | 疑うポイント |
|---|---|
| 波形がなまって台形になる | プルアップ抵抗が弱い/配線が長い・容量負荷が大きい(I2Cで頻出) |
| 波形は綺麗なのにデータが全部化ける | SPIモード(CPOL/CPHA)不一致、ビットオーダ(MSB/LSB)違い |
| たまにしか再現しない | プローブのGNDリード引き回しによるノイズ、電源変動、温度依存。トリガ条件を工夫して張り込む |
| ロジアナで何も出ない | しきい値電圧(ロジックレベル)設定ミス、GND未接続、サンプリングレート不足 |
| 測った瞬間に動き出す | プローブ容量が信号を「整えて」しまっている=もともと波形品質がギリギリのサイン |
最後の「測ると直る」は特に要注意で、道具を当てたことで治ったように見えるだけで、根本のHW的な余裕不足を示していることがあります。
まとめ
- オシロは「信号の品質」、ロジアナは「信号の中身」を見る道具で、役割が違う
- オシロ(DS1102Z-E)でもデコードはできるが、多チャンネル・長い取り込みが要るときはロジアナが楽。品質はオシロ、中身の広域はロジアナ、と分担すると切り分けが速い
- 「意図した信号が出ているか(ロジアナ)」→「品質は十分か(オシロ)」の順で見ると、ソフト起因かHW起因かを実測で決着できる
これでシリーズAの「見る道具」は一通り揃いました。次回(A-5)は少し毛色を変えて、繰り返しのレジスタ操作を自作GUIツールで楽にする話――A-2で予告した「TeraTermマクロの卒業」を回収します。
