如何在OrangePi PC plus(SoC H3)上使用Armbian 3.4.113访问GPIO,因为使用Object.create()
和编辑gpio-sunxi
文件的旧方法已过时(想要分享这个... 。)
答案 0 :(得分:8)
通过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
图片来源: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尚不可用