3690
правок
Admin (обсуждение | вклад) |
|||
Строка 7: | Строка 7: | ||
<b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b> | <b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b> | ||
На некоторых GPIO (в частности на 3х GPIO, выведенных на клеммники в Wiren Baord rev. 2.8) можно программно установить 47к подтяжку к +3.3В. См. [[Pin_pull-up]]. | |||
===Интерфейс sysfs в Linux === | ===Интерфейс sysfs в Linux === | ||
Строка 69: | Строка 72: | ||
echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N | echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N | ||
</pre> | </pre> | ||
====Интерфейс sysfs и прерывания==== | |||
Через интерфейс sysfs можно запросить прерывания по изменению состояния процессора. | |||
Установка прерывания производится путём записи значения в файл "edge". Значения могут быть: | |||
* "none" - отключить прерывание | |||
* "rising" - включить прерывание по нисходящему фронту | |||
* "falling" - включить прерывание по восодящему фронту | |||
* "both" - включить прерывание по обеим фронтам. | |||
Пример: | |||
<pre> | |||
root@wirenboard:~# echo 3 > /sys/class/gpio/export # экспортируем GPIO номер 3 (TB10 на WB3.3) | |||
root@wirenboard:~# cat /sys/class/gpio/gpio3/edge # проверяем состояние прерывания | |||
none | |||
root@wirenboard:~# echo falling > /sys/class/gpio/gpio3/edge # устанавливаем прерывание по нисходящему фронту | |||
root@wirenboard:~# cat /proc/interrupts | grep gpiolib # прерывание появилось в списке. 26 - внутренний номер прерывания, 0 - количество событий | |||
26: 0 gpio-mxs 3 gpiolib | |||
root@wirenboard:~# cat /proc/interrupts | grep gpiolib # после нескольких собтий, 76 - количество событий | |||
26: 76 gpio-mxs 3 gpiolib | |||
</pre> | |||
Прерывания можно ловить из userspace с помощью системного вызова epoll() и select() на файл value. | |||
Пример работы см. https://github.com/contactless/wiegand-linux-sysfs | |||
См. также http://elinux.org/GPIO | |||
===Прямое обращение через память процессора=== | ===Прямое обращение через память процессора=== |