电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【香蕉派 BPI-M2 Magic (BPi-M2M)开发板试用体验】+GPIO控制
【香蕉派 BPI-M2 Magic (BPi-M2M)开发板试用体验】+GPIO控制
Angel_YY
LV5工程师
| 2017-12-23 16:01:22
浏览量 1297
回复:0
发表新帖
本帖最后由 Angel_YY 于 2018-1-4 14:38 编辑
通过查看开发板的原理图,发现开发板上提供了三个LED灯。
分别为LED0、LED1和LED2,通过原理图标记可以猜测三个灯的颜色分别为红、绿、蓝。
而且三个灯都通过GPIO可控,并且灯的控制逻辑为负逻辑,即高电平熄灭,低电平点亮。
那么接下来我们就试着控制这三个灯的亮灭。
首先查看原理图找到控制三个LED灯的GPIO口。
其中LED0为PL3,LED1为PL2,LED2为PC7。我们就以LED2位对象进行控制。
首先尝试通过shell开控制,这是最简单的方法。
获取超级用户权限
$ sudo su
进入GPIO目录
# cd /sys/class/gpio
查看目录内容
# ls
export gpiochip0 gpiochip1024 unexport
以上文件被列出
首先把GPIO操作接口从内核空间暴露给用户空间
# echo 71 > export
为什么这里是71?后续会解答
执行成功后在gpio目录下会多出来一个GPIO71目录
export gpio71 gpiochip0 gpiochip1024 unexport
进入gpio71目录
# cd gpio71
查看目录内容
# ls
active_low device direction power subsystem uevent value
这里列出的就是gpio71的所有可操作节点了。
设置gpio方向为输出
# echo out > direction
此时蓝色LED灯应该量了,因为设置gpio为输出后默认输出为低电平,根据led电路图灯就会亮。
设置gpio输出为高电平,关闭led
# echo 1 > value
设置gpio输出为低电平,点亮led
# echo 0 > value
退回到上一级目录
# cd ..
关闭gpio
# echo 71 > unexport
查看目录
# ls
export gpiochip0 gpiochip1024 unexport
已经没有GPIO71目录了。
过程如下图所示
通过以上操作我们就可以在shell中控制led等的量灭了,其实也就可以控制所有gpio的输入输出了。
为了方便控制,我们完全可以编写一个shell脚本,这样就不必一步一步的执行命令行来控制了。
可以使用vi编辑器编写ledon.sh
#!/bin/bash
echo export pin $1
echo $1 > /sys/class/gpio/export
echo setting direction to output
echo out > /sys/class/gpio/gpio$1/direction
echo setting pi high
echo 0 > /sys/class/gpio/gpio$1/value
:x命令保存,并增加执行权限
# chmod +x ledon.sh
# ./lenon.sh 71
附:如何确定这里引用的GPIO编号
这里我个人摸索了半天时间才弄明白,网上搜索半天要么说的是错误的,要么没说明白,我是个人试验了很多次才弄清楚。
echo x 开始试验0-7都不会提示出错,但是没有任何反应,于是从225开始往回试验,直到197的时候发现wifi断开了,于是猜想197这个数字肯定和wifi连接的gpio有一定关系,
查看原理图,wifi使用SDIO连接到处理器,WL-SDIO-D3(因为是从高往低试的,所以这里因该是先考虑误用了WL-SDIO-D3)连接到PG5,
也就是说PG5应该和197这个数字有关系,结合之前了解到的一些信息,PA~PF一共6个端口,每个端口32个pin共计192个,PG0应该是192号端口,以此类推PG5正好是197号端口。
于是用这个号来试验发现果然猜测是正确的。能够正常控制蓝色led灯。
所以这里的gpio序号是端口PA0 就是 gpio0,PA31就是GPIO31,PB0就是GPIO32以此类推。根据此方法,计算LED1的绿色等对应的事PL2,其gpio号码为354,通过测试,确实正确。
本帖最后由 Angel_YY 于 2018-1-4 14:38 编辑
通过查看开发板的原理图,发现开发板上提供了三个LED灯。
分别为LED0、LED1和LED2,通过原理图标记可以猜测三个灯的颜色分别为红、绿、蓝。
而且三个灯都通过GPIO可控,并且灯的控制逻辑为负逻辑,即高电平熄灭,低电平点亮。
那么接下来我们就试着控制这三个灯的亮灭。
首先查看原理图找到控制三个LED灯的GPIO口。
其中LED0为PL3,LED1为PL2,LED2为PC7。我们就以LED2位对象进行控制。
首先尝试通过shell开控制,这是最简单的方法。
获取超级用户权限
$ sudo su
进入GPIO目录
# cd /sys/class/gpio
查看目录内容
# ls
export gpiochip0 gpiochip1024 unexport
以上文件被列出
首先把GPIO操作接口从内核空间暴露给用户空间
# echo 71 > export
为什么这里是71?后续会解答
执行成功后在gpio目录下会多出来一个GPIO71目录
export gpio71 gpiochip0 gpiochip1024 unexport
进入gpio71目录
# cd gpio71
查看目录内容
# ls
active_low device direction power subsystem uevent value
这里列出的就是gpio71的所有可操作节点了。
设置gpio方向为输出
# echo out > direction
此时蓝色LED灯应该量了,因为设置gpio为输出后默认输出为低电平,根据led电路图灯就会亮。
设置gpio输出为高电平,关闭led
# echo 1 > value
设置gpio输出为低电平,点亮led
# echo 0 > value
退回到上一级目录
# cd ..
关闭gpio
# echo 71 > unexport
查看目录
# ls
export gpiochip0 gpiochip1024 unexport
已经没有GPIO71目录了。
过程如下图所示
通过以上操作我们就可以在shell中控制led等的量灭了,其实也就可以控制所有gpio的输入输出了。
为了方便控制,我们完全可以编写一个shell脚本,这样就不必一步一步的执行命令行来控制了。
可以使用vi编辑器编写ledon.sh
#!/bin/bash
echo export pin $1
echo $1 > /sys/class/gpio/export
echo setting direction to output
echo out > /sys/class/gpio/gpio$1/direction
echo setting pi high
echo 0 > /sys/class/gpio/gpio$1/value
:x命令保存,并增加执行权限
# chmod +x ledon.sh
# ./lenon.sh 71
附:如何确定这里引用的GPIO编号
这里我个人摸索了半天时间才弄明白,网上搜索半天要么说的是错误的,要么没说明白,我是个人试验了很多次才弄清楚。
echo x 开始试验0-7都不会提示出错,但是没有任何反应,于是从225开始往回试验,直到197的时候发现wifi断开了,于是猜想197这个数字肯定和wifi连接的gpio有一定关系,
查看原理图,wifi使用SDIO连接到处理器,WL-SDIO-D3(因为是从高往低试的,所以这里因该是先考虑误用了WL-SDIO-D3)连接到PG5,
也就是说PG5应该和197这个数字有关系,结合之前了解到的一些信息,PA~PF一共6个端口,每个端口32个pin共计192个,PG0应该是192号端口,以此类推PG5正好是197号端口。
于是用这个号来试验发现果然猜测是正确的。能够正常控制蓝色led灯。
所以这里的gpio序号是端口PA0 就是 gpio0,PA31就是GPIO31,PB0就是GPIO32以此类推。根据此方法,计算LED1的绿色等对应的事PL2,其gpio号码为354,通过测试,确实正确。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:Angel_YY
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子