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
    +关注

    关注

    88

    文章

    11635

    浏览量

    218102
  • 驱动控制
    +关注

    关注

    0

    文章

    143

    浏览量

    16294
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55760

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何控制蜂鸟E203的GPIO

    _enable_output(). 要控制一个gpio口,首先要使能输入或者输出,然后才能读或者。 1、例如要读GPIOB的0号接口,把GPIO0的值赋给一个变量a可以这么做:
    发表于 10-22 07:36

    如何将 GPIO PWM 和 GPIO Capture 驱动程序导入 Linux 内核,实现 PWM 输出并检测引脚的变化状态?

    如何将 GPIO PWM 和 GPIO Capture 驱动程序导入 Linux 内核,实现 PWM 输出并检测引脚的变化状态
    发表于 08-20 08:20

    技能+1!如何在树莓派上使用C++控制GPIO

    和PiGPIO等库,C++可用于编程控制树莓派的GPIO引脚。它提供了更好的性能和控制能力,非常适合对速度和精度要求较高的硬件项目。在树莓派社区中,关于“Python
    的头像 发表于 08-06 15:33 3650次阅读
    技能+1!如何在树莓派上使用C++<b class='flag-5'>控制</b><b class='flag-5'>GPIO</b>?

    RK3568驱动指南|第十二篇 GPIO子系统-第130章 GPIO的调试方法

    RK3568驱动指南|第十二篇 GPIO子系统-第130章 GPIO的调试方法
    的头像 发表于 06-03 11:32 1003次阅读
    RK3568<b class='flag-5'>驱动</b>指南|第十二篇 <b class='flag-5'>GPIO</b>子系统-第130章 <b class='flag-5'>GPIO</b>的调试方法

    解锁Air780EPM:N种GPIO操控LED的实战技巧!

    ——通过硬件层精确控制电路参数,结合LuatOS高效API实现快速原型开发,适用于智能照明、状态指示等物联网场景。   一、GPIO直接驱动LED 1.1 适用场景 低功耗场景:LED
    的头像 发表于 05-28 16:56 572次阅读
    解锁Air780EPM:N种<b class='flag-5'>GPIO</b>操控LED的实战技巧!

    迅为RK3568驱动指南GPIO子系统 GPIO操作函数实验

    迅为电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1071次阅读
    迅为RK3568<b class='flag-5'>驱动</b>指南<b class='flag-5'>GPIO</b>子系统 <b class='flag-5'>GPIO</b>操作函数实验

    是否有办法用标准Windows驱动程序控制GPIO吗?

    问题。 CY7C65213-28PVXI 的 GPIO 控制使用“cyusbserial.dll”执行 由CYPRESS™提供, 但我发现该 dll 不能与标准 Windows 驱动程序一起使用。 您能告诉我是否有办法用标准 W
    发表于 05-08 07:05

    HTR3306 6路LED驱动器和GPIO控制器中文手册

        HTR3306是一款6路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    发表于 04-14 17:41 1次下载

    HTR3310 10路LED驱动器和GPIO控制器中文手册

          HTR3310是一款10路多功能LED驱动器和GPIO控制器2.5V~5.5V电源供电。10个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    发表于 04-14 16:31 2次下载

    HTR3316 16路LED驱动器和GPIO控制器中文手册

         HTR3316是一款16路多功能LED驱动器和GPIO控制器,2.5V~5.5V电源供电。16个IO端口中的任何一个都可以配置为LED模式或GPIO模式。此外,任何
    发表于 04-11 17:51 2次下载

    如何从linux控制SCU GPIO

    我有一个使用 IMX8QM 的定制板,我需要能够从 linux 控制 SCU GPIO。 我已经从内核启用了 scu gpio,找到了 imx_scu
    发表于 04-01 07:59

    GPIO使用教程 GPIO接口应用

    GPIO(General-Purpose Input/Output,通用输入/输出)接口是电子设备中的一个重要组成部分,主要用于控制和读取设备的数字信号。它通过简单的高(1)或低(0)电平来与系统
    的头像 发表于 01-31 10:10 5264次阅读

    AN-951: 使用SigmaDSP内置GPIO引脚进行硬件控制

    电子发烧友网站提供《AN-951: 使用SigmaDSP内置GPIO引脚进行硬件控制.pdf》资料免费下载
    发表于 01-15 15:40 0次下载
    AN-951: 使用SigmaDSP内置<b class='flag-5'>GPIO</b>引脚进行硬件<b class='flag-5'>控制</b>

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出(GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO GP
    的头像 发表于 01-09 09:46 3769次阅读

    如何配置GPIO引脚

    在嵌入式系统设计中,GPIO(通用输入/输出)引脚是连接微控制器与外部世界的重要桥梁。它们可以被配置为输入或输出模式,用于读取传感器数据、控制LED灯、驱动电机等。
    的头像 发表于 01-09 09:39 1883次阅读