Darkside(https対応しました)

2014年12月02日の記事

2014年12月2日(火) 21:54

STマイクロ

 LPS25Hには、動作確認レジスターがある。デバイス内の特定アドレスを読み出すと、一定の値が書かれている。その値が読み出せるかどうかで、通信が正常に行われているかどうか確認でいる次第。
 読み出しプロトコルは、単一パケット内でWriteとReadを切り替えるという磁気センサーと同様の方式だ。つまり、磁気センサーの時に作ったルーチンをそのまま使える。サクっと試すと、無事に読み出せた。今回はトラブル無さそうだ。

 実際にセンサーを使うためには、幾つか設定せねばならない。
 更新頻度は最高の毎秒25回にしておきたいし、気圧値は3バイトなので読み出し中に1バイトずつ更新されないようにせねばならない。設定フラグ一発変えると、最上位バイトと最下位バイトの両方をReadするまで気圧値を更新しないようにできる。
 至れり尽くせりだ。磁気センサーではデバイス内部アドレスがオートインクリメントされないという最低仕様だったが、LPS25Hではそんなこともない。デナイス内部アドレスのMSBを1にすると、オートインンクリメントとなる。

 ともあれ、一番重要な設定レジスターは内部アドレス0x20となっている。書き込みも磁気センサーのルーチンそのまま使えそうなのでコピペして、デバイス内部アドレスだけ書き換える。
 あれっ?どっちもアドレスが0x20ってそれ偶然の一致過ぎるぞ。
 もしかして・・・と磁気センサーのデーターシートを確認すると、STマイクロ製だった。LPS25Hともども同じメーカーの製品だった。何もSTマイクロ製ばかり漁ったのではなく、純粋にベストなセンサーはどれかと先入観抜きで探したら、たまたまそうなったのだ。

 そこで気付いた。磁気センサーにはオートインクリメントが無くて複数バイトの読み出しが大変だった。しかしLPS25Hの方はその機能がある。
 I2Cの複雑怪奇だけは参ったが、STM32F4でプログラムを作っていて、素性の良さは買っている。STマイクロはかなりソフト開発に配慮したハードを作るメーカーだと考えるようになった。そんなメーカーが、オートインクリメント機能を付けないというのは考え難い。気圧センサーには機能があるのに。
 以上の思考から、磁気センサーのデーターシートを再確認。すると、デバイス内部アドレスのMSBを立てることでオートインクリメントできるとの記述を発見!
 すみません濡れ衣でした。磁気センサーにも当然のごとくオートインクリメント機能が存在していました。

 後で、磁気センサーの読み出しプログラムを改変することになるだろう。既に動作しているプログラムを改変するのはリスクだが、まだ飛行前の開発段階である。改変により、読み出しが速くなるはずというメリットが無視できない。手順が減るということは、通信障害の確率も下がる。

written by higashino [マルチローター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL
Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4