0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux不写驱动控制直接控制GPIO

h1654155971.7688 来源:21ic电子网 2019-12-09 15:38 次阅读

说到控制硬件,马上就能想到写个内核模块,驱动一下,像gpio_request、open、read、write……一堆API就出来了。

其实,只是想简单的控制一下GPIO输入或者输出,不用这么复杂,系统已经实现相关驱动了,只需要了解怎么用就可以了。

在用户空间通过sysfs控制GPIO,先访问/sys/class/gpio/,向export文件写入要操作的GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO输入或者输出模式,而value可控制GPIO的状态或者读取状态。

/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号;

/sys/class/gpio/unexport 用于通知系统取消导出;

/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器信息,包括每个寄存器控制引脚的起始编号,寄存器名称,引脚总数;

/sys/class/gpio/gpioX/direction文件,可以写入in或out设置输入输入方向;

/sys/class/gpio/gpioX/value文件是可以读写GPIO状态;

示例:

1. 导出2号GPIO /sys/class/gpio# echo 2 > export

2. 设置方向为输出 /sys/class/gpio/gpio2# echo out > direction

3. 查看当前方向 /sys/class/gpio/gpio2# cat direction

4. 设置输出高电平 /sys/class/gpio/gpio2# echo 1 > value

5. 查看当前值 /sys/class/gpio/gpio2# cat value

6. 取消导出2号GPIO /sys/class/gpio# echo 2 > unexport

查看当前GPIO使用情况:

cat /sys/kernel/debug/gpio

那么问题来了,在SOC手册上看到的GPIO引脚号都是GPIOA5、GPIOB7、GPH12等这样的名称,哪来的GPIO编号呢?

别急,给你一个shell脚本,肯定是你想要的:

#! /bin/shforiin/sys/class/gpio/gpiochip*doecho`cat$i/label`: `cat$i/base`done

上面的脚本在开发板上执行,可能会是这样的输出结果:

GPIOA: 0GPIOB: 32GPIOC: 64GPIOD: 96GPIOE: 128GPIOF: 160GPIOG: 192GPIOH: 224

这是什么意思嘞?举个例子:

假设要操作的GPIO是GPE5,那么,对应的GPIO就是133,怎么算的呢?

其实,上面是各个GPIO组的起始编号,GPE的起始编号是128,即GPE0的编号是128,那么GPE5的编号就是GPE0 + 5 = 128 + 5 = 133

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11318

    浏览量

    209819
  • 驱动控制
    +关注

    关注

    0

    文章

    122

    浏览量

    15764
  • GPIO
    +关注

    关注

    16

    文章

    1205

    浏览量

    52172

原文标题:神操作!Linux不写驱动控制直接控制GPIO

文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HTR3306 6路LED驱动器和GPIO控制

    HTR3306是一款6路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    的头像 发表于 11-20 15:57 192次阅读
    HTR3306  6路LED<b class='flag-5'>驱动</b>器和<b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>器

    伺服驱动器的控制方式分析

    1. 引言 伺服驱动器作为连接电机与控制系统的桥梁,其性能直接影响到整个系统的响应速度、稳定性和精度。随着控制理论的发展和电子技术的革新,伺服驱动
    的头像 发表于 11-04 15:30 440次阅读

    HTR3310 10路LED驱动器和GPIO控制

    HTR3310是一款10路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    的头像 发表于 10-08 09:58 293次阅读
    HTR3310 10路LED<b class='flag-5'>驱动</b>器和<b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>器

    HTR3316 16路LED驱动器和GPIO控制

    HTR3316是一款16路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。16个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    的头像 发表于 09-29 14:41 278次阅读
    HTR3316 16路LED<b class='flag-5'>驱动</b>器和<b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>器

    MOS管电源IC直接驱动电路

    在现代电子设计中,电源IC直接驱动是一种简单而有效的驱动方式。它通过电源集成电路(IC)直接控制功率MOSFET或其他开关元件的导通和截止,
    的头像 发表于 09-26 15:36 380次阅读
    MOS管电源IC<b class='flag-5'>直接</b><b class='flag-5'>驱动</b>电路

    HTR3310 10路LED驱动器和GPIO控制

    HTR3310是一款10路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    的头像 发表于 09-24 17:56 536次阅读
    HTR3310  10路LED<b class='flag-5'>驱动</b>器和<b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>器

    Linux设备驱动程序分类有哪些

    Linux设备驱动程序是操作系统与硬件设备之间的桥梁,负责实现硬件设备与操作系统之间的通信和控制Linux设备驱动程序的分类繁多,可以根据
    的头像 发表于 08-30 15:11 601次阅读

    linux驱动程序如何加载进内核

    Linux系统中,驱动程序是内核与硬件设备之间的桥梁。它们允许内核与硬件设备进行通信,从而实现对硬件设备的控制和管理。 驱动程序的编写 驱动
    的头像 发表于 08-30 15:02 514次阅读

    【龙芯2K0300蜂鸟板试用】6 gpio控制relay字符驱动

    gpio是最常用的也是最简单的驱动程序,在龙芯2k0300中,几乎所有的gpio引脚都可以做为gpio引脚使用(多数具备复用功能),此文通过控制
    发表于 08-25 09:30

    【龙芯2K0300蜂鸟板试用】3 gpio控制led字符驱动

    led点灯是最常用的也是最简单的驱动程序,在linux内核当中,应该有现成的配置和驱动,但它是通过控制/sys属性,而不是/dev属性,本文基于字符
    发表于 08-25 09:14

    详解Linux中的权限控制

    本章将和大家分享Linux中的权限控制。废话不多说,下面我们直接进入主题。
    的头像 发表于 08-05 15:32 606次阅读
    详解<b class='flag-5'>Linux</b>中的权限<b class='flag-5'>控制</b>

    如何在Android 10设备上通过App控制GPIO

    本文档提供了在 Android 10 设备上通过应用程序(App)控制通用输入输出(GPIO)的详细指南。这涵盖了从创建 gpio驱动到App 配置 以及 SELinux 策略以允许特
    的头像 发表于 07-22 17:59 1266次阅读

    快速搞懂GPIO控制器的六种模式

    在嵌入式系统和单片机开发中,GPIO(通用输入输出)控制器是一个非常重要的组件。GPIO引脚的灵活性使它们能够执行多种功能,从简单的输入输出到复杂的通信任务。为了帮助大家快速了解和掌握GPIO
    的头像 发表于 05-18 08:04 1550次阅读
    快速搞懂<b class='flag-5'>GPIO</b><b class='flag-5'>控制</b>器的六种模式

    什么样的PLC可以直接驱动接触器?什么样的PLC不可以直接驱动

    什么样的PLC可以直接驱动接触器?什么样的PLC不可以直接驱动? PLC(可编程逻辑控制器)是一种用于自动化
    的头像 发表于 02-18 14:11 1319次阅读

    在PSoc4上控制GPIO时,怎样才能用modustoolBox为GPIO设置驱动模式?

    在 PSoc4 上控制 GPIO 时,我想为 GPIO 设置驱动模式。 在 PSoC Creator 中,可以在 “元器件目录” 中选择并放置在原理图编辑器中的 “引脚元件的配置” 上
    发表于 01-22 07:29