zoukankan      html  css  js  c++  java
  • 在linux的用户空间操作gpio

    1. 使能linux内核选项CONFIG_GPIO_SYSFS

      CONFIG_GPIO_SYSFS=y

    2. 测试方法

      2.1 关注/sys/class/gpio下的文件

        --export/unexport文件

        --gpioX指代具体的gpio引脚

        --gpio_chipY指代gpio控制器

      2.2 申请将某个gpio(假设申请gpio3的第27个gpio, gpio3对应gpiochip416)的控制权导出到用户空间

        # ls /sys/class/gpio

        export gpiochip416  gpiochip448  gpiochip480  unexport

        # echo 443 /sys/class/gpio/export (443 = 416 + 27, 这样就将gpio3的第27个gpio给导出到用户空间了)

        此操作会生成目录/sys/class/gpio/gpio443, 指代具体的gpio引脚

        gpio443目录下有以下文件: 

          direction 表示gpio端口的方向,读取结果是in或out。该文件也可以写,写入out 时该gpio设为输出同时电平默认为低。写入low或high则不仅可以设置为输出还可以设置输出的电平

          value 表示gpio引脚的电平,0(低电平)1(高电平),如果gpio被配置为输出,这个值是可写的,记住任何非零的值都将输出高电平, 如果某个引脚能并且已经被配置为中断,则可以调用poll(2)函数监听该中断,中断触发后poll(2)函数就会返回。

          edge 表示中断的触发方式,edge文件有如下四个值:none, rising, falling,both。

          none表示引脚为输入,不是中断引脚

          rising表示引脚为中断输入,上升沿触发

          falling表示引脚为中断输入,下降沿触发

          both表示引脚为中断输入,边沿触发,这个文件节点只有在引脚被配置为输入引脚的时候才存在。 当值是none时可以通过如下方法将变为中断引脚

            echo "both" > edge;对于是both,falling还是rising依赖具体硬件的中断的触发方式。此方法即用户态gpio转换为中断引脚的方式

          active_low

      2.3 /sys/class/gpio/gpiochipN

        gpiochipN表示的就是一个gpio_chip,用来管理和控制一组gpio端口的控制器,该目录下存在以下属性文件:

        base 和N相同,表示控制器管理的小的端口编号。

        lable 诊断使用的标志(并不总是唯一的)

        ngpio 表示控制器管理的gpio端口数量(端口范围是:N ~ N+ngpio-1)

    3. 获取gpio状态

    $ cat /sys/kernel/debug/gpio

  • 相关阅读:
    Flash影片剪辑导出视频静止的问题 被解决了!
    关于sample采样器无法改变声调的解决方法
    FL的萌新之路,开始了!
    暑假结束时
    关于Pascal调试时同时出现ntdll.dll、SIGSEGV错误的原因
    XCTF-WEB-view_source
    XCTF-MISC-如来十三掌
    XCTF-MISC-give_you_flag
    《了不起的盖茨比》【开头诗句,尼克独白】
    MiniMIPS32微处理器的流水线相关问题和暂停机制
  • 原文地址:https://www.cnblogs.com/dakewei/p/11691665.html
Copyright © 2011-2022 走看看