Чижик 0 20 марта, 2017 Опубликовано 20 марта, 2017 (изменено) · Жалоба Добрый день. Через конвертер i2c-tiny-usb подключен расширитель pcf8574. Система на базе Intel. Ядро скомпилировано с модулями поддержки указанных устройств. Имеем вывод Last login: Mon Mar 20 12:58:17 MSK 2017 on tty1 Linux SONY 3.16.39v1 #1 SMP Wed Mar 15 10:39:26 MSK 2017 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@SONY:~# uname -a Linux SONY 3.16.39v1 #1 SMP Wed Mar 15 10:39:26 MSK 2017 i686 GNU/Linux root@SONY:~# modprobe i2c-tiny-usb [ 41.713431] usbcore: registered new interface driver i2c-tiny-usb root@SONY:~# modprobe i2c-dev [ 48.306626] i2c /dev entries driver root@SONY:~# [ 53.808164] usb 5-2: new high-speed USB device number 5 using ehci-pci [ 53.940723] usb 5-2: New USB device found, idVendor=0409, idProduct=005a [ 53.940879] usb 5-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 53.941709] hub 5-2:1.0: USB hub found [ 53.941937] hub 5-2:1.0: 4 ports detected [ 54.228148] usb 5-2.4: new low-speed USB device number 6 using ehci-pci [ 54.346406] usb 5-2.4: New USB device found, idVendor=0403, idProduct=c631 [ 54.346566] usb 5-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 54.346713] usb 5-2.4: Product: i2c-tiny-usb [ 54.346803] usb 5-2.4: Manufacturer: Till Harbaum [ 54.347841] i2c-tiny-usb 5-2.4:1.0: version 1.05 found at bus 005 address 006 [ 54.348702] i2c i2c-6: connected i2c-tiny-usb device modprobe i2c-echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-6/new_device [ 65.011568] i2c i2c-6: new_device: Instantiated device ds1307 at 0x68 root@SONY:~# [ 65.122707] rtc-ds1307 6-0068: rtc core: registered ds1307 as rtc1 [ 65.131649] rtc-ds1307 6-0068: 56 bytes nvram echo ds1307 0echo pcf857x 0x20 > /sys/class/i2c-adapter/i2c-6/new_device [ 92.587659] i2c i2c-6: new_device: Instantiated device pcf857x at 0x20 root@SONY:~# i2cdetect -y 6 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- root@SONY:~# echo 76 > /sys/class/gpio/export -bash: echo: ошибка записи: Нет такого устройства На шине i2c три устройства. DS1307 подключается, регистрируется /dev/rtc1/.Все работает. Модуль PCF857x загружается, но как к нему обратиться через gpio не понятно. Какие пины можно зарегистрировать? Где это посмотреть или задать? Что означает выдаваемая ошибка? Что-то недоконфигурено в ядре? Конфиг ядра для GPIO # Pin controllers # # CONFIG_PINMUX is not set # CONFIG_PINCONF is not set # CONFIG_DEBUG_PINCTRL is not set CONFIG_PINCTRL_BAYTRAIL=y CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_GPIO_DEVRES=y CONFIG_GPIO_ACPI=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y # # Memory mapped GPIO drivers: # # CONFIG_GPIO_GENERIC_PLATFORM is not set # CONFIG_GPIO_IT8761E is not set # CONFIG_GPIO_F7188X is not set # CONFIG_GPIO_SCH311X is not set # CONFIG_GPIO_SCH is not set # CONFIG_GPIO_ICH is not set CONFIG_GPIO_VX855=m # CONFIG_GPIO_LYNXPOINT is not set # # I2C GPIO expanders: # # CONFIG_GPIO_MAX7300 is not set # CONFIG_GPIO_MAX732X is not set # CONFIG_GPIO_PCA953X is not set CONFIG_GPIO_PCF857X=m # CONFIG_GPIO_ADP5588 is not set Помогите вЪехать в тему. Куда посмотреть? PS Понятно что через i2c-tools пины pc8574 читаются и пишутся. Изменено 20 марта, 2017 пользователем Чижик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 20 марта, 2017 Опубликовано 20 марта, 2017 · Жалоба Помогите вЪехать в тему. Куда посмотреть? PS Понятно что через i2c-tools пины pc8574 читаются и пишутся. судя по номеру 20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- драйвер не "накрыл" обслуживание расширителя, отсюда и ругань: root@SONY:~# echo 76 > /sys/class/gpio/export -bash: echo: ошибка записи: Нет такого устройства сначала добейтесь, чтобы вместо 0x20 виделся "M", тогда драйвер должен создать структуры в /sys/class/gpio которые можно активизировать через echo номер 76 взяли от балды? у вас 8-ми портовый расширитель, значит блок номеров будет последовательно 8 устройств.. как я понимаю, система х86? как в них нарезают номера я не знаю, обычно в АРМах младшие номера заняты под систему, далее порты самого АРМа, потом порты периферии покопайтесь в документации к ядре в каталоге Documentation.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Чижик 0 20 марта, 2017 Опубликовано 20 марта, 2017 · Жалоба судя по номеру 20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- драйвер не "накрыл" обслуживание расширителя, отсюда и ругань: root@SONY:~# echo 76 > /sys/class/gpio/export -bash: echo: ошибка записи: Нет такого устройства сначала добейтесь, чтобы вместо 0x20 виделся "M", тогда драйвер должен создать структуры в /sys/class/gpio которые можно активизировать через echo Это понятно, что не накрыл. Почему? В /sys/class/i2c-adapter/i2c-6/ создается директория /6-0020/, но в отличии от /6-0068/ в ней не создаются структуры номер 76 взяли от балды? у вас 8-ми портовый расширитель, значит блок номеров будет последовательно 8 устройств.. как я понимаю, система х86? как в них нарезают номера я не знаю, обычно в АРМах младшие номера заняты под систему, далее порты самого АРМа, потом порты периферии покопайтесь в документации к ядре в каталоге Documentation.. да перебрал от балды номера от 0 до 100 ... но это так для текста, поскольку понятно, что модуль не встал. для систем х86 с нумерацией вопрос не очевидный ? и как то для такого случая непонятно где заданы номера GPIO (DTB для х86 нет ?) PS опечатка в листинге имя модуля gpio-pcf857x, а не как написано pcf857x.. Понятно, что тема с GPIO изъезжена, и разжёвана, но тем не менее не проходите мимо, какие соображения...? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 20 марта, 2017 Опубликовано 20 марта, 2017 · Жалоба Проверьте чтоб девайсы I2C не подрались по адресам. Например 24LC16 и PCF8563 на одной шине работать не захотят :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Чижик 0 20 марта, 2017 Опубликовано 20 марта, 2017 · Жалоба Классическая линуксовая засада. Модуль называется gpio-pcf857x.ko HO! загружаем командой echo pcf8574 0x20 > /sys/class/i2c-adapter/i2c-6/new_device и все срабатывает. Сейчас (после двух суток разглядывания листинга модуля) кажется логичным в стиле ЛИНУХ-ВЭЙ. Но требует раздвоения сознания. РЕШЕНО. PS Далее зреет вопрос по модулю PCA9685 и его связи с PWM-PCA9685 и PWM. Но это уже завтра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Чижик 0 22 марта, 2017 Опубликовано 22 марта, 2017 (изменено) · Жалоба Проверьте чтоб девайсы I2C не подрались по адресам. Например 24LC16 и PCF8563 на одной шине работать не захотят :) Да, это надо иметь ввиду. Чтоб была ясность - PCF8574 ... не имеют внутренних адресуемых регистров, поэтому не понимают "повторного старта", используемого для указания внутреннего адреса регистра уст-ва на шине I2c. И если их физ. адрес совпадает с внутренним адресом устройства на шине I2c, они "отзовутся" на этот адрес в адресной последовательности "повторного старта". Для них каждый "старт" - первый. PS Если PCF 8574 нормально "встал" на шину i2c, то в /sys/class/i2c-adapter/i2c-x/x-0020/ появится /gpio/gpiochip248 <-- первый номер GPIO, т.е. echo 248 > export .... echo 255 > export Изменено 22 марта, 2017 пользователем Чижик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться