[Raspberry Pi 3]I2Cの通信がなぜかできない時
原因はいくつか考えられる。
GNDが共通になっていない
RPiと繋いでいるデバイスとのGND電位を揃えないと信号がうまく伝わらない。
GNDを繋ごう。
カーネルのバージョンがいつの間にか上がっていた
こういう場合もある。というか頻繁にあった。
bcm2708というのを使いたいのに、自動的にバージョンが上がってbcm2708が使えなくなる。
代わりにbcm2835ってやつがデフォルトになってて、そのせいで上手くプロセスが立ち上がらないっぽい。
今回の場合、元々のカーネルバージョンは4.4だったのに、いつの間にか4.9に上がっていたせいだった。
1 2 | $ uname -a # Linux raspberrypi 4.9.11+ 〜〜〜うんちゃらうんちゃら〜〜〜 |
対処法としては、単純にバージョンを落としてやれば良い。
1 2 | $ rpi-update 00a7eac6efc6ba29d94a7460f68215a1dbbdef0b $ sudo reboot |
もう一度確認して、バージョンが元に戻ってれば通信できるようになっているはず。
1 2 | $ uname -a # Linux raspberrypi 4.4.47-v7+ #961 SMP Sun Feb 5 20:17:00 GMT 2017 armv7l GNU/Linux |
ちなみに、カーネルバージョンはそのままにbcm2708を起動するためには、以下のサイト参照。
Just to repeat the entire process . . . .
- Download the old module here.
- Copy this file into
/boot/overlays
.- In
/boot/config.txt
add the linedtoverlay=i2c1-bcm2708
at the end.
この記事へのコメントはこちら