2017年2月27日 星期一

[Raspberrypi] I2C-0 發生 "i2c i2c-0: transfer timed out"

在Raspberry pi3 使用i2c-0時,常常發生「i2c i2c-0: transfer timed out」。更嚴重一點還會導致Kernel Panic問題。我猜測這應該是因為Kernel在使用CPU Register沒處理好,或者一些限制導致這個問題。

解決這問題最快的方法就改使用GPIO來模擬I2C功能,一般又稱「Big-banging」。非常慶幸的Kernel也已經實作這部分。在Raspberry Pi 的/boot/config.txt 加入一下參數

dtoverlay=i2c-gpio,i2c_gpio_sda=0,i2c_gpio_scl=1


參數定義

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)


Reference :

沒有留言:

張貼留言