I2C はまりどころ
PSOCEVAL1 を Master、 MINIPROG1 を Slave として、I2C によるデータ通信の実験をしてみた。
I2CHW モジュールを、Master 側は Single Master Operation、Slave 側は Slave Operationで構成して配置。データシートのサンプルプログラムをそのまま使ったのでは面白くないし動きがないので、とりあえずSlave側は SleepTimer_lGetTickCntr で取得した値(経過時間)をMaster側 に渡し、Master 側ではこの値をLCDに表示するようにプログラムを書いたのだが、ここで Slave 側のプログラムでハマった。
結論から言うと、Slave 用の API の関数名における "read" や "write" は、Master からの視点で命名されていることを理解していなかったことだ。つまり、
- Slave 側で、Master に引き渡す(=Master が読み出す)データを書き込むためのバッファの設定のための関数名には "read" がつくし、逆に、
- Slave 側で、 Master から渡される(=Master が書き込む)データを読み込むためのバッファ設定のための関数名には "write" がつく。
<< Home