电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【NanoPi NEO2 开发板试用体验】NEO2 通过sysfs访问GPIO
【NanoPi NEO2 开发板试用体验】NEO2 通过sysfs访问GPIO
QiaoJiannan
LV3工程师
| 2017-06-30 14:42:19
浏览量 948
回复:0
发表新帖
之前发过有通过
WiringNP
的方式来访问GPIO,WiringNP是我用过最好的方式,但其实派还有一种GPIO的访问方式,那就是sysfs。完整手册请参考
https://linux-sunxi.org/GPIO
,这里只给出简要的翻译。
无需下载任何安装包,sysfs完全利用系统内核来操作GPIO。首先,需要了解GPIO的编号,请看下图:
其中Name列给出了GPIO的名称,如A12、A11、G11等,GPIO在系统里的编号是 (字母顺序 - A)x 32+数字,例如
A12 = (A-A) x 32 + 12 = 12
G11 = (G-A) x 32 + 11 = 6 x 32 + 11= 203
也就是BCM编号。接下来操作就简单了,一共需要三步
echo 编号 > /sys/class/gpio/export
写状态
echo out > /sys/class/gpio/gpio编号/direction
echo 0/1 > /sys/class/gpio/gpio编号/value
读状态
echo in > /sys/class/gpio/gpio编号/direction
more /sys/class/gpio/gpio编号/value
举例,比如203这个端口,如果作为输出就是
echo 203 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio203/direction
echo 1 > /sys/class/gpio/gpio203/value
作为输入就是
echo 203 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio203/direction
(这一步有可能会失败,没关系,默认就是in方向)
more /sys/class/gpio/gpio203/value
由于/sys目录就是文件系统中的文件,所以,程序中可以用任何语言直接操作即可,但必须使用root权限。这种方法不局限于任何安装镜像,Debian、Ubuntu都适用,而且对内核版本没要求,如果WiringNP安装失败的话,试试这种方法吧。
之前发过有通过
WiringNP
的方式来访问GPIO,WiringNP是我用过最好的方式,但其实派还有一种GPIO的访问方式,那就是sysfs。完整手册请参考
https://linux-sunxi.org/GPIO
,这里只给出简要的翻译。
无需下载任何安装包,sysfs完全利用系统内核来操作GPIO。首先,需要了解GPIO的编号,请看下图:
其中Name列给出了GPIO的名称,如A12、A11、G11等,GPIO在系统里的编号是 (字母顺序 - A)x 32+数字,例如
A12 = (A-A) x 32 + 12 = 12
G11 = (G-A) x 32 + 11 = 6 x 32 + 11= 203
也就是BCM编号。接下来操作就简单了,一共需要三步
echo 编号 > /sys/class/gpio/export
写状态
echo out > /sys/class/gpio/gpio编号/direction
echo 0/1 > /sys/class/gpio/gpio编号/value
读状态
echo in > /sys/class/gpio/gpio编号/direction
more /sys/class/gpio/gpio编号/value
举例,比如203这个端口,如果作为输出就是
echo 203 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio203/direction
echo 1 > /sys/class/gpio/gpio203/value
作为输入就是
echo 203 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio203/direction
(这一步有可能会失败,没关系,默认就是in方向)
more /sys/class/gpio/gpio203/value
由于/sys目录就是文件系统中的文件,所以,程序中可以用任何语言直接操作即可,但必须使用root权限。这种方法不局限于任何安装镜像,Debian、Ubuntu都适用,而且对内核版本没要求,如果WiringNP安装失败的话,试试这种方法吧。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:QiaoJiannan
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子