2011/12/31

LIS3LV02DLの使い方

製作した計器に搭載している加速度センサLIS3LV02DLにはかなり癖があることがわかったので、調べたことをまとめておきます。
このセンサはCSピンの論理によってI2C/SPIモードの切り替えができるため、2つのモードについて分けて書きます。

1. I2Cモード
I2Cモードでの動作には非常に癖があります。
下の図はUSB-I2Cブリッジを使い、I2Cのアドレスを表示させたものです。
USB-I2Cブリッジを使って調べたI2Cのアドレス
データシートによると、このデバイスのアドレスは3A(8bit)ですが、ほかのアドレスも表示されています。
問題がこれだけならばよいのですが、100Hz程度の読み出しを行うとI2Cバスが途中で停止してしまいました。
これらの挙動には電圧依存があるらしく、3.3V動作と2.5V動作を比べると、2.5Vの場合のほうがうまく動いているようでした。
以前に、長いACKが出力されるという問題をレポートしましたが、その原因もこのセンサにあったようです。
I2Cモードではこのような動作をするので、読み出す頻度が低い場合やテスト以外にはI2Cモードは使うべきではありません。

2. SPIモード
SPIモードではこのセンサは特に癖もなく、問題なく動きます。
下の図は10msごとに3軸分の加速度を読んだ様子をロジックアナライザで調べたものですが、読み出しはI2Cに比べ高速で挙動も安定しています。
SPIモードで3軸を同時に読み出している様子

製作した計器では何とかごまかしながら加速度を測定していますが、近いうちに使っているジャイロセンサIMU-3000とピン互換のある6軸センサMPU-60X0が出るはずなので、そちらに切り替える予定です。
また、9軸分のセンサと行っているI2C通信にかかる時間がかなりシステムの足を引っ張っていることがわかったので、次に基板を作製する時にはMPU-6000からSPI通信で6軸分のデータを取得しようと考えています。