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

  • 相关阅读:
    机器学习规则:ML工程最佳实践----rules_of_ml section 2【翻译】
    机器学习规则:ML工程最佳实践----rule_of_ml section 3【翻译】
    知识图谱技术分享会----有关知识图谱构建的部分关键技术简介及思考
    【e2Open】
    【2B】企业供应链管理软件
    【交互】复杂逻辑配置的一个不错的方法(神策数据)
    【视觉】交易数据展示
    【视觉】数据平台
    【设计复盘】APP设计复盘
    【设计规范】腾讯课堂
  • 原文地址:https://www.cnblogs.com/dakewei/p/11691665.html
Copyright © 2011-2022 走看看