前言:
非常不幸, 树莓派没用多久, I2C 接口无法 detect.
抱着试一试的心理, 到群里问了问, 结果被人喷曰:"现在钱多人傻的人真多, 什么都不懂, 还玩树莓派".
我心想, 难道树莓派真的很 "高大上"?
事情是这样:
前些天树莓派接到 6wd 机器人扩展板上玩了几天, 接着上摄像头, 摄像头工作.
但是没多久, 可能是供电不足的缘故, 树莓派 Wi-Fi 突然不通, 重启几次板子仍然没有解决.
后知后觉的我将树莓派插入电脑 USB3.0 口, Wi-Fi 恢复.
第二天试 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 设备:
- [email protected]:/home/pi# i2cdetect -l
- i2c-3 i2c [email protected] I2C adapter
- i2c-1 i2c bcm2835 I2C adapter I2C adapter
运行 i2cdetect -y 3, 找到 6wd:
- [email protected]:/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.
来源: http://www.bubuko.com/infodetail-3264161.html