8

现在如何在 OrangePi PC plus(SoC H3)上访问 Armbian 3.4.113 上的 GPIO,因为使用gpio-sunxi和编辑.fex-file 的旧方法已过时(想分享这个...)

4

1 回答 1

13

一般流程在 https://linux-sunxi.org/GPIO中有描述

通过sysfs文件系统访问 GPIO 引脚。要启用特定引脚,必须将其导出到/sys/class/gpio/export

对于引脚PA1,命令为 echo 1 > sys/class/gpio/export。引脚编号由以下公式计算:

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

PA1有引脚号(' A ' 是第 1 个字母)1PB2有引脚号34(' B ' 是第 2 个字母),PG7有引脚号199(' G ' 是第 7 个字母 (7-1)*32+7=199)

物理标题上的位置再次不同,参见。下图

因此可以使用物理头上的引脚 40 的 PG7

   echo 199 > sys/class/gpio/export

OrangePi PC 加 GPIO 接头

图片来源:https ://orange314.com/Hardware

通常, echo 命令之类 echo "199" sys/class/gpio/export 的会Permission denied出错

一个简单的解决方案如下:

要一次性操作 GPIO 引脚,您必须先以超级用户身份启动单独的 shell,然后使用 echo。例如打开引脚 A10:

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

或者您可以使用 tee 来避免创建子外壳:

$ 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/gpioie 中,用于 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 时,应使用 ie 取消导出引脚

echo 2 > /sys/class/gpio/unexport对于引脚 2(PA2 ,物理接头上的编号22 )

访问 GPIO 的另一种方法是使用 python,但是对于基于 H3 的板,WiringOP 尚不可用

于 2017-09-28T08:31:48.613 回答