• 在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

  • 相关阅读:
    C语言面试题——大小端测试(一)
    C语言面试题——联合体测cpu的大小端
    C语言面试题——sizeof的注意点
    C语言面试题——联合体测cpu的大小端
    C语言面试题——指针运算
    poj2183
    poj1972
    poj2014
    poj1970
    poj1918
  • 原文地址:https://www.cnblogs.com/dakewei/p/11691665.html
Copyright © 2020-2023  润新知