树莓派-用GPIO虚拟I2C

久未见 提交于 2019-12-02 19:51:21

前言:

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!