步骤1:一些Shell命令
sudo i2cdetect -y 1
您将看到一个表格,如图所示。我已经安装了BMP280温度和气压传感器。根据表,i2c地址为0x76。请记下该地址。
对所有i2c设备执行此操作。
步骤2:案例1:I2c设备具有相同的地址
这始终是有问题的情况。 i2c总线可以处理多个设备,但是它们应具有不同的i2c地址。有些i2c设备具有用于设置其他i2c地址的跳线,但许多设备却没有。在这种情况下,您可以使用i2c多路复用器(硬件)来旋转i2c SDA(数据)和SCL(时钟),也可以创建其他i2c总线或更多。
我将创建两个附加总线, nl总线3和4
打开cli并运行
cd/boot
sudo nano config.txt
添加以下代码行,最好在启用spi和i2c的部分中。
dtoverlay = i2c-gpio,bus = 4,i2c_gpio_delay_us = 1, i2c_gpio_sda = 23,i2c_gpio_scl = 24
此行将在GPIO 23上以SDA和GPIO 24形式在SCL上创建一个附加的i2c总线(总线4)(GPIO 23和24为默认值)
还添加以下行以创建i2c总线3
dtoverlay = i2c-gpio,bus = 3,i2c_gpio_delay_us = 1,i2c_gpio_sda = 17,i2c_gpio_scl = 27
GPIO 17将是i2c总线4的SDA,而GPIO 27将是SCL。
Tipe控件X退出。
关于总线编号和顺序的说明:
从不使用总线0和2,它用于其他的东西像帽子上的eprom这样的板子
对于2019年4月发布的Raspbian版本:
您应该始终从config.txt中的最高总线(在这种情况下为4总线)开始,一直运行到最低总线(3总线)。
最低的总线必须始终是3总线。
如果您需要5条额外的总线,则这些总线必须双向接入7,6,5,4,3的顺序
最初编写此Instructable时,此总线顺序上的问题不存在。似乎对内核进行了更改。
关闭PI,将其关闭。将您的i2c设备连接到总线4(SDA到GPIO 23和SCL到GPIO 24),另一个连接到i2c总线3(SDA到GPIO 17和SCL到GPIO 27)。
打开pi。
运行:
sudo i2cdetect -l(小写L)
现在您将看到i2c总线3和4是也列出了。同时运行:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
现在,您可以用您的编程语言使用传感器。记住要指定正确的i2c总线。
附件是流行的BMP280温度和压力传感器的一个示例。没有多路复用器可以如此快速地读取2个BMP280。
还附带了2个Sensirion SDP 810传感器的示例。再次以比过去使用的多路复用器更快的速度工作
我创建了python代码来从adafruit中读取两个新的BMP388。
将来我可能还会在https:/中添加其他传感器/github.com/JJSlabbert/Raspberry_PI_i2C_conficts
步骤3:案例2:不同的I2c地址。
简单。 i2c是一辆公共汽车。总线的目的是与多个设备通信。将设备并行连接到同一i2c总线。您可以使用总线一。
运行:
sudo i2cdetect -y 1
您将看到列出的设备。
责任编辑:wv
-
I2C
+关注
关注
28文章
1472浏览量
122944 -
树莓派
+关注
关注
116文章
1684浏览量
105433
发布评论请先 登录
相关推荐
评论