コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

ちょいと、I2C通信している機器のパケットを覗いてみたくなったので V850 基板をそれに用いる。
I2C のバスに GPIO をオープンドレイン接続で繋いで、あとは CPU フルパワーでポーリングしながら信号の上がり下がりを眺める作戦。V850 ほどの速度で動作するプロセッサだったら 400KHz の通信もなんとか処理することができるので。
当初は書き捨てのコードでちびちび調べていたのだけれども、もちょっと手を加えると普通にバスアナライザというか、バスモニタになるんじゃないかと思って作り込んでみた次第。


操作用のボタンを追加。


配線はこんな感じで。


機能は「スレーブアドレス一覧表示」と「特定スレーブのパケットキャプチャ」の二つ。
メニューにてどちらかを選択。


パケットからスレーブアドレスを抽出、ユニークアドレスを見つけたら表示していく。
写真の例では 0x58 と 0x52 二つのスレーブ相手の通信をしている状態。
LCD の表示領域の関係で、16個までの表示。
下(P42)ボタンを押すとメニューに戻る。


パケットキャプチャは特定スレーブアドレスのみをロギングする。
キャプチャを選択すると、取り込みたいスレーブアドレスの設定画面となる。上下でアドレスを選択して、真ん中のボタンでキャプチャー開始。


キャプチャしたパケットはマイコン内メモリにストアされる。
バッファは 10000Byte 用意してありそれがいっぱいになるか、下ボタンで停止するまでキャプチャを続ける。
キャプチャ停止したら、それを uart0(CP2102が繋がっている所)へ出力するので PC のシリアルコンソールで受けて表示させる。

B0 37
B1 FF FF FF FF FF FF FF FF
B1 FF FF
B0 37
B1 FF FF FF FF FF FF FF FF
B1 FF FF

こんな感じで 1パケット 1行の形でシリアル出力される。
頭の 1Byte は上位7bit がスレーブアドレスで下位bitが送受方向。

とまあ、ちょいとした調査には使える感じに。
ちゃんとした計測器を買おうとすると結構なお値段するところを、マイコンとプログラムで簡易ながら実現してみちゃおうというのはマイコン工作のひとつの楽しみ方ではありますな。
まあ、あくまでもどきなので、こんなこともできますよといったところまでに。

ソースコード。
v850_i2c_capture_070418.zip

3 Comments to “V850付録基板でI2Cバスアナライザもどき”

  1. 通りすがり Says:

    MINICUBE2のキャンペーンやってます。アンケートに答えるとCPUボードがもらえるみたいです。http://www.necel.com/micro/ja/campaign/minicube2/

  2. rerofumi Says:

    情報ありがとうございます、既にMINICUBE2を持っていて先着300人ということは急げば私も対象に入るのかな

  3. takuo Says:

    I2Cで増設したEEPROMが認識できず困っていた時に、I2C通信がうまくいっているか否か簡単に調べようと検索していたら、とても参考になるこの記事があり、製作してみることにしました。

    貴重な情報有難う御座います。

    なお、ブログでこのページをリンクさせてもらいました。
    もし、不都合であれば削除いたします。

    追伸:EEPROMが認識しい問題は別の原因ですでに解決しました。

Leave a Reply