Подскажите как подключить этот датчик, и как считать данные.
http://www.ebay.com/itm/271453913203?_trksid=p2059210.m2749.l2648&ssPageName=STRK%3AMEBIDX%3AIT
Много разных способов, в интернете всё есть.
Есть драйвер в ядре, есть куча разных программ для работы из юзерспейса на разных языках.
Вот например скрипты на питоне: https://learn.adafruit.com/using-the-bmp085-with-raspberry-pi/overview
Вот что-то на си: http://homes-smart.ru/index.php/oborudovanie/datchiki/datchik-davleniya-bmp085
Подключать удобнее всего к UEXT1, там i2c выведен на соответствующие пины и настроен. i2c может работать в двух режимах - аппаратном и программном, настраивается через Device Tree. Скорее всего у вас всё заработает из коробки: попробуйте подключить датчик и сделать i2cdetect
http://contactless.ru/wiki/index.php/Файл:WB3.5.png
http://contactless.ru/wiki/index.php/WB_SH_3.5:_Список_GPIO
http://contactless.ru/wiki/index.php/UEXT-разъемы
Подключил, сделал i2cdetect -y 0 и 1, ничего не находит.
Подскажите куда копать.
Как узнать WB вообще его видит или нет?
Непонятно, как понять. Бывает, что i2cdetect не видит, а потом общение с устройством работает. Бывает наоборот. Всё зависит от конкретного девайса, с i2c в этом плане сложно. У вас прошивка/ядро/dts какие?
Попробуйте обновить ядро (apt-get update, apt-get install linux-latest), может поможет.
Кто бы пальцем показал как запустить этот девайс.
Скорее всего ничего и не найдет, так как аппаратный i2c сейчас, похоже, просто выключен. Смотрите мой топик про MOD-RTC (http://contactless.ru/forums/topic/mod-rtc/)
Пересобрал дерево:
root@wirenboard:~# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@wirenboard:~# 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: -- -- -- -- -- -- -- --
Что-то можно по этому сказать? :
root@wirenboard:~# dmesg | grep i2c
[ 0.500000] i2c i2c-0: Not I2C compliant: can't read SCL
[ 0.500000] i2c i2c-0: Bus may be unreliable
[ 0.510000] i2c-gpio i2c2.8: using pins 25 (SDA) and 23 (SCL, no clock stretching)
[ 0.510000] imx23-pinctrl 80018000.pinctrl: pin LCD_ENABLE already requested by 80018000.pinctrl; cannot claim for 80058000.i2c
[ 0.520000] imx23-pinctrl 80018000.pinctrl: pin-55 (80058000.i2c) status -22
[ 0.520000] imx23-pinctrl 80018000.pinctrl: could not request pin 55 (LCD_ENABLE) from group i2c0.0 on device 80018000.pinctrl
[ 0.530000] mxs-i2c 80058000.i2c: Error applying setting, reverse things back
[ 1.500000] i2c /dev entries driver
Плохо настроили дерево. Предсказываю, что вы включили обе записи: для программного i2c и для аппаратного i2c на тех же самых ножках.
Судя по UU в i2cdetect, один из них в итоге победил и работает, подключенное устройство по адресу 57 у вас определилось.
И какаой i2c оставить правильно 0 или 1?
Я раскомментировал строки:
/* Uncomment no enable hardware i2c */
i2c0: i2c@80058000 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins_a>;
status = "okay";
};
и перекоментировал строку из disabled в okay здесь:
i2c2@0 {
compatible = "i2c-gpio";
gpios = <&gpio0 25 0 /* sda */
&gpio0 23 0 /* scl */
>;
i2c-gpio,delay-us = <2>; /* ~100 kHz */
i2c-gpio,scl-output-only = <0>;
i2c-gpio,sda-open-drain = <1>;
pinctrl-names = "default";
pinctrl-0 = <&i2c_gpio>;
status = "okay";
/*status = "disabled";*/
Где не так?
Первый блок - это аппаратный i2c, второй блок - это программный i2c на тех же ножках. Включать надо что-то одно.
Какой оставлять не знаю. Обычно аппаратный, но с некоторыми устройствами лучше работает программный.
Собрал отдельно 2 дерева с прогр i2c и аппаратным.
Не видит барометра.
А это показывает с аппаратным i2c даже с не присоединенным барометром (с программным пусто)
root@wirenboard:~# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Разъясните пожалуйста что это значит:
root@wirenboard:~# dmesg | grep i2c
[ 0.500000] i2c i2c-0: Not I2C compliant: can't read SCL
[ 0.500000] i2c i2c-0: Bus may be unreliable
[ 0.510000] i2c-gpio i2c2.8: using pins 25 (SDA) and 23 (SCL, no clock stretching)
[ 1.470000] i2c /dev entries driver
Что драйвер i2c не поддерживает clock stretching. Ничего плохого.
Подскажите куда копать далее, тк из топика http://contactless.ru/forums/topic/барометр/#post-2401
Я сделал всё.
Поддержка BMP180 BMP085
http://contactless.ru/wiki/index.php/BMP085
Добрый день всем!
А куда положить этот файл Imx23-wirenboard32.dtb и как с ним работать?
Спасибо
Кроме того, что положить файл в /boot/dtbs, нужно что-то еще комплилировать или просто перегрузить?