DragonBoard 410c手把手控制Linux的GPIO

本文介绍了如何在DragonBoard 410c上控制Linux的GPIO,包括GPIO的基础知识、需要使用的函数、调用的文件,以及详述了GPIO的导出、导入、读写函数的实现。通过示例程序,读者可以学习到如何在Linux环境下操作GPIO。
摘要由CSDN通过智能技术生成

上一篇文章中,我们通过操作LED文件位置的brightness文件,控制了LED的亮与灭,并且在DragonBoard 410c上实现了LED的闪烁功能。 同时相信各位也对DragonBoard 410c上的硬件开发有了深入的了解。接下来我们将深入研究其他硬件,并一个一个的手把手进行操作与解释。

背景知识

无论是输出方波信号或者是处理复杂的通讯协议,我们都要直接或者间接的用到GPIO进行输出与输入。 GPIO是芯片与外界进行通讯最常用的资源之一,其重要性不言而喻。同时它也是Linux中最简单的驱动程序之一。 大部分程序都可以使用提供的接口对GPIO进行控制。

DragonBoard 410c上充满了各种形式的GPIO,如高速口或低速口,还有可以复用成通讯口的GPIO。 于是,Linux中使用0~MAX_INT之间的整数标识来明确指定需要调用的GPIO, 而且标识必须是正整数。 Linux中提供了统一的接口来操作GPIO, 再实际控制GPIO前先向各位介绍GPIO的使用方法。

需要使用的函数

首先我们可以检测GPIO端口是否可用(合法):

int gpio_is_valid(int number);

其次我们需要将GPIO端口导出到用户空间,这样我们才可以在shell中进行直接控制:

Int gpio_export(unsigned gpio, bool direction_may_change);

参数direction_may_change表示用户程序是否允许修改gpio的方向,假如可以,则参数direction_may_change为真此外,gpio_export的反函数就是gpio_unexport(), 该函数可以将GPIO结点从用户空间移除。

需要调用的文件

用户空间如何访问gpio呢:一般方法是通过sysfs接口访问gpio,也就是通过操作文件系统中的文件。下面是/sys/class/gpio目录下的三种文件,这三个目录下的文件包含了能够操作GPIO的所有接口:

  • export/unexport文件
  • gpioN:指代具体的gpio引脚
  • gpio_chipN:指代gpio控制器

在进行操作前,开发者必须提前预知以上接口没有device文件与它们连接,接下来对每个文件进行解释:

  • export/unexport文件接口:该接口只能写不能读
    用户程序通过写入gpio的编号来向内核申请将某个gpio的控制权,并导出到用户空间。当然前提是没有内核代码申请这个gpio端口,比如
echo 19 > export 

上述操作会为19号gpio创建一个节点gpio19,此时/sys/class/gpio目录下边生成一个gpio19的目录。/sys/class/gpio/unexport和导出的效果相反,比如:

echo 19 > unexport

上述操作将会移除gpio19这个节点。

  • /sys/class/gpio/gpioN:指代某个具体的gpio端口
    里边有如下属性文件:
     direction 表示gpio端口的方向,读取结果是in或out。该文件也可以写,写入out 时该gpio设为输出同时电平默认为低。写入low或high则不仅可以设置为输出 还可以设置输出的电平。 当然如果内核不支持或者内核代码不愿意,将不会存在这个属性,比如内核调用了gpio_export(N,0)就表示内核不愿意修改gpio端口方向属性
     value表示gpio引脚的电平,0(低电平)1(高电平),如果gpio被配置为输出,这个值是可写的,记住任何非零的值都将输出高电平, 如果某个引脚能并且已经被配置为中断,则可以调用poll(2)函数监听该中断,中断触发后poll(2)函数就会返回。
     edge表示中断的触发方式,edge文件有如下四个值:”none”, “rising”, “falling”,”both”。
    • none表示引脚为输入,不是中断引脚
    • rising表示引脚为中断输入,上升沿触发<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值