Доступ к GPIO на OrangePI PC Plus (H3) на Armbian 3.4.113 и новее

как получить доступ к GPIO на Armbian 3.4.113 на OrangePi PC plus (SoC H3) теперь, когда старый метод с использованием gpio-sunxi и редактирование файла .fex устарел (хочу поделиться этим...)

+3
источник поделиться
1 ответ

Общее разбирательство описано в https://linux-sunxi.org/GPIO

Доступ к контактам GPIO осуществляется через файловую систему sysfs. Чтобы включить конкретный вывод, он должен быть экспортирован в /sys/class/gpio/export

для вывода PA1 команда будет echo 1 > sys/class/gpio/export. Номер штыря вычисляется по следующей формуле:

  (position of letter in alphabet - 1) * 32 + pin number

PA1 имеет номер штыря ('A' - первая буква) 1, PB2 имеет номер контакта 34 ('B' - вторая буква), PG7 имеет номер контакта 199 ('G' - 7-я буква (7-1) * 32 + 7 = 199)

позиции в заголовке физический снова различаются, см. рисунок ниже

поэтому для включения PG7, который является выводом 40 на физическом заголовке, можно использовать

   echo 199 > sys/class/gpio/export

OrangePi PC плюс заголовок GPIO

источник изображения: https://orange314.com/Hardware

обычно команда echo как echo "199" sys/class/gpio/export дает ошибку Permission denied

простое решение:

Чтобы сделать одноразовое манипулирование выводом GPIO, вам нужно запустить сначала откройте оболочку в качестве суперпользователя, затем используйте эхо. Например, для поверните штифт A10:

$ sudo sh
# echo 10 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio10/direction
# echo 1 > /sys/class/gpio/gpio10/value

Или вы можете использовать тройник, чтобы избежать создания подоболочки:

$ echo 10 | sudo tee /sys/class/gpio/export
$ echo out | sudo tee /sys/class/gpio/gpio10/direction
$ echo 1 | sudo tee /sys/class/gpio/gpio10/value

источник: https://forum.armbian.com/index.php?/topic/4052-problem-using-gpio-pins-on-legacy-kernel/

Альтернативой может быть создание новой группы и изменение группы каталога /sys/class/gpio для этой новой группы:

вы можете создать группу gpio, добавить пользователя к ней, экспортировать gpio и т.д. следующим образом:

sudo groupadd gpio
sudo usermod -aG gpio <myusername>
su <myusername>
sudo chgrp gpio /sys/class/gpio/export
sudo chgrp gpio /sys/class/gpio/unexport
sudo chmod 775 /sys/class/gpio/export
sudo chmod 775 /sys/class/gpio/unexport

Это дает возможность пользователю экспортировать и экспортировать.

Как только вы экспортируете контакты, вы можете chgrp и chmod их также (не забыть их содержимое) и использовать их как обычно.

echo "18" > /sys/class/gpio/export
chgrp -HR /sys/class/gpio/gpio18
chmod -R 775 /sys/class/gpio/gpio18

Теперь ваш пользователь имеет доступ к первому выводу GPIO 18.

источник: https://www.raspberrypi.org/forums/viewtopic.php?t=5185

при выполнении echo с разрешениями в каталоге /sys/class/gpio появляется новый каталог, т.е. для PA2 (который является номером вывода 2 и номером 22 на физическом заголовке), это /sys/class/gpio/gpio2

чтобы настроить контактный номер 2, вы должны записать определенные значения в файлы в /sys/class/gpio/gpio2

т.е. установка вывода 2 для вывода и "высокая" запись

echo "out" > /sys/class/gpio/gpio2/direction

echo "1" > /sys/class/gpio/gpio2/value

при выключении GPIO контакты должны быть не показаны с помощью i.e.

echo 2 > /sys/class/gpio/unexport для вывода 2 (PA2, номер 22 на физическом заголовке)

Альтернативой для доступа к GPIO является использование python, однако для плат на базе H3 WiringOP еще не доступен

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос