Linux开发板控制蜂鸣器(GPIO子系统)

Linux开发板控制蜂鸣器(GPIO子系统)

1.GPIO子系统

GPIO是General Purpose I/O的缩写,即通用输入输出端口,简单来说就是MCU/CPU可控制的引脚,这些引脚通常有多种功能,最基本的是高低电平输入检测和输出,部分引脚还会与主控器的片上外设绑定,如作为串口、I2C、网络、电压检测的通讯引脚。

2.GPIO设备目录

GPIO驱动子系统导出到用户空间的目录是“/sys/class/gpio”。
以下命令不支持在主机查看,

#在主机或开发板的终端使用以下命令查看
ls -lh /sys/class/gpio

#导出GPIO到用户空间
echo 19 > /sys/class/gpio/export

#查看目录的变化,增加了gpio19目录
ls /sys/class/gpio/

#把gpio19从用户空间中取消导出
echo 19 > /sys/class/gpio/unexport

#查看目录变化,gpio19目录消失了
ls /sys/class/gpio/

如下图:
在这里插入图片描述

该目录下的主要内容说明如下:

export文件:导出GPIO,该文件只能写不能读,用户向该文件写 入GPIO的编号N可以向内核申请将该编号的GPIO导出到用户空间,若内核本 身没有把该GPIO用于其它功能,那么在/sys/class/gpio目录下会新增一 个对应编号的gpioN目录,如上图一导出了gpio19。

unexport文件:export的相反操作,取消导出GPIO,该文件同样只能 写不能读。上图演示了往unexport写入19后,gpio19目录消失了。

gpiochipX目录:该目录是指GPIO控制器外设,Ubuntu主机上默认没有这样的功能。

gpioN目录:通过export导出的具体GPIO引脚的控制目录,如上图中的gpio19目录下会包含有 控制该引脚的相应文件。

3.GPIO设备属性

gpioN目录下相关的设备文件,可以使用以下命令查看:

#在开发板的终端使用以下命令
#导出编号为19的GPIO
echo 19 > /sys/class/gpio/export
#查看gpio19目录下的内容
ls -lh /sys/class/gpio/gpio19

如下图:
未找到图片4|

常用的属性文件介绍如下:

direction文件:表示GPIO引脚的方向,它的可取值如下:
in:引脚为输入模式。
out:引脚为输出模式,且默认输出电平为低。
low:引脚为输出模式,且默认输出电平为低。
high:引脚为输出模式,且默认输出电平为高。
value文件:表示GPIO的电平,1表示高电平,0表示低电平。GPIO被配置为输出 模式, 那么修改该文件的内容可以改变引脚的电平。
edge文件:用于配置GPIO的中断触发方式,当GPIO被配置为中断时,可以通过系统 的poll函数监听。edge文件可取如下的属性值:
none:没有使用中断模式。
rising:表示引脚为中断输入模式,上升沿触发。
falling:表示引脚为中断输入模式,下降沿触发。
both:表示引脚为中断输入模式,边沿触发。

只要我们知道蜂鸣器的GPIO引脚编号,就可以就可以通过它导出的direction、value文件 控制引脚输出高低电平,从而控制它发声了。当然,如果硬件上临时把该引脚修改为按键 高低电平检测,此时也可以通过这些文件把引脚改为输入模式使用,而不需要修改Linux内核驱动。

4.控制蜂鸣器(Shell)

本教程的蜂鸣器是GPIO19,你需要根据自己的开发板蜂鸣器修改GPIO。
以下代码请在开发板执行。

#以下命令在开发板上执行
#导出蜂鸣器使用的GPIO到用户空间
echo 19 > /sys/class/gpio<
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值