最近在做树莓派+红外测温+光照检测的项目,这两个元器件都需要I2C接口。
在树莓派的原理图中,确实是有两个I2C的pin,分别是SDA.1/SCL.1和SDA.0/SCL.0
但是在测试中,只有.1可以用,.0扫描不到
在一个哥们的blog中,做法是将用作管理摄像头的i2c0开启,博客地址如下:https://blog.youkuaiyun.com/weixin_46145842/article/details/106128144。
按照步骤做完,用i2cdetect -l 是可以扫描到i2c的,但i2c接口分别是i2c1(一开始就有的),i2c0,i2c10,i2c11。用i2cdetect -y -a 0是扫描不到器件地址的。
你们可以测试一下如上所说博主的方法,如果管用的话是最好。但我没有测试管用。
在其他网站搜索得知i2c0是管其他设备的,开启不了。但可以采用的做法是,用gpio来模拟i2c
具体做法是:
【1】打开config文件,命令:sudo vim(nano) /boot/config.txt
【2】在配置文件中,加入如图所示语句,实现gpio模拟i2c
dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=2,i2c_gpio_sda=20,i2c_gpio_scl=21
【3】记得reboot
【4】需要注意的是:我为了语句可读性好,将最下面的一大行命令拆分成了好几行,没用逗号。但是这两种做法得到的结果是完全不一样的,搞不懂,希望有知道的兄弟可以评论一下
【5】i2c_gpio_sda=20,i2c_gpio_scl=21中的20,21指的是树莓派的BCM编码,对应的gpio口分别为GPIO.28和GPIO.29
【6】扫描结果如下:

【7】在程序中,记得将BUS序号改一下,记得将器件扫描地址改一下