打印
[应用方案]

在用户应用中使用GPIO

[复制链接]
409|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sj8zw8|  楼主 | 2023-6-27 09:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
GPIO, IO, gp, pi
目的
GPIO是最基础的外设,使用频率也非常高,这篇文章将简单体验在NUC980 Liunx用户应用中使用GPIO功能。

这篇文章中内容均在下面的开发板上进行测试:
《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》

开发板中提供了两组共四个直连到GPIO口上的轻触按钮和发光二极管,可以方便地进行GPIO功能测试:


这篇文章主要是在下面文章基础上进行的:
访问以太网(LAN8720A) & 启用SSH
https://bbs.21ic.com/icview-3310940-1-1.html?fromuser=sj8zw8
(出处: 21ic电子技术开**坛)


使用特权

评论回复
评论
sj8zw8 2023-6-27 10:03 回复TA
版权声明:本文为CSDN博主「Naisu Xu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Naisu_kun/article/details/126055923 
沙发
sj8zw8|  楼主 | 2023-6-27 10:01 | 只看该作者
基础说明
默认情况下NUC980官方的内核是配置启用了sysfs文件系统GPIO支持的:

所以可以通过读写 /sys/class/gpio/ 目录下指定GPIO口编号的文件来操作GPIO口。GPIO口编号换算如下:
PB13 = 32 x 1(PA) + 13 = 45
PF10 = 32 x 5(PA/PB/PC/PD/PE) + 10 = 170
PE10 = 32 x 4(PA/PB/PC/PD) + 10 = 138
PE12 = 32 x 4(PA/PB/PC/PD) + 12 = 140
————————————————

使用特权

评论回复
板凳
sj8zw8|  楼主 | 2023-6-27 10:04 | 只看该作者
需要注意的是默认情况下PE10和PE12是被设置成USB相关功能的,需要修改内核进行调整:

使用特权

评论回复
地板
sj8zw8|  楼主 | 2023-6-27 10:05 | 只看该作者
在终端中操作
基于上面内容我们就可以直接在终端中操作GPIO口了:
# 导出以使用GPIO45
echo 45 > /sys/class/gpio/export
# 导出后将在 /sys/class/gpio/ 目录下出现 gpio45 目录,读写其中的文件即可操作该GPIO口

# 将GPIO45设置为输出模式
echo out > /sys/class/gpio/gpio45/direction
# 将GPIO45设置为输出高电平
echo 1 > /sys/class/gpio/gpio45/value
# 将GPIO45设置为输出低电平
echo 0 > /sys/class/gpio/gpio45/value

# ====================

# 导出以使用GPIO140
echo 140 > /sys/class/gpio/export
# 将GPIO140设置为输入模式
echo in > /sys/class/gpio/gpio140/direction
# 打印GPIO140端口电平
cat /sys/class/gpio/gpio140/value

# ====================

# 取消使用GPIO45
echo 45 > /sys/class/gpio/unexport
# 取消使用GPIO140
echo 140 > /sys/class/gpio/unexport

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

261

帖子

1

粉丝