LoginSignup
5
5

More than 5 years have passed since last update.

メモ:i2c-gpioドライバでRaspberry PiにI2Cポートを追加

Posted at

I2Cポートが足りないとき、i2c-gpioドライバを使用することで普通のGPIOポートをI2Cポートとして使うことができる。

GPIOを高速で制御 (Bit banging) して、SDAとSCL相当のシリアル波形を作り出そうというドライバ。任意のGPIOポートが使える代わりに、それなりにCPUパワーを消費するし、きっちりとした波形が出ないのでデバイスによってはうまく動作しない場合がある。

参考: https://en.wikipedia.org/wiki/Bit_banging

できることならハードウェアI2Cポートを使用すべきだし、使うにしてもオシロスコープで波形を確認し、デバイスの仕様に沿うか確認して使いたいところ。

/boot/overlays/README に記載のあるように、dtoverlayディレクティブを使用し/boot/config.txtに設定を追加することで動作するようになる。

/boot/overlays/README
Name:   i2c-gpio
Info:   Adds support for software i2c controller on gpio pins
Load:   dtoverlay=i2c-gpio,<param>=<val>
Params: i2c_gpio_sda            GPIO used for I2C data (default "23")

        i2c_gpio_scl            GPIO used for I2C clock (default "24")

        i2c_gpio_delay_us       Clock delay in microseconds
                                (default "2" = ~100kHz)

GPIO 5をSDA、GPIO 6をSCL、クロックディレイを2μsecとする場合の設定は以下のような感じ。

/boot/config.txt
dtoverlay=i2c-gpio,i2c_gpio_sda=5,i2c_gpio_scl=6,i2c_gpio_delay_us=2
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5