NanoPi 2 GPIO的使用

        在嵌入式设备中对 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 目录,如果没有出现相应的目录,说明此引脚不可导出;
  
8 echo  12 /sys/class/gpio/export
  
9 direction 文件,定义输入输出方向,可以通过下面命令定义为输出;
  
10 echo  out >  direction
  
11 direction 接受的参数: in, out, high, low high/low 同时设置方向为输出,并将 value 设置为相应的 1/0
  
12 value 文件是端口的数值,为 1 0
  
13 echo 1  & > value
  
    
/sys/class/gpio  的使用说明:

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

1 NanoPi 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

版权声明:本文为huayucong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。