Перейти к содержанию

Навигация

Работа с GPIO: различия между версиями

Нет описания правки
Строка 1: Строка 1:
<languages/>
<languages/>
<translate>
<translate>
=Страница находится в процессе редактирования!!=<!--T:40-->
<!--T:4-->
<b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b>
<!--T:1-->
<!--T:1-->
В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы расширения, часть используется для служебных целей.
В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы расширения, часть используется для служебных целей.
Строка 8: Строка 13:
Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в статье [[GPIO]].
Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в статье [[GPIO]].


<!--T:4-->
<b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b>


<!--T:5-->
==Работа из userspace== <!--T:6-->
На некоторых GPIO можно программно установить 47к подтяжку к +3.3В. См. [[Special:MyLanguage/Pin_pull-up|Pin_pull-up]].


===Интерфейс sysfs в Linux === <!--T:6-->
===Интерфейс sysfs в Linux === <!--T:6-->
Строка 92: Строка 94:
</pre>
</pre>


 
<!--T:13-->
Пример:
# Находим номер GPIO, соответсвующий вашей версии контролера нужному клеммнику в таблице [[GPIO|WB2.8]]. Для клеммника номер 2 в версии 2.8 это GPIO 32.
# Экспортируем GPIO в sysfs
#:<pre>root@wirenboard:~# echo 32 > /sys/class/gpio/export</pre>
# Устанавливаем GPIO в режим вывода для управления транзистором. Это обязательно, т.к. GPIO может находится в режиме ввода и иметь высокий импенданс, оставляя транзистор в неопределённом состоянии.
#:<pre>root@wirenboard:~# echo out > /sys/class/gpio/gpio32/direction</pre>
# Открываем транзистор, подавая логический высокий уровень на затвор:
#:<pre>root@wirenboard:~# echo 1 > /sys/class/gpio/gpio32/value</pre>
# Закрываем транзистор, подавая логический ноль на затвор:
#:<pre>root@wirenboard:~# echo 0 > /sys/class/gpio/gpio32/value</pre>


====Интерфейс sysfs и прерывания==== <!--T:22-->
====Интерфейс sysfs и прерывания==== <!--T:22-->
Строка 107: Строка 119:


<!--T:25-->
<!--T:25-->
Пример:
Пример работы с прерываниями:
<pre>
<pre>
root@wirenboard:~# echo 3 >  /sys/class/gpio/export # экспортируем GPIO номер 3 (TB10 на WB3.3)
root@wirenboard:~# echo 3 >  /sys/class/gpio/export # экспортируем GPIO номер 3 (TB10 на WB3.3)
Строка 140: Строка 152:
<!--T:32-->
<!--T:32-->
См. [http://olimex.wordpress.com/2012/09/11/imx233-olinuxino-gpios-faster-and-faster/] , [https://github.com/OLIMEX/OLINUXINO/blob/master/SOFTWARE/iMX233/gpio-mmap.h]
См. [http://olimex.wordpress.com/2012/09/11/imx233-olinuxino-gpios-faster-and-faster/] , [https://github.com/OLIMEX/OLINUXINO/blob/master/SOFTWARE/iMX233/gpio-mmap.h]
==Работа из ядра==<!--T:44-->


===GPIO и Device Tree=== <!--T:33-->
===GPIO и Device Tree=== <!--T:33-->
<!--T:5-->
На некоторых GPIO можно программно установить 47к подтяжку к +3.3В. См. [[Special:MyLanguage/Pin_pull-up|Pin_pull-up]].


<!--T:34-->
<!--T:34-->
Строка 164: Строка 181:
};
};
</pre>
</pre>
==Пример работы в Linux== <!--T:11-->
<!--T:13-->
# Находим номер GPIO, соответсвующий вашей версии контролера нужному клеммнику в таблице [[GPIO|WB2.8]]. Для клеммника номер 2 в версии 2.8 это GPIO 32.
# Экспортируем GPIO в sysfs
#:<pre>root@wirenboard:~# echo 32 > /sys/class/gpio/export</pre>
# Устанавливаем GPIO в режим вывода для управления транзистором. Это обязательно, т.к. GPIO может находится в режиме ввода и иметь высокий импенданс, оставляя транзистор в неопределённом состоянии.
#:<pre>root@wirenboard:~# echo out > /sys/class/gpio/gpio32/direction</pre>
# Открываем транзистор, подавая логический высокий уровень на затвор:
#:<pre>root@wirenboard:~# echo 1 > /sys/class/gpio/gpio32/value</pre>
# Закрываем транзистор, подавая логический ноль на затвор:
#:<pre>root@wirenboard:~# echo 0 > /sys/class/gpio/gpio32/value</pre>
</translate>
</translate>
wb_editors
556

правок