Я пытаюсь включить второй (на базе GPIO i2c) на RPi Zero 2 W, Ubuntu server 20.04, чтобы подключить следующеедатчик. Обратите внимание, что основные контакты 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
Вот фактическая схема подключения:
Я также добавил 2x4.7 резистора для SDA и SCL согласно рекомендациям. Ну, я пробовал и без резисторов.
Когда я бегу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: добавленdmesg журналы.
решение1
Хорошо, после ряда экспериментов я пришел к выводу, что Ubuntu на RPi /boot/config.txt
по какой-то причине игнорирует настройки (или просто перезаписывает их) в пользу /boot/firmware
местоположения. Я проверил /boot/firmware/syscfg.txt
и нашел там те же настройки. Поэтому я просто слепо добавил dtoverlay=i2c-gpio,...
вsyscfgи после перезагрузки мой датчик i2c волшебным образом появился в списке. Это странно и разочаровывает, так как все руководства упоминают это /boot/config.txt
как единственную точку истины. Я потратил на это столько часов.