today   2019-04-08

access_time  1 min

PSoC5lpでEZI2C Slaveを活用する

デバッグに便利

PSoCには様々なコンポーネントがあるが、EZI2C Slaveというものが特に便利なので紹介する。(毎回忘れるので書いておく)

EZI2C Slaveとは

I2Cスレーブデバイスを簡単にインプリできるコンポーネント。どれぐらい簡単か説明する。

配置

以下のように配置する。ダブルクリックで転送スピードやSlave Addressを編集できる。

place

ピンアサイン

PSoC5LPであればハードマクロ実装されるようなので、12.0(SCL), 12.1(SDA)に配置する。

pin

初期化

EZI2C_DEBUG_SetBuffer1関数で、公開したいデータのサイズ、書込み可能な領域サイズ、先頭ポインタを指定するだけでI2C Slaveとして振る舞ってくれる。

例えば以下のようなコードで配列の中身を公開できる

volatile uint8_t arr[] = "0x11, 0x22, 0x33, 0x44";

int main(void) {
  EZI2C_DEBUG_Start();
  // 引数2に2を指定したので先頭2個(0x11, 0x22)は書き換え可能

  EZI2C_DEBUG_SetBuffer1(4, 2, arr);
}

また、構造体のようになっていても同様に使える。

EZI2C_DEBUG_SetBuffer1(sizeof(my_struct_data), 0, (uint8_t*)&my_struct_data);

完成

他のデバイスからI2C経由でアクセスしてあげればもう使える。更に言うならKitProg(prototyping kit付属のデバッガ)や、miniprogのI2Cを繋いであげるとPSoC Creator付属のBridge Control Panelから値を読み書きしたりグラフ化することもできる。

bridge

まとめ

便利だった。それよりModus ToolBoxがこの先のIDEになるような気がするのでそちらでもできるのだろうか。