Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== GPIO ====== {{page>meta:infobox:wip&noheader&nofooter&noeditbtn}} Читаем [[wp>General Purpose Input/Output]], а так же [[http://www.mjmwired.net/kernel/Documentation/gpio.txt|соглашение доступа GPIO в Linux]]. * [[docs:guide-user:hardware:mmc_over_gpio]] * [[toh/tp-link/tl-wr1043nd#GPIOs|GPIOs of AR913x SoC]] * [[/oldwiki/port.gpio|oldwiki GPIO]] ===== Аппаратные средства ===== GPIO, в основном, используется для кнопок и светодиодов. They only safely supply or sink (pull to GND) a maximum of 4mA aprox., напряжение зачастую 3V в активном состоянии. Только два положения возможны: "приём=low" или "передачу=high". В зависимости от того как устройство активировано в GPIO, определяется состояние "приём" или "передача". * **active high**: устройство активируется когда GPIO в режиме "передачи" * **active low**: устройство активируется когда GPIO в режиме "приёма" На этом изображении можно увидеть как GPIO управляет кнопками или светодиодами для работы на "приём=low" или "передачу=high". \\ \\ {{media:doc:hardware:gpio_high_low.png?600|}}\\ \\ GPIO можно использовать для таких задач: ^ ^ Модуль ядра ^ Описание ^ ^ [[docs:techref:hardware:port.gpio:1-wire]] | kmod-w1-master-gpio | [[http://ru.wikipedia.org/wiki/1-Wire|1-wire]] | ^ [[docs:guide-user:hardware:pwm]] | kmod-pwm-gpio | [[http://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%80%D0%BE%D1%82%D0%BD%D0%BE-%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F|ШИМ]] | ^ [[docs:techref:hardware:port.gpio:spi]] | kmod-spi-gpio | [[http://ru.wikipedia.org/wiki/Serial_Peripheral_Interface|Serial Peripheral Interface]] | ^ ::: | kmod-mmc-over-gpio | [[docs:guide-user:hardware:mmc_over_gpio|MMC/SD карта через GPIO]] | ^ [[docs:techref:hardware:port.i2c|I2C]] | kmod-i2c-gpio | [[http://uk.wikipedia.org/wiki/I2C|I2C]] | ^ [[docs:guide-user:hardware:lirc]] | нет модуля | ИК-управление Linux | ^ [[docs:techref:hardware:port.gpio:rotary_encoder]] | kmod-input-gpio-encoder | [[http://ru.wikipedia.org/wiki/%D0%94%D0%B0%D1%82%D1%87%D0%B8%D0%BA_%D1%83%D0%B3%D0%BB%D0%B0_%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0|GPIO датчик угла поворота]] | ==== GPIO прерывания ==== GPIO прерывание используется тогда, когда GPIO используется для приёма и нужно управлять высокочастотным сигналом. Без прерываний, GPIO приём должен контролироваться используя метод **голосования**. Не все платы имеют GPIO прерывания. Например **bcm63xx SoCs не имеет GPIO прерываний** и по этому их кнопки опрашиваются. В результате этого, некоторые драйверы ввода перечисленные выше не будет работать в этих платах. ===== Программное обеспечение ===== В linux GPIO могут получить доступ через GPIO SYSFS интерфейс: **/sys/class/gpio/** Для контроля GPIO можно использовать **gpioctl-sysfs**. Или скриптом ниже можно найти незадействованные кнопками или светодиодами GPIO. Для запуска, сохраните ниже приведенный скрипт с именем **ngpio.sh**, залейте в роутер и запускайте командой : <code> sh ngpio.sh [номер_GPIO] [out_или_in] </code> // Узнайте заранее сколько GPIO имеет ваш ЦП// Пример: <code> sh ngpio.sh 0 out </code> Код скрипта: <code bash> #!bin/sh show_usage() { printf "\ngpio.sh <gpio pin number> [in|out [<value>]]\n" } if [ \( $# -eq 0 \) -o \( $# -gt 3 \) ] ; then show_usage printf "\n\nERROR: incorrect number of parameters\n" exit 255 fi #doesn't hurt to export a gpio more than once (echo $1 > /sys/class/gpio/export) >& /dev/null if [ $# -eq 1 ] ; then cat /sys/class/gpio/gpio$1/value exit 0 fi if [ \( "$2" != "in" \) -a \( "$2" != "out" \) ] ; then show_usage printf "\n\nERROR: second parameter must be 'in' or 'out'\n" exit 255 fi echo $2 > /sys/class/gpio/gpio$1/direction if [ $# -eq 2 ] ; then cat /sys/class/gpio/gpio$1/value exit 0 fi VAL=$3 if [ $VAL -ne 0 ] ; then VAL=1 fi echo $VAL > /sys/class/gpio/gpio$1/value </code> Last modified: 2019/09/09 17:40by vgaetera