« EZ-USB FX3のGPIOを高速化する | トップページ | 特電FX3ボードの設計データを更新しました »

2013.02.12

EZ-USB FX3のI2C ROMにアクセス

今日は、EZ-USB FX3のI2C ROMの読み書き実験を行いました。

半年くらい前に実験したときにはI2Cで接続したROMにWriteはできるけれども、Readはできないという謎の現象に悩まされてきました。

EZ-USB FX3のSDKを最近出たV1.2にアップデートしたところ、この問題が解決されていることが確認できました。

Fx3i2c

I2Cに512バイトの乱数をWriteしてReadして照合するというものですが、わかりやすいように、その経過をUART経由で出力するようにしました。

特電のEZ-USB FX3評価ボードでは、UARTを使うにはSPI-UART切り替えジャンパをUART側に切り替えます。パソコンとはRS232Cのストレートケーブルで接続します。

ソフトウェア的には、CyU3PDebugPrintという関数を使うと、printfデバッグのようなものが使えるようになります。

しかし、CyU3PDebugPrintを使うと謎のデータ列がくっついてきます。そのため、TeraTermにデータを出力すると、■■と表示されたりします。この■の部分はFF FFになっていたり、ゴミデータが出たりします。CyU3PDebugPrintは、ゴミがついてきます。

Fx3i2c2

CyU3PDebugPrintはなかなかデバッグに使えそうです。

◆追記

APIマニュアルを読んだところ、CyU3PDebugPrintにゴミデータがつくのは、preample dataというらしいです。然るべき方法でデコードすれば便利だと書かれていました。

この動作は、CyU3PDebugPreamble(CyFalse);で無効にできます。preampleの追加を無効にしたら、TeraTermでこのように綺麗に表示されるようになりました。

Fx3i2c3

このCyU3PDebugPrintは%c,%d,%u,%xと%sが使えるので、相当便利です。

|

« EZ-USB FX3のGPIOを高速化する | トップページ | 特電FX3ボードの設計データを更新しました »

コメント

コメントを書く



(ウェブ上には掲載しません)




« EZ-USB FX3のGPIOを高速化する | トップページ | 特電FX3ボードの設計データを更新しました »