NanoPi 2 GPIO的使用

来源:互联网 发布:手机淘宝的二手在哪里 编辑:程序博客网 时间:2024/05/16 23:35
        在嵌入式设备中对GPIO的操作,一般的做法是写一个单独驱动程序。其实linux下面有一个通用的GPIO操作接口,那就是 “/sys/class/gpio” 方式。使用这种方法,你不需要写驱动,便可直接使用GPIO引脚,更方便开发,内核更小。

下面是以友善之臂的NanoPi2为例,简单的写一下GPIO的使用方法。

        首先,进入根文件系统,查看系统中有没有 “/sys/class/gpio” 这个文件夹。如果没有请在编译内核的时候通过make menuconfig加入

Device Drivers  —>  
  
GPIO Support  —>      /sys/class/gpio/… (sysfs interface)
      
1 gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射;
  
2:控制GPIO的目录位于/sys/class/gpio 中;
  
3 /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号;
  
4/sys/class/gpio/unexport 用于通知系统取消导出;
  
5/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤;(X表示数字)
  
6:首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数  + 控制引脚寄存器位数;
  
7 /sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出;
  
8echo  12 /sys/class/gpio/export
  
9direction文件,定义输入输出方向,可以通过下面命令定义为输出;
  
10echo  out >  direction
  
11direction接受的参数:in, out, high, lowhigh/low同时设置方向为输出,并将value设置为相应的1/0
  
12value文件是端口的数值,为10
  
13echo 1  & > value
  
   
/sys/class/gpio 的使用说明:

测试:由于我们需要通过sysfs的方式来操作GPIO, 因此,我们还需要找到这组引脚在内核中所对应的编号(每一个GPIO引脚,内核都会赋于它一个编号)查询内核编号的方法如下

1NanoPi 2开机后,进入根文件系统;

2)在超级终端中输入以下命令(因命令比较长,建议直接复制运行):

    
# cd /sys/class/gpio
  
# for i in gpiochip* ; do  echo `cat $i/label`: `cat $i/base` ; done
   
nxp-gpio.0:0

nxp-gpio.4:128

nxp-gpio.5:160

nxp-gpio.1:32

nxp-gpio.2:64

nxp-gpio.3:96


其实这里的gpio.0表示的是GPIOAgpio.1表示GPIOB,其他是也是这样计算。

假如,我们需要使用NanoPi 2GPIOB30引脚,想在应用程序使用,我们可以表示为:

64+30=94 也就是说我们使用的是第94GPIO
0 0
原创粉丝点击