• 已解决 33650 个问题
  • 已帮助 5813 位优秀工程师

linux怎么利用sys/class/gpio驱动DHT11

宫梓萱 2020-09-30 浏览量:1924

友善之臂的nano pi NEO 480Mhz sys/class/gpio的端口初始化,方向设置,高低电平设置都封装好了成函数了,测试功能都正常。

问题如下,操作GPIO读写电平的时候感觉速度很慢,达不到DHT11的时序。我做个一个实验,就单纯GPIO翻转,一个周期就需要80us。

消耗的时间估计是读写文件造成的。会不会/sys/class/gpio里的这种方法调用的文件太多。如果我在/dev/下注册个gpio设备节点。再对这个设备节点操作效果会不会好些啊

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 首先,查看系统中有没有“/sys/class/gpio”这个文件夹,如果没有就在编译内核的时候勾选 Device Drivers-> GPIO Support ->/sys/class/gpio/… (sysfs interface)

    二、通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。文件IO方式操作GPIO,使用到了4个函数open、close、read、write。

    三、/sys/class/gpio 的使用说明:
    gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射。
    ◇ 控制GPIO的目录位于/sys/class/gpio。
    ◇ /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号。
    ◇ /sys/class/gpio/unexport 用于通知系统取消导出。
    ◇ /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作。

    ◇ /sys/class/gpio/gpioX/direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in out high low。high/low同时设置方向为输出,并将value设置为相应的1/0
    ◇ /sys/class/gpio/gpioX/value文件是端口的数值,为1或0

    四、操作命令简介

          1. 导出   /sys/class/gpio# echo 203 > export
          2. 设置方向      /sys/class/gpio/gpio203# echo out > direction
          3. 查看方向      /sys/class/gpio/gpio203# cat direction
          4. 设置输出      /sys/class/gpio/gpio203# echo 1 > value
          5. 查看输出值  /sys/class/gpio/gpio203# cat value  
          6. 取消导出     /sys/class/gpio# echo 203 > unexport

    五、在超强终端用命令的方式导出GPIO的操作接口,从内核空间暴露到用户空间。

    1、查看/sys/class/gpio目录下的io口。

    2、导出gpio暴露接口。

    六、在底层驱动程序中用gpio_export函数的方式使得GPIO的操作接口从内核空间暴露到用户空间。​

    • 发布于 2020-10-06
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 一样的,因为这种操作涉及到从用户空间到内核空间的拷贝,这个动作本身就有延时,这种时序要求的操作,建议直接在驱动里面用gpio操作函数
    • 发布于2020-09-30
    • 举报
    • 评论 1
    • 0
    • 0
宫梓萱 回复了 chen0000009 :你好,你说的gpio操作函数是什么了,ioctl函数吗,具体怎么操作了。望回复谢谢啊 回复

  • 只能是控制IO的高低电平变化,来条例芯片的通讯时序来控制。
    • 发布于2020-10-09
    • 举报
    • 评论 0
    • 0
    • 0

linux怎么利用sys/class/gpio驱动DHT11