Article header 107449 header  2

シリラボの近接照度UVインデックスセンサ Si114x  プログラミングの注意点

Uzuki センサシールドにのっているシリコンラボラトリーズの近接照度UVインデックスセンサですが、ちょっと曲者です。
何がって、このセンサ、他のセンサデバイスと同様にI2Cインタフェースで色々な設定やデータの読み書きをするのですが、内部のレジスタ構造がちょっと変わってるんですよ。普通はデバイス内部にI2C接続されたレジスタがずらずらと並んでいて、そのレジスタにはI2Cマスタからレジスタアドレスを指定してアクセスします。ここまではSi114xも同じです。Si114xが特殊なのは、レジスタとは別にパラメータRAMというメモリエリアがあり、そのRAMにはI2Cから直接アクセスすることができません! パラメータRAMにデータを書き込む場合のアクセス手順はこのようになります。①まずI2Cに接続されているパラメータライトレジスタにパラメータRAMに書き込む値をセットします。②次にI2Cに接続されているコマンドレジスタに、パラメータセットコマンドと、パラメータRAMのオフセットアドレスをORした値を書き込みます。③すると、①で設定した値が、②で指定したパラメータRAMに書き込まれるという・・・。

Article header 107449 a  1

つまりパラメータRAMのアドレスとそこに書き込む値をレジスタにセットして、間接的にパラメータRAMにアクセスしているわけです。分かります? なんでこんな複雑なことしてるんだろ?? でも絶対何か理由があるはずだ!! Uzukiにのっている同じシリラボの温湿度センサはこんな構造にはなっていません。I2Cから直接アクセスできるレジスタだけです。

Uzukiセンサシールドのサンプルコードはこちら

関連タグ