我正在尝试在 RPi Zero 2 W、Ubuntu 服务器 20.04 上启用第二个(基于 GPIO 的 i2c)来连接以下传感器。请注意,主 i2c 引脚在物理上已被占用,因为 RPi 被用作另一个木板。我读过大量文章/类似的问题,但还是没能检测到传感器。
这是我的/boot/config.txt:
start_x=1
enable_uart=1
dtparam=i2c_arm=on
dtoverlay=i2c-gpio,bus4,i2c_gpio_delay_us=8,i2c_gpio_sda=23,i2c_gpio_scl=24
我还根据建议为 SDA 和 SCL 添加了 2x4.7 电阻。好吧,我也尝试了不使用电阻。
当我跑步时i2cdetect-l,我只看到一条默认总线:
ubuntu@rpi:~$ i2cdetect -l
i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter
这显然没有任何意义i2cdetect-y 1 复制代码:
ubuntu@rpi:~$ 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: -- -- -- -- -- -- -- --
仅当我将其连接到主 i2c 端口时,我才能看到传感器:
ubuntu@rpi:~$ 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: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
以下是其他系统信息:
ubuntu@rpi:~$ uname -a
Linux rpi 5.4.0-1050-raspi #56-Ubuntu SMP PREEMPT Thu Jan 13 13:09:35 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
请注意,我已经尝试升级内核,但 Ubuntu 20.04 似乎停留在 5.4 版本。
任何想法都将不胜感激。
更新
- 2022/01/31: 添加消息 日志。
答案1
好的,经过多次实验,我发现 RPi 上的 Ubuntu 会/boot/config.txt
出于某种原因忽略设置(或直接覆盖它们)而选择/boot/firmware
位置。我检查了一下/boot/firmware/syscfg.txt
,发现那里也有相同的设置。所以我只是盲目地添加dtoverlay=i2c-gpio,...
到系统配置重启后,我的 i2c 传感器神奇地出现在列表中。这很奇怪,也很令人失望,因为所有指南都提到了/boot/config.txt
这一点。我为此浪费了很多时间。