樹莓派-用GPIO虛擬I2C


前言:

非常不幸,樹莓派沒用多久,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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM