Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Процессорные модули » SK-iMX6ULL-MOD
SK-iMX6ULL-MOD + 1wire
modems
Добавлено 14.07.2021 07:31
0
Сообщение: 1
modems
0

Пункты: 198
Регистрация: 06.07.2021
Продолжение темы https://www.starterkit.ru/html/index.php?name=forum&op=view&id=30905

Пробую запустить 1wire на SK-iMX6ULL-MOD и SK-iMX6ULL-MB

на клемнике X8 взял пин LCD_DATA09
Код


onewire {
compatible = "w1-gpio";
pinctrl-names = "default";
pinctrl-0 = <&w1_gpio_pins>;
status = "okay";
gpios = <&gpio3 14 0>;
linux,open-drain;
};

w1_gpio_pins: w1gpio {
fsl,pins = <
MX6UL_PAD_LCD_DATA09__GPIO3_IO14 0x4001a8b1
>;
};

pinctrl_hog_1: hoggrp-1 {
fsl,pins = <

// MX6UL_PAD_LCD_DATA09__GPIO3_IO14 0x1b0b0
}




Пробовал и 0x80000000, еще находил у кого-то 0x4001b8b1 не находит датчик.

на соседней плате (не SK) подключил датчик и сразу определился 28-00000a53f194
пробовал ручками его добавить на SK по имени:

Код

echo 28-00000a53f194 > w1_master_add
cd 28-00000a53f194/
cat w1_slave
w1_slave_driver 28-00000a53f194: Read failed CRC check
00 00 00 00 00 00 00 00 00 : crc=00 NO
00 00 00 00 00 00 00 00 00 t=0



Сделал из этого пина LED, чтобы точно понять не спалил ли я пин или не ошибся:

Код

leds {
compatible = "gpio-leds";
pinctrl-name = "default";

led0: cpu {
label = "cpu";
gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
default-state = "on";
linux,default-trigger = "heartbeat";
};
};

...
MX6UL_PAD_LCD_DATA09__GPIO3_IO14 0x1b0b0
...





Отлично мигает в heartbeat - пин выбрал правильно.
Уже всю голову сломал, рядом лежит китаец imx6ull и тот же датчик на 3 проводах и резисторе отлично определяется и работает. Я прикрутил свой рутфс с дебиан 9, ядро и DT делаю в на виртулке из комплекта, врятли это как-то влияет. Пробовал на родном рутфс из комплекта - та же фигня, не работает

1 раз у меня было такое что у меня мигал диод раз в 10сек будучи подключенным к пину управления w1, как я понимаю соответствует количеству w1_master_attempts

Код

root@linaro-developer:~# dmesg | grep wire
[ 0.952079] Driver for 1-wire Dallas network protocol.



title

Как можно проверить еще?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2021 10:41 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Уже всю голову сломал, рядом лежит китаец imx6ull и тот же датчик на 3 проводах и резисторе отлично определяется и работает.


какая версия ядра на плате где работает 1-wire ?
Спуститься к концу Подняться к началу
Персональная информация
modems
Добавлено 14.07.2021 15:09 Сообщение: 3
modems
0

Пункты: 198
Регистрация: 06.07.2021
Цитата
Цитата

Уже всю голову сломал, рядом лежит китаец imx6ull и тот же датчик на 3 проводах и резисторе отлично определяется и работает.


какая версия ядра на плате где работает 1-wire ?


1-wire я добавлял сам
Код
root@linaro-alip:~# uname -r
4.1.15+gb63f3f5
root@linaro-alip:~# dmesg | grep wire
[ 1.752479] Driver for 1-wire Dallas network protocol.


Нашел еще одно устройство, тут готовое ядро с модулями
Код

uname -r
4.9.22
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2021 17:35 Сообщение: 4
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Плата SK-iMX6ULL-MOD и SK-iMX6ULL-MB

Подключил ds18b20 к разъёму x8 MB

ds18b20 ---> sk (разъём x8)

1 (gnd) ---> 32 (gnd)
2 (data)---> 30 (LCD_DATA18)
2 (data)---4.7 кОм---> 38 (M3.3V)
3 (vdd) ---> 38 (M3.3V)

Включил в ядре поддержку 1-wire

make linux-menuconfig

Device Drivers --->
<*> Dallas's 1-wire support --->

1-wire Bus Masters --->
<*> GPIO 1-wire busmaster

1-wire Slaves --->
<*> Thermal family implementation

Прописал в dts w1-gpio

imx6ull-sk-mb.dts

/ {
model = "Starterkit i.MX6 ULL Board";
compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";

...

onewire {
compatible = "w1-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_w1gpio>;
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
status = "okay";
};

...


&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-sk {

...

pinctrl_w1gpio: w1gpiogrp {
fsl,pins = <
MX6UL_PAD_LCD_DATA18__GPIO3_IO23 0x0b0b0
>;
};

...

Закинул на плату ядро, модули, новый dtb

# ls /sys/bus/w1/devices
28-3c01b5562d86 w1_bus_master1
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2021 17:42 Сообщение: 5
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
# cat /sys/bus/w1/devices/28-3c01b5562d86/w1_slave
f4 01 55 05 7f a5 a5 66 40 : crc=40 YES
f4 01 55 05 7f a5 a5 66 40 t=31250
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2021 17:53 Сообщение: 6
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Прописал в dts w1-gpio


и отключил lcdif из-за конфликта пинов

...
&lcdif {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcdif_dat
&pinctrl_lcdif_ctrl>;
display = <&display0>;

status = "disabled";

...
Спуститься к концу Подняться к началу
Персональная информация
modems
Добавлено 14.07.2021 19:44 Сообщение: 7
modems
0

Пункты: 198
Регистрация: 06.07.2021
Цитата
Цитата

Прописал в dts w1-gpio


и отключил lcdif из-за конфликта пинов

...
&lcdif {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcdif_dat
&pinctrl_lcdif_ctrl>;
display = <&display0>;

status = "disabled";

...


Как обычно бывает на этом форуме после Вашей помощи все заработало , большое Вам спасибо. Ключевым моментом в покупке ваших плат для меня это была поддержка.

Начал примерять ваше решение к своему конфигу и выяснилось, что прекрасно работает и с 0x4001a8b1, но корень зла заключался в

linux,open-drain; с ним не работает, без него все отлично работает сразу.
На другой плате и в примерах NXP везде используется этот параметр. Если не сложно объясните почему оно так выходит ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.07.2021 23:10 Сообщение: 8
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата
объясните почему оно так выходит ?


если указать через DTS что пин в режиме open-drain драйвер работает с этим пином по-другому

https://elixir.bootlin.com/linux/v4.9.11/source/drivers/w1/masters/w1-gpio.c#L159

почему на процессоре i.mx6ull не работает в режиме open-drain я не знаю - просто нашел пример для i.mx6ull в ванильном ядре

https://elixir.bootlin.com/linux/v5.12.16/source/arch/arm/boot/dts/imx6ul-imx6ull-opos6uldev.dtsi#L44

https://elixir.bootlin.com/linux/v5.12.16/source/arch/arm/boot/dts/imx6ull-opos6uldev.dts#L37
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6ULL-MOD