我有两个VL6180X距离传感器正确连接到一个TCA9548A复用器,但是它只识别复用器本身,而不是像你可以看到的0x70那样的两个传感器。有任何方法来配置i2c附件吗?
i2cdetect -y 1给出以下输出
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- -- Ofc,我已经在网上找到了一个解决方案:
我安装了
sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools我在内核中启用了i2c (https://raspberrypi.stackexchange.com/questions/66145/raspberry-pi-3-not-detecting-i2c-device)
将所有内容添加到config.txt中,如此处所示:I2C检测不到吗?硬件或其他方面的问题?
发布于 2020-02-13 08:00:52
为了在Linux中的mux后面正确实例化VL6180X,您应该在设备树中描述它们。看一看I2C MUX文档。
因此,您应该像下面这样描述整个设置(I2C mux + 2x VL6180X):
&i2c1 { // the SoC bus controller
mux@70 {
compatible = "nxp,pca9548";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
gpio1: gpio@29 {
compatible = "st,vl6180";
reg = <0x29>;
};
};
i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <4>;
gpio1: gpio@29 {
compatible = "st,vl6180";
reg = <0x29>;
};
};
};
};这将实例化两个新总线(用i2cdetect -l列出它们),每个总线下将出现一个vl6180传感器,并将其描述为常规的IIO设备。
上面的代码是用于i2c-mux和VL6180X传感器的设备树绑定文档的简单组合,可以在内核源代码中获得。
发布于 2020-02-12 15:24:05
卢卡的回答比这更好,尽管这仍然有效。
不是那样的。你不能通过复用器“看到”附加的设备。
相反,您打开复用器并向其写入一个“控制字节”,以告诉它应该将以下数据转发给哪个设备。
https://stackoverflow.com/questions/60191137
复制相似问题