|
|
Опции темы | Поиск в этой теме | Опции просмотра |
16.01.2015, 01:52 | #1 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 |
Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Расширитель gpio (ввода/вывода) портов на чипе PCF8574
Почитав статью, и использовав всего 2 - gpio для i2c получаем очень много дополнительных выводов (ввода/вывода). Которыми можно легко управлять как обычными пинами. Пример с LCD: Фаил hd44780.ko с архива закинуть в /lib/modules/3.10.4 Исправил в модуле hd44780 (использовавший 6-пинов проца) под присланные с китая i2c платы на PCF8574. wn1602 и 2004 по шине i2c работают. Вот моё соответствие по выводам от pcf8574 к lcd. Встречал три разных подключения. * Pins of PCF8574 : P3. P0. P1. P2.. P7 P6 P5. P4 * Pins of HD44780: LED RS RW E... D7 D6 D5 D4 Линия SDA к gpio-18 Линия SCL к gpio-20 Адрес pcf8574 0x27 (к которому подключен lcd wn2004) Код:
opkg update opkg install i2c-tools opkg install kmod-i2c-gpio-custom insmod i2c-dev insmod i2c-gpio-custom bus0=0,18,20 echo pcf8574 0x27 > /sys/bus/i2c/devices/i2c-0/new_device echo 57 > /sys/class/gpio/export echo 59 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio57/direction echo out > /sys/class/gpio/gpio59/direction insmod hd44780 echo 1 > /sys/class/gpio/gpio59/value Курсор в начало второй строки printf '\xff\xc0' > /dev/hd44780 и DATa=$(date +%d'.'%b'. '%H:%M) && echo '*'$DATa' * ' > /dev/hd44780 На табло второй строки будет: *16.Jan. 00:35 * Курсор в начало первой строки printf '\xff\x80' > /dev/hd44780 и echo -n 'TP-Link CyberWrt' > /dev/hd44780 На табло первой строки будет: TP-Link CyberWrt -- А так еще одну pcf8574 подключил: Адрес pcf8574A 0x38 Код:
echo pcf8574 0x38 > /sys/bus/i2c/devices/i2c-0/new_device echo 48 > /sys/class/gpio/export echo 49 > /sys/class/gpio/export echo 50 > /sys/class/gpio/export echo 51 > /sys/class/gpio/export echo 52 > /sys/class/gpio/export echo 53 > /sys/class/gpio/export echo 54 > /sys/class/gpio/export echo 55 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio48/direction echo in > /sys/class/gpio/gpio49/direction echo in > /sys/class/gpio/gpio50/direction echo in > /sys/class/gpio/gpio51/direction echo out > /sys/class/gpio/gpio52/direction echo out > /sys/class/gpio/gpio53/direction echo out > /sys/class/gpio/gpio54/direction echo out > /sys/class/gpio/gpio55/direction cat /sys/kernel/debug/gpio и i2cdetect -y i2c-gpio0 Последний раз редактировалось melsem; 24.09.2015 в 07:53. |
16.01.2015, 18:36 | #2 |
Moderator
Регистрация: 19.10.2013
Сообщений: 479
Вес репутации: 600 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Один ньюанс и пример:
0x27 и 0x26 - адреса устройств на i2c, две платы с pcf8574. И 0x38 - адрес с pcf8574A. При добавлении первым, нового устройства gpio будут от gpio-56 до gpio-63. echo pcf8574 0x27 > /sys/bus/i2c/devices/i2c-0/new_device При добавлении вторым, нового устройства gpio будут от gpio-48 до gpio-55. echo pcf8574 0x38 > /sys/bus/i2c/devices/i2c-0/new_device И третьим, нового устройства gpio будут от gpio-40 до gpio-47. echo pcf8574 0x26 > /sys/bus/i2c/devices/i2c-0/new_device |
13.03.2015, 22:20 | #3 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Замутил такую тему Мультик показывает напряжение на gpio, подвязанное в самом роутере на 0 (10кОм) и через PCF8574 (4.7кОм) на 5В, т.е. получается делитель и на gpio 3.1В получаем.
|
18.05.2015, 16:25 | #4 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Сейчас ток заметил в логе сыпяться
Код:
Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] WARNING: at drivers/gpio/gpiolib.c:1930 __gpio_set_value+0x40/0xf0() Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Modules linked in: w1_gpio_custom hd44780 i2c_gpio_custom w1_therm w1_gpio i2c_dev wire ledtrig_netdev ath9k ath9k_common ath9k_hw ath mac80211 crc_ccitt cfg80211 compat arc4 crypto_blkcipher aead leds_gpio ledtrig_timer ledtrig_default_on ehci_platform ehci_hcd gpio_button_hotplug usbcore usb_common nls_base crc16 input_core crypto_hash Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] CPU: 0 PID: 11502 Comm: sh Tainted: G W 3.10.4 #1 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Stack : 00000006 00000000 00000000 00000000 00000000 00000000 80392a8e 0000003b Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 838d5ef8 802d1c44 80372a04 803213db 00002cee 00000100 ffffffbf 76fbc7b0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 76fdcd60 80078cac 00000003 80076664 00000000 00000000 802d34e0 83385db4 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00385db4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 83385d40 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ... Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Call Trace: Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8006df68>] show_stack+0x48/0x70 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<800767e8>] warn_slowpath_common+0x78/0xa8 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<80076830>] warn_slowpath_null+0x18/0x24 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8018d5bc>] __gpio_set_value+0x40/0xf0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<83352040>] 0x83352040 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ---[ end trace 4495145f33ba1940 ]--- Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ------------[ cut here ]------------ Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] WARNING: at drivers/gpio/gpiolib.c:1930 __gpio_set_value+0x40/0xf0() Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Modules linked in: w1_gpio_custom hd44780 i2c_gpio_custom w1_therm w1_gpio i2c_dev wire ledtrig_netdev ath9k ath9k_common ath9k_hw ath mac80211 crc_ccitt cfg80211 compat arc4 crypto_blkcipher aead leds_gpio ledtrig_timer ledtrig_default_on ehci_platform ehci_hcd gpio_button_hotplug usbcore usb_common nls_base crc16 input_core crypto_hash Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] CPU: 0 PID: 11502 Comm: sh Tainted: G W 3.10.4 #1 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Stack : 00000006 00000000 00000000 00000000 00000000 00000000 80392a8e 0000003b Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 838d5ef8 802d1c44 80372a04 803213db 00002cee 00000100 ffffffbf 76fbc7b0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 76fdcd60 80078cac 00000003 80076664 00000000 00000000 802d34e0 83385db4 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00385db4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 83385d40 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ... Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Call Trace: Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8006df68>] show_stack+0x48/0x70 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<800767e8>] warn_slowpath_common+0x78/0xa8 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<80076830>] warn_slowpath_null+0x18/0x24 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8018d5bc>] __gpio_set_value+0x40/0xf0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8335204c>] 0x8335204c Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ---[ end trace 4495145f33ba1941 ]--- Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ------------[ cut here ]------------ Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] WARNING: at drivers/gpio/gpiolib.c:1930 __gpio_set_value+0x40/0xf0() Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Modules linked in: w1_gpio_custom hd44780 i2c_gpio_custom w1_therm w1_gpio i2c_dev wire ledtrig_netdev ath9k ath9k_common ath9k_hw ath mac80211 crc_ccitt cfg80211 compat arc4 crypto_blkcipher aead leds_gpio ledtrig_timer ledtrig_default_on ehci_platform ehci_hcd gpio_button_hotplug usbcore usb_common nls_base crc16 input_core crypto_hash Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] CPU: 0 PID: 11502 Comm: sh Tainted: G W 3.10.4 #1 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Stack : 00000006 00000000 00000000 00000000 00000000 00000000 80392a8e 0000003b Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 838d5ef8 802d1c44 80372a04 803213db 00002cee 00000100 ffffffbf 76fbc7b0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 76fdcd60 80078cac 00000003 80076664 00000000 00000000 802d34e0 83385db4 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00385db4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 83385d40 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ... Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Call Trace: Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8006df68>] show_stack+0x48/0x70 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<800767e8>] warn_slowpath_common+0x78/0xa8 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<80076830>] warn_slowpath_null+0x18/0x24 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8018d5bc>] __gpio_set_value+0x40/0xf0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<83352060>] 0x83352060 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ---[ end trace 4495145f33ba1942 ]--- Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ------------[ cut here ]------------ Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] WARNING: at drivers/gpio/gpiolib.c:1930 __gpio_set_value+0x40/0xf0() Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Modules linked in: w1_gpio_custom hd44780 i2c_gpio_custom w1_therm w1_gpio i2c_dev wire ledtrig_netdev ath9k ath9k_common ath9k_hw ath mac80211 crc_ccitt cfg80211 compat arc4 crypto_blkcipher aead leds_gpio ledtrig_timer ledtrig_default_on ehci_platform ehci_hcd gpio_button_hotplug usbcore usb_common nls_base crc16 input_core crypto_hash Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] CPU: 0 PID: 11502 Comm: sh Tainted: G W 3.10.4 #1 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Stack : 00000006 00000000 00000000 00000000 00000000 00000000 80392a8e 0000003b Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 838d5ef8 802d1c44 80372a04 803213db 00002cee 00000100 ffffffbf 76fbc7b0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 76fdcd60 80078cac 00000003 80076664 00000000 00000000 802d34e0 83385db4 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00385db4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 83385d40 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ... Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Call Trace: Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8006df68>] show_stack+0x48/0x70 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<800767e8>] warn_slowpath_common+0x78/0xa8 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<80076830>] warn_slowpath_null+0x18/0x24 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<8018d5bc>] __gpio_set_value+0x40/0xf0 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] [<83352074>] 0x83352074 Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] Mon May 18 17:18:39 2015 auth.err kernel: [ 379.080000] ---[ end trace 4495145f33ba1943 ]--- Может в скрипте что не так, выложу на всякий случай Код:
#!/bin/sh printf '\xff\x80' > /dev/hd44780 DATa=$(awk -F= '/t=/ {printf "%.01f\n", $2/1000}' /sys/bus/w1/drivers/w1_slave_driver/28-00043a4b18ff/w1_slave) echo 'Dom1-'$DATa"C" > /dev/hd44780 printf '\xff\xc0' > /dev/hd44780 DATa=$(date +%d'.'%b'. '%H:%M) && echo '*'$DATa' * ' > /dev/hd44780 Код:
[ 3203.170000] WARNING: at drivers/gpio/gpiolib.c:1930 __gpio_set_value+0x40/0xf0() [ 3203.170000] Modules linked in: w1_gpio_custom hd44780 i2c_gpio_custom w1_therm w1_gpio i2c_dev wire ledtrig_netdev ath9k ath9k_common ath9k_hw ath mac80211 crc_ccitt cfg80211 compat arc4 crypto_blkcipher aead leds_gpio ledtrig_timer ledtrig_default_on ehci_platform ehci_hcd gpio_button_hotplug usbcore usb_common nls_base crc16 input_core crypto_hash [ 3203.170000] CPU: 0 PID: 3953 Comm: sh Tainted: G W 3.10.4 #1 [ 3203.170000] Stack : 00000006 00000000 00000000 00000000 00000000 00000000 80392a8e 0000003a [ 3203.170000] 838d5ef8 802d1c44 80372a04 803213db 00000f71 00000063 00000030 00000020 [ 3203.170000] 00000000 80078cac 00000003 80076664 00000000 00000000 802d34e0 83383db4 [ 3203.170000] 00383db4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 3203.170000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 83383d40 [ 3203.170000] ... [ 3203.170000] Call Trace: [ 3203.170000] [<8006df68>] show_stack+0x48/0x70 [ 3203.170000] [<800767e8>] warn_slowpath_common+0x78/0xa8 [ 3203.170000] [<80076830>] warn_slowpath_null+0x18/0x24 [ 3203.170000] [<8018d5bc>] __gpio_set_value+0x40/0xf0 [ 3203.170000] [<83352074>] 0x83352074 [ 3203.170000] [ 3203.170000] ---[ end trace 4495145f33bf1b96 ]--- [ 3203.440000] hd44780 LCD driver (v1.1) unloaded. Последний раз редактировалось sakatgg; 18.05.2015 в 17:10. |
28.05.2015, 14:30 | #5 |
Senior Member
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
А нельзя расширить gpio не за счеть 2 свободных а за счет UART? то есть i2c подключать к uart
|
28.05.2015, 21:33 | #6 |
Senior Member
Регистрация: 04.01.2013
Адрес: Москва
Сообщений: 461
Вес репутации: 1152 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Через USB можно, устройство i2c-tiny-usb.
Только, чей-то в BarrierBreaker криво оно работает(точнее I2c-tools c ним). В АА и в trunk более адекватно |
28.05.2015, 23:41 | #7 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Я так понимаю что avgaz хотел использовать пны Rx и Tx как GPIO
На форуме тема уже обсуждалась использования пинов UART |
29.05.2015, 18:44 | #8 | |
Senior Member
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
Цитата:
Команда insmod i2c-dev выдает insmod: can't insert 'i2c-dev': File exists Хотя все предыдущие прошли вроде нормально |
|
31.05.2015, 16:22 | #9 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
ls /dev
Если там есть i2c-0 Вводи дальше insmod i2c-gpio-custom bus0=0,18,20 - свои и далее смотри cat /sys/kernel/debug/gpio Последний раз редактировалось sakatgg; 31.05.2015 в 16:25. |
01.06.2015, 00:40 | #10 |
Senior Member
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0 |
Re: Расширитель gpio (ввода/вывода) TP-LINK TL-MR3020 по i2c на PCF8574
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|