動作環境
Ubuntu 18.04 LTS
ボード: STM32L476 Nucleo_64 (以下、STM32L476)
Zephyr 2.1.0-rc1
キャラクタLCD: AQM0802
放射温度計センサー: MLX90632 (CLICK-IRThermo)
ロジック確認: Analog Discovery 2 (AD2)
第一回
概要
- I2Cデバイスを複数接続しようとしていた
- MLX90632には基板上に1kΩのプルアップ抵抗が実装済
- AQM0802は1kΩのプルアップ抵抗では動作しない
- I2C Repeater Hubで回路を分離して、それぞれプルアップ抵抗を実装している回路を見つけた
- その回路を実際に作って動作を確認した
デバイス
- MLX90632 放射温度計センサークリックボード [CLICK-IRThermo]
- AQM0802 I2C接続小型キャラクタLCDモジュール 8×2行
- STM32L476
- I2Cバスリピーター PCA9515AD
参考
-
http://www.ti.com/lit/an/slva689/slva689.pdf
- Figure 1にI2C Repeater Hubにて回路を左と右に分離して、プルアップ抵抗をそれぞれ実装している例がある
- これらのプルアップ抵抗の値は指定なし
上記の基づいて、以下の質問をした。
回答の概要としては「それは動くかもしれないけど、XXXの方がよいと」というものだった。
動作確認のために実装してみた。
回路
以下は、draw.ioにて作成した回路図。
プログラム
MLX90632およびAQM0802を動作するソフトをZephyr(RTOS)用に自作した。
整理できていないため、詳細は未公開。
- MLX90632ソフト
- ambient temperatureとobject temepratureを取得する
- 結果はシリアル出力する (screenで動作確認)
- AQM0802ソフト
- Helloという表示
- 7of9という表示
- 上記を1秒ごとに切り替える
ブレッドボード実装
ブレッドボードで実装した。
- 黄ケーブル: SCK
- 青ケーブル: SDA
- 赤ケーブル: VCC
- 白ケーブル: VCCまたはプルアップ用
- 緑ケーブル、黒ケーブル: GND
- 緑の基板: MLX90632
- 青の基板: AQM0802
結果
それぞれのソフトが正常動作した。
まだ数時間程度の運用のため、長期動作時の問題については未確認。