现在如何在 OrangePi PC plus(SoC H3)上访问 Armbian 3.4.113 上的 GPIO,因为使用gpio-sunxi
和编辑.fex
-file 的旧方法已过时(想分享这个...)
1 回答
一般流程在 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 个字母)1
, PB2有引脚号34
(' B ' 是第 2 个字母),PG7有引脚号199
(' G ' 是第 7 个字母 (7-1)*32+7=199)
物理标题上的位置再次不同,参见。下图
因此可以使用物理头上的引脚 40 的 PG7
echo 199 > sys/class/gpio/export
图片来源: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/gpio
ie 中,用于 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 尚不可用