工作好きな情報系の雑記

[Raspberry Pi 3]I2Cの通信がなぜかできない時

原因はいくつか考えられる。

GNDが共通になっていない

RPiと繋いでいるデバイスとのGND電位を揃えないと信号がうまく伝わらない。
GNDを繋ごう。

カーネルのバージョンがいつの間にか上がっていた

こういう場合もある。というか頻繁にあった。
bcm2708というのを使いたいのに、自動的にバージョンが上がってbcm2708が使えなくなる。
代わりにbcm2835ってやつがデフォルトになってて、そのせいで上手くプロセスが立ち上がらないっぽい。

今回の場合、元々のカーネルバージョンは4.4だったのに、いつの間にか4.9に上がっていたせいだった。

対処法としては、単純にバージョンを落としてやれば良い。

もう一度確認して、バージョンが元に戻ってれば通信できるようになっているはず。

ちなみに、カーネルバージョンはそのままにbcm2708を起動するためには、以下のサイト参照。

Just to repeat the entire process . . . .

  1. Download the old module here.
  2. Copy this file into /boot/overlays.
  3. In /boot/config.txt add the line dtoverlay=i2c1-bcm2708 at the end.
Hey folks, noticed a problem when we went to update to the latest kernel on June 17 2017. I tried to isolate it as best I could with the following description. The smbus call read_i2c_block_data ...
smbus read_i2c_block_data Fails on Latest Kernel · Issue #828 · raspberrypi/f... - GitHub
モバイルバージョンを終了