前提
i2c-gpioを使用するため /boot/config.txt に
detoverlay=i2c-gpio,bus=2,i2c_gpio_sda=5,i2c_gpio_scl=6,i2c_gpio_delay_us
という文を追加しました。
ls /dev/i2c*
を実行すると
/dev/i2c-1 /dev/i2c-2
となり、通常のi2cバスに加えてi2c-gpioのバスがあるのが確認できました。
発生している問題・エラーメッセージ
gpio2とgpio3にi2c機器のsda,sclをつないでi
2cdetect -y 1
を実行するとアドレスは0x2Fであることが分かりました。
ところが設定したi2c-gpioの、gpio5にsda、gpio6にsclをつないで
i2cdetect -y 2
を実行するとi2cデバイスが検出されないうえ、読み込みがとても遅かったです。( -- が毎秒一個ずつぐらい)
どうすればアドレスが分かるか教えていただきたいです。
また、もう一つ質問なのですが /boot/config.txt に追加した文のうち、最後の i2c_gpio_delay_us=2 というのは何を表していて、なぜ2なのでしょうか。
繋いでいる繋いでいるi2cデバイス
mcp4018mcp4018t-104e/lt
追記
追加のi2c-gpioに選んだポートには、プルアップが無い為、 プルアップする必要があると考えられます。 おそらく、遅いのは、デバイスのつながっていないアドレスでも、 プルアップが無い為、ACKの応答がありと誤認してしまい、その後のデータ待ちでタイムアウトするまで 待つからだと思います。
というコメントをを頂きました。
結果
デジタルポテンショメータポテンショメータのvddと5v電源の間に10kΩは入れて、i2cdetect -y 2 を実行実行してみると正常に動作しました。
回答1件
あなたの回答
tips
プレビュー