CYPRESSのPSoCと3軸加速度センサKXP84-2050

※後日追記:ちゃんと動かしてみた結果は別の記事に

秋月でなんとなく、何かに使えるだろーと買ってきた加速度センサを繋いでみようと思いました。
3軸なので、X/Y/Zの3つのアナログ出力があります。A/Dコンバータ3つ用意すれば受けられます。アナログの電子回路はまったくわからないので、まずデジタルに変換してくれないことには話が始まりません。


3入力のA/Dコンバータは、CYPRESSのPSoCにおいてデジタル5ブロックも消費するようです。出回っている2種類(29466/27443)のうち安いほうの27443では、デジタル8ブロックまでしか使えないので若干不安です。シリアルで出すためにUARTモジュール(ブロック2個)を入れたら、あと1ブロックしか使えません。まあ、量産するのではなく個人で遊ぶなら、27443に無理やりつめなくてもいいのかもしれませんが。

KXP84のI2CとSPI

KXP84のデータシートを見ると、デジタル出力がついているとのこと。I2CかSPI。そんなこと知らず適当に買っていました。
I2Cは必要なI/Oが2本(クロックとデータ)、PSoC側ではソフト制御で機能を実現できるので消費ブロックはなし。(ただ、CPU部分で出来ることがだいぶきつくなりそう)


SPIはI/Oが4本(クロック、チップセレクト、データ双方向)で、デジタルブロック2つ消費するようです。
資料を印刷して眺めて、使い方までだいたい理解できたような気がするんですが、KXP側の仕様で「X/Y/Z軸値を読むリクエストを出した後、KXP内蔵のADコンバータが処理を完了するまで、200us以上クロックをlowにホールドしなければならない」というのがありまして、これが出来合いのライブラリで実現できそうな気がしません。
FPGAでHDLをいじる分には、DRAMと比べたら単純なので普通に出来ると思うけど、制御を全部マイコンで記述したら気が遠くなりそうです。
あとアナログの知識と繊細さを持ち合わせていないため、1MHzの信号がちゃんと配線できるのかも不安要素。


で。
結局A/Dコンバータ3本使う方法でいいじゃんと思いました。でもI2CのほうはCYPRESSのライブラリで実現可能そうなので、いずれどちらもチャレンジしてみたいですね。


うーん。色々言いつつも、ひとつも完成させていないので、何かネタが沸いたら軽く動画にして、こっそりとニコニコ技術部の末席に参加したいですね。んで関東で何かイベントがあったら見に行きたい。