赤外線方式の非接触温度計MLX90614についての記事を作成し、公開しました。
このMLX90614についての使用自体はとても簡単なのですがずいぶんと時間がかかってしまいました。主に時間がかかったのはSTM32のI2Cを使用に際してこれまでのHALドライバを使用したものからLLドライバを使用したものに変更した点です。
基本的にはLLの方がシンプルで使いやすいのですが、STM32のI2Cに関してはいくつかのサイト様で言われているように癖が強く、とても苦労しました。LLについてはサンプルが少ないというのも問題ですね。
詰まったところを簡単に紹介しておくと I2Cのread時にADDRフラグをクリアすると2バイト勝手に読み込まれるという現象が起こりました。具体的には
LL_I2C_ClearFlag_ADDR(I2C1);
を実行すると2バイト勝手に読み込まれてしまいます。
何が悪いのかさっぱりわからなかったのですが、結局こういう仕様らしいです。HALドライバの中身を見てそのまま丸写しすることで動作できるようになりました。
いや~大変でしたね。
コメントをお書きください