【香蕉派 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,通过测试,确实正确。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子