19.11.2014, 16:18 | #1 |
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 |
Сенсор sht15(11)
Добрый день.
В составе hwmon есть драйвер для этого устройства. Добавил его, сбилдил прошивку, залил. В файловой системе появилась папка /bus/platform/drivers/sht15 c файликами bind, ubind, uevent И что делать дальше не пойму. Где прописать какое gpio будет sck, какое data? Там протокол похож на и2ц, но не совсем он. |
20.11.2014, 20:03 | #2 |
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 |
Re: Сенсор sht15(11)
После недели "секса" удалось заставить этот датчик работать на 2х gpio. Если кому интересно могу описать как это сделать.
|
20.11.2014, 20:15 | #3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 |
Re: Сенсор sht15(11)
Интересно, конечно
|
21.11.2014, 12:49 | #4 |
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 |
Re: Сенсор sht15(11)
Раньше для подключения датчика SHT11 к Openwrt sht11 использовал конвертер SHT11-1W на PIC (http://www.fabiszewski.net/1-wire-slave/). В качестве головы использовал роутер TL-MR3020 и конвертер на CP2102 для подключения 1Wire и потом читал показания паченым Ditemp.
В этот раз для экспериментов я приобрел модуль Dragino HE (http://wiki.dragino.com/index.php?title=Dragino_HE). Это просто мечта после роутера (RAM: 64MB, Flash: 16MB, 14 multiplex GPIOs). Проц тот же AR9331, поддержка в Openwrt(barrier breaker) присутствует. Нашел я в конфигурации ядра модуль для этого датчика в разделе HWMON (device drivers->hardware monitoring->sensirion humidity and temperature sensor. SHT15 and compat), собрал прошивку и все что увидел из изменений, что в дереве файловой системы появилась папка и больше ничего. Код:
root@OpenWrt:~# ls -l /sys/bus/platform/drivers/sht15 --w------- 1 root root 4096 Nov 21 07:33 bind --w------- 1 root root 4096 Nov 21 07:33 uevent --w------- 1 root root 4096 Nov 21 07:33 unbind Код:
/** * struct sht15_platform_data - sht15 connectivity info * @gpio_data: no. of gpio to which bidirectional data line is * connected. * @gpio_sck: no. of gpio to which the data clock is connected. * @supply_mv: supply voltage in mv. Overridden by regulator if * available. * @checksum: flag to indicate the checksum should be validated. * @no_otp_reload: flag to indicate no reload from OTP. * @low_resolution: flag to indicate the temp/humidity resolution to use. */ struct sht15_platform_data { int gpio_data; int gpio_sck; int supply_mv; bool checksum; bool no_otp_reload; bool low_resolution; }; В секции инклудов добавляем Код:
//for sht15 #include <linux/platform_data/sht15.h> #include <linux/platform_device.h> //----- Код:
// SHT15 sensor platform_data static struct sht15_platform_data platform_data_sht15 = { .gpio_data = 27, .gpio_sck = 26, // .supply_mv = 3300, .checksum = 1, .low_resolution= 1, }; static struct platform_device sht15 = { .name = "sht15", .id = -1, .dev = { .platform_data = &platform_data_sht15, }, }; // end of SHT15 sensor platform_data В функцию с именем содержащим _setup, в моем случае static void __init dragino2_common_setup(void), у mr3020 - static void __init tl_mr3020_setup(void) в конец после инициализации других девайсов добавляем platform_device_register(&sht15); После этого я пересобрал прошивку и опять ни фига не получилось, т.к. судя по сообщению Код:
sht15 sht15.0: failed to get irq for data line sht15: probe of sht15.0 failed with error -22 После сборки ошибка по поводу прерывания пропала, появилась новая папка Код:
root@OpenWrt:~# ls -l /sys/devices/platform/sht15/ lrwxrwxrwx 1 root root 0 Nov 21 07:33 driver -> ../../../bus/platform/drivers/sht15 -rw-r--r-- 1 root root 4096 Nov 21 07:33 heater_enable -r--r--r-- 1 root root 4096 Nov 21 07:33 humidity1_fault -r--r--r-- 1 root root 4096 Nov 21 07:33 humidity1_input drwxr-xr-x 3 root root 0 Jan 1 1970 hwmon -r--r--r-- 1 root root 4096 Nov 21 07:33 modalias -r--r--r-- 1 root root 4096 Nov 21 07:33 name lrwxrwxrwx 1 root root 0 Nov 21 07:33 subsystem -> ../../../bus/platform -r--r--r-- 1 root root 4096 Nov 21 07:33 temp1_fault -r--r--r-- 1 root root 4096 Nov 21 07:33 temp1_input -rw-r--r-- 1 root root 4096 Nov 21 07:33 uevent Код:
#define SHT15_TSCKL 100 #define SHT15_TSCKH 100 Код:
#define SHT15_TSCKL 1000 #define SHT15_TSCKH 1000 Код:
root@OpenWrt:~# cat /sys/devices/platform/sht15/temp1_input 25000 root@OpenWrt:~# cat /sys/devices/platform/sht15/humidity1_input 36742 Из идей на будущее, надо как-то сделать инициализацию, что бы можно было выбирать GPIO и другие параметры. Или отдельный пакет сделать или будет откуда-нибудь считывать данные, например из файла. Последний раз редактировалось mcsa; 21.11.2014 в 12:55. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|