LoginSignup
2
0

More than 1 year has passed since last update.

オシロスコープで目ロジアナ

Posted at

目ロジアナ

CTF では、バイナリ解析でファイル種別を特定する必要がある。
そのときに達人が行うワザとして、ダンプリストを目で追ってファイル種別の特徴をつかむ「目grep」という手法がある。

さて、電子工作でデバイス間の通信などを調べるときにロジアナ(ロジックアナライザー)があれば便利。
しかしオシロスコープしか持っていない場合は目grep のように、目ロジアナを行ってみよう。

今回は、いくつかのセンサの I2C 通信を目ロジアナで調べてみた。

環境

  • オシロスコープ RIGOL DS1054Z
  • CO2センサ CCS811 (StrawberryLinux モジュール)
    • I2C アドレス 0x5B に設定
    • デバイスID 0x81
  • I2Cバスに温度湿度気圧センサ BME280 モジュールが相乗り
    • I2Cアドレス 0x76 に設定
  • ホストマイコン LRA1
  • I2Cバスは BME280 モジュール上の 10kΩ 抵抗でプルアップ

RIGOL 1054Z

  • 4ch
  • 周波数帯域 50MHz
  • 取り込み可能ポイント 24Mpts
  • I2C デコードオプションは購入していないので人肉デコードでがんばる。

I2C の通信について

I2Cとは、4本の線で通信を行う。そのうち2本は電源なので、正味の通信はSCLとSDAの2本で行う。SCLはクロックでタイミング信号、SDAはHighとLoの電圧でデータを送受信する。

image.png

これは I2C の A/D コンバータである MCP3425 のデータシートに載っているタイミング図です。どの I2C の通信でも、このような波形で通信をしています。今回調べるのは CO2センサ である CCS811 と、温度湿度気圧センサである BME280 です。それらの SCL と SDA の信号をオシロスコープで見てみましょう。

波形取得

DS1Z_QuickPrint3.png

一連の動作を 1.2 秒の範囲で取得しました。 黄色が SCL 、水色が SDA です。

BME280

最初の通信の波形を拡大する。
DS1054Z の取得ポイント容量が 24Mpts で 2ch 取得しているのでサンプリング間隔は 100nS になるのかな。以下に出ている SCL のクロックレートは100kHz (10μS/サイクル) なのでこれでもまあまあ読めますね。

DS1Z_QuickPrint4.png

読み解いてみる

START condition

赤で囲ったところはStart Condition。I2C の通信は基本的に SCL が Low のときに SDA を変化させます。
何も通信していない時はバスのプルアップでSDA、SCL両方ともHighとなっていますが、もし、SCLがHighのときに SDAがLowになった場合は
通信がはじまる合図とみなします。それが Start condition です。

image.png

DATA,ACK,Clock Stretch

image.png

CCS811

BME280 と同様に、CCS811も読解できます。

スタート

image.png

HWID

image.png

ふむふむ。正常ですね。

トラブルシューティング!!

CCS811のアドレス0x01に、データ 0x10 を書き込みます。

image.png

さて、そのうえで CCS811 のアドレス 0x01 を読み込みすると、書き込んだ 0x10 が見えるはずです。

image.png

おや、0x10になっていないといけないはずが、0x11になってますね。ということは CCS811 への書き込みがうまくいっていないということになります。

ここでエラーが出るので、波形を睨んでましたが特に問題となるような波形ではありません。

原因

うーん、と悩んでましたが、結局このエラーはここより前に CCS811 に送った処理が原因でした。
最初に 0xF4 を書き込んで APP_START コマンドを送るのですが、その送り方に問題があって正常に START 状態になっていなかったということでした。やれやれ。

目ロジアナ

こんな感じで波形を目でデコードすることはできます。しかしながら 1バイトや2バイトぐらいならいいのですがそれを超える長さだったり、回数が多くなると大変です。激安のロジアナを買っておいたほうがいいかもです。

なお、今回使用したオシロスコープ RIGOL 1054Z ですが、最近は購入すると I2C デコードオプションがついて来るらしく、それがあればこういう苦労もしなくて良さそうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0