在Armbian 3.4.113及更高版本上访问OrangePI PC Plus(H3)上的GPIO

时间:2017-09-28 07:48:47

标签: gpio orange-pi

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

1 个答案:

答案 0 :(得分:8)

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 PB2 的密码为{{1 (' B '是第二个字母), PG7 的引脚号为34(' G '是第7个字母(7 -1)* 32 + 7 = 199)

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

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

199

OrangePi PC plus GPIO header

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

通常像 echo 199 > sys/class/gpio/export 这样的echo命令会出现echo "199" sys/class/gpio/export错误

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

要对GPIO引脚进行一次性操作,您必须启动一个 首先将shell分离为超级用户,然后使用echo。例如 转动引脚A10:

Permission denied

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

$ sudo sh
# echo 10 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio10/direction
# echo 1 > /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 等如下:

$ 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

这使您的用户能够导出和取消导出。

导出引脚后,你也可以chgrp和chmod它们(不要 忘记他们的内容)并像往常一样使用它们。

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

现在您的用户可以访问第一个GPIO引脚18。

来源:https://www.raspberrypi.org/forums/viewtopic.php?t=5185

执行具有权限的echo "18" > /sys/class/gpio/export chgrp -HR /sys/class/gpio/gpio18 chmod -R 775 /sys/class/gpio/gpio18 时,echo中出现一个新目录,即对于PA2(物理标题上的引脚号2和数字22),它是/sys/class/gpio

要配置引脚号2,您必须为/sys/class/gpio/gpio2

中的文件写入特定值

用于将引脚2设置为输出和“高”写入

/sys/class/gpio/gpio2

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

当关闭GPIO时,引脚应该是未导出的,即

对于引脚2

echo "1" > /sys/class/gpio/gpio2/value PA2 ,物理标头上的数字 22

访问GPIO的替代方法是使用python,但是对于基于H3的主板,WiringOP尚不可用