Ник:
Пароль:

Контакты

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 » Embedded Linux
[решено]Термодатчик ds18b20 + linux-3.16 + DTS
Romantic
Добавлено 18.02.2015 18:43 Редактировалось 19.02.2015 14:44
0
Сообщение: 1
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Приветствую вас!

Я тут попробовал подключить к процессору термодатчик по шине 1-wire. В конфигурации ядра включил:
Dallas 1-wire
Slaves/Thermo sensors
Masters/GPIO master

В DTS добавил содержимое (образцом послужил at91-ariag25.dts):
Код

ahb {
apb {
pinctrl@fffff200 {
w1_0 {
pinctrl_w1_0: w1_0-0 {
atmel,pins = <AT91_PIOD 21 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PA21 PIO, pull-up */
};
};
};
};
};

onewire@0 {
compatible = "w1-gpio";
status = "okay";
gpios = <&pioD 21 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_w1_0>;
};

В гугле к сожалению не нашел ни одного примера на at91, только на beaglebone (у меня sk-sam9g45-xc6slx).

В примерах для beaglebone другая структура дерева, но принцип аналогичный - секция pinctrl, секция onewire
На beaglebone судя по описанию, датчики сразу обнаруживаются и выдают темпрературу, а у меня - нет.

В результате получается:
При загрузке ядра в лог попадает только одна строка:
Цитата

Driver for 1-wire Dallas network protocol.

После загрузки смотрю sysfs:
Цитата

# ls -l /sys/bus/w1/devices/
total 0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 w1_bus_master1 -> ../../../devices/w1_bus_master1
# ls -l /sys/bus/w1/devices/w1_bus_master1/
total 0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 driver -> ../../bus/w1/drivers/w1_master_driver
lrwxrwxrwx 1 root root 0 Jan 1 00:00 subsystem -> ../../bus/w1
-rw-r--r-- 1 root root 4096 Jan 1 00:00 uevent
-rw-rw-r-- 1 root root 4096 Jan 1 00:00 w1_master_add
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_attempts
-rw-rw-r-- 1 root root 4096 Jan 1 00:00 w1_master_max_slave_count
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_name
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_pointer
-rw-rw-r-- 1 root root 4096 Jan 1 00:00 w1_master_pullup
-rw-rw-r-- 1 root root 4096 Jan 1 00:00 w1_master_remove
-rw-rw-r-- 1 root root 4096 Jan 1 00:00 w1_master_search
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_slave_count
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_slaves
-r--r--r-- 1 root root 4096 Jan 1 00:00 w1_master_timeout


Беглый анализ результатов показывает, что обнаружен Bus Master (по-видимому, тот самый, который использует GPIO), но ни одного slave, то есть, подключенный датчик не найден.
При этом на линии PD21 раз в 10 секунд проходит одиночный импульс низким уровнем длиной 500 мкс. Похоже на какой-то таймер, но никак не обмен данными.

Подскажите ваше мнение, что можно попробовать?

Мои предварительные соображения:
Может быть, нужно в DTS статически прописывать всех слейвов с указанием их идентификаиоров, но ни одного примера явного указания я не смог найти
Не могу понять, сконфигурировано ли вообще что-то, поскольку импульс может формировать и датчик, а пин может находиться в режиме входа по умолчаниюю Для проверки можно было бы оторвать ногу данных датчика от шины
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.02.2015 19:42 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Не могу понять, сконфигурировано ли вообще что-то, поскольку импульс может формировать и датчик, а пин может находиться в режиме входа по умолчаниюю Для проверки можно было бы оторвать ногу данных датчика от шины

по описанию все вроде правильно..
вот тут успешно подключали к 9g45 термо ds18b20:
http://starterkit.ru/html/index.php?name=forum&op=view&id=15335

насколько я помню, датчик сам ничего не говорит, а отвечает на поллинг хоста по w1. по идее, в момент загрузки должна пройти пачка импульсов на предмет поиска слейвов..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 18.02.2015 22:20 Редактировалось 18.02.2015 22:21 Сообщение: 3
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
О, спасибо большое, очень полезная темка.
Просмотрел отличия с моей ситуацией:
1. В той теме БСП программируется непосредственно
2. Там дополнительно включается опция ядра simple 64 bit memory - не понимаю, зачем, но попробую включить
3. В параметрах пина указана опция Multidrive, я ее не включал, вместо этого включал Pull-Up. Завтра попробую с этими изменениями.
И самое главное - все-таки, мастер должен сам обнаруживать слейвов, завтра псмотрю на импульсы при запуске.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux