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

    文章

    11851

    浏览量

    219783
  • 驱动控制
    +关注

    关注

    0

    文章

    145

    浏览量

    16432
  • GPIO
    +关注

    关注

    16

    文章

    1336

    浏览量

    56568

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    驱动之路#22:reset-gpios参数能随便吗?

    是: 绝对不能随便!它直接决定驱动GPIO控制逻辑,写错会导致设备功能异常 。 GPIO_
    的头像 发表于 04-29 18:13 2772次阅读
    <b class='flag-5'>驱动</b>之路#22:reset-gpios参数能随便<b class='flag-5'>写</b>吗?

    基于UCC3895的直接控制驱动同步整流应用设计

    基于UCC3895的直接控制驱动同步整流应用设计 在电力电子领域,高效的电源转换一直是工程师们追求的目标。今天,我们将深入探讨如何使用德州仪器(TI)的UCC3895控制器,实现
    的头像 发表于 04-26 12:50 359次阅读

    驱动之路#21:一行 reset-gpios,驱动为何就能用 GPIO

    这行代码不是给 CPU 看的,而是给内核和驱动的 “约定说明书”,每一部分都有明确含义: reset-gpios:是 “属性名”,遵循 Linux 设备树的 GPIO 属性命名规范(后缀-gpios
    的头像 发表于 04-14 09:20 6016次阅读
    <b class='flag-5'>驱动</b>之路#21:一行 reset-gpios,<b class='flag-5'>驱动</b>为何就能用 <b class='flag-5'>GPIO</b>?

    步进电机直接驱动可行性及驱动板设计

    步进电机以 开环定位精准、无累积误差、低速大转矩、控制简单 等特点,在小型化、低成本、中低速运动控制场景中被广泛应用。步进电机 直接驱动(Direct Drive) 是指取消
    的头像 发表于 04-10 15:25 339次阅读

    JL杰理AC696N系列开发GPIO控制大全:模式、API与特殊引脚

    JL杰理AC696N系列开发GPIO控制大全:模式、API与特殊引脚 引言 GPIO配置看着简单,但翻车的案例也不在少数。驱动能力没选对,LED亮度不够或者干脆
    发表于 04-02 21:21

    Linux内核驱动开发的技术核心精要

    嵌入式Linux驱动开发是连接硬件与操作系统的关键环节。随着内核演进(如Linux 6.13)和硬件复杂度提升,开发者需掌握并发控制、中断分层、内存管理、设备树、调试工具等核心知识。本
    发表于 03-10 13:56

    深入解析RK平台GPIO驱动:从原理到调试,开发者必看指南

    )平台上,GPIO 驱动的实现直接影响着硬件交互的稳定性与效率。本文将带你深入剖析 RK 平台 GPIO 驱动的核心逻辑、使用方法,以及对调
    的头像 发表于 02-03 15:53 1384次阅读
    深入解析RK平台<b class='flag-5'>GPIO</b><b class='flag-5'>驱动</b>:从原理到调试,开发者必看指南

    嵌入式新手必看!GPIO调试从0到1:计算、操作、排错全指南

    在嵌入式开发中,GPIO(通用输入输出口)是最基础也最常用的硬件接口 —— 小到控制一颗 LED 亮灭、读取一个按键状态,大到驱动传感器、控制外设,都离不开
    的头像 发表于 02-01 16:55 4542次阅读
    嵌入式新手必看!<b class='flag-5'>GPIO</b>调试从0到1:计算、操作、排错全指南

    如何控制蜂鸟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 4590次阅读
    技能+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 1547次阅读
    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 1122次阅读
    解锁Air780EPM:N种<b class='flag-5'>GPIO</b>操控LED的实战技巧!

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

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

    MAX7304 I²C接口、16端口、电平转换GPIO和LED驱动器,内置ESD保护技术手册

    MAX7304包含16个端口GPIO,其中12个推挽GPIO,4个开漏GPIO,可配置为PWM控制的LED驱动器。该器件支持使用一个1.62
    的头像 发表于 05-21 15:38 1094次阅读
    MAX7304 I²C接口、16端口、电平转换<b class='flag-5'>GPIO</b>和LED<b class='flag-5'>驱动</b>器,内置ESD保护技术手册