![]() |
|
|
#1 |
|
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() |
Добрый день.
В составе hwmon есть драйвер для этого устройства. Добавил его, сбилдил прошивку, залил. В файловой системе появилась папка /bus/platform/drivers/sht15 c файликами bind, ubind, uevent И что делать дальше не пойму. Где прописать какое gpio будет sck, какое data? Там протокол похож на и2ц, но не совсем он. |
|
|
|
|
|
#2 |
|
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() |
После недели "секса" удалось заставить этот датчик работать на 2х gpio. Если кому интересно могу описать как это сделать.
|
|
|
|
|
|
#3 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Интересно, конечно
|
|
|
|
|
|
#4 |
|
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() |
Раньше для подключения датчика 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) | |
|
|