前言:
非常不幸,樹莓派沒用多久,I2C接口無法detect。
抱着試一試的心理,到群里問了問,結果被人噴曰:“現在錢多人傻的人真多,什么都不懂,還玩樹莓派”。
我心想,難道樹莓派真的很“高大上”?
事情是這樣:
前些天樹莓派接到6wd機器人擴展板上玩了幾天,接着上攝像頭,攝像頭工作。
但是沒多久,可能是供電不足的緣故,樹莓派WiFi突然不通,重啟幾次板子仍然沒有解決。
后知后覺的我將樹莓派插入電腦USB3.0口,WiFi恢復。
第二天試I2C,卻I2C無法detect,猶如晴天霹靂,令人措不及防,修改參數,重裝系統...
因為自己不是做硬件的,沒設備進行調試,I2C壞掉的原因一直沒有查出。
在這里,如果有幸遇上有緣人,能幫忙指導指導,還不吝賜教,萬分感激!!!
(請勿見怪,不知什么原因,截的圖無法上傳,直接用了商家的圖,如有不妥之處,請@)
廢話少說,奉上解決辦法:
因為也是剛剛拿到板子,對樹莓派的了解知之甚少,摸索了大約兩天。
后來找到Device Trees,發現里面的dtoverlay非常強大。
曙光出現在Changing i2c sda1 scl1 pin這篇文章,文章告訴我樹莓派可以通過設置dtoverlay虛擬多個I2C接口。
抱着死馬當作活馬醫的態度,按照文章,我修改dtoverlay,將其設置為i2c-gpio,bus=3,i2c_gpio_delay_us=2,i2c_gpio_sda=5,i2c_gpio_scl=6。
運行i2cdetect -l,出現了i2c-3設備:
root@raspberrypi:/home/pi# i2cdetect -l i2c-3 i2c i2c@3 I2C adapter i2c-1 i2c bcm2835 I2C adapter I2C adapter
運行i2cdetect -y 3,找到6wd:
root@raspberrypi:/home/pi# i2cdetect -y 3 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- 41 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- --
再修改6wd控制腳本的I2C bus,並運行,完美解決!
修改后的/boot/config.txt如下:
# Uncomment some or all of these to enable the optional hardware interfaces dtparam=i2c_arm=on #dtparam=i2s=on dtparam=spi=on dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=2,i2c_gpio_sda=5,i2c_gpio_scl=6
備注:
其中i2c_gpio_sda=5和i2c_gpio_scl=6分別指pin 29和pin 31。