動作環境
Ubuntu 18.04 LTS
ボード: STM32L476 Nucleo_64 (以下、STM32L476)
Zephyr 2.1.0-rc1
放射温度計センサー: MLX90632 (CLICK-IRThermo)
キャラクタディスプレイ: AQM0802
ロジック確認: Analog Discovery 2 (AD2)
第一回
使用基板
状況
- MLX90632にてambient temperatureとobject temperatureの読取りを実装した
- それらの値をAQM0802で表示しようとするが表示されない
プルアップ抵抗1k
MLX90632には1kΩのプルアップ抵抗が実装済である。同じI2CラインにAQM0802を接続する場合、この抵抗値でプルアップがされる。
AQM0802の表示がされない問題に関して調べたところ、以下が分かった。
- プルアップ抵抗なし: 表示される
- 1kΩプルアップ: 表示されない
- 4.7kΩプルアップ: 表示される
AD2にてロジックを見ても、命令に対してNAKになってしまっている。
1kΩの影響を回避する
案1. 並列に入れる
抵抗を並列に入れても 1/R = 1/R1 + 1/R2 の計算から1.1kΩを4.7kΩにすることはできない、という認識。
案2. リピーターハブを入れる
http://www.ti.com/lit/an/slva689/slva689.pdf
のp2にプルアップを二箇所で入れている例がある。
途中にあるのは「リピーターハブ」。
リピーターハブは下記のような製品はある。
質問をしておいた。
案3. I2Cラインを分ける
STM32L476にはI2Cラインが複数ある。同居できないI2Cデバイスに対して、I2Cラインを分けて接続する。