1 操控GPIO方式
控制目录:/sys/class/gpio
/sys/class/gpio
目录下文件如下图所示:
1.1 gpiochipX目录
功能:当前SoC所包含的所有GPIO控制器
i.mx6ull一共包含5个GPIO控制器,分别为GPIO1~5
分别对应gpiochip0
、gpiochip32
、gpiochip64
、gpiochip96
、gpiochip128
5个文件夹。每个gpiochipX
控制一组GPIO。随便进入一个gpiochip X
目录,内容如下图所示:
主要关注的目录是base
、label
和ngpio
这三个属性文件,这三个属性文件均是只读,不可写。
- base:表示该控制器所管理的这组GPIO引脚中的最小编号。数值上与
gpiochipX
中的X
值相同。
- lable:该组GPIO对应的标签,也就是名字
- ngpio:该控制器所管理的GPIO引脚数量(所以引脚编号范围是:base~base+ngpio-1)
1.2 export
功能:用于将指定编号的GPIO引脚导出
GPIO 引脚在使用之前,需要将其导出,导出成功之后才能使用。将一个指定的编号N
写入到export
文件中,即可将对应GPIO引脚导出。export为只写文件,不能读取。文件导出之后,将在/sys/class/gpio
目录下生成一个名为gpioN
的文件夹用于管理、控制GPIO引脚。
1.3 unexport
功能:删除导出的GPIO引脚
使用完GPIO引脚之后,需要将导出的引脚删除,同样该文件为export为只写不可读文件。
删除成功之后,之前生成的GPIO文件就会消失!
注:并不是所有的文件夹都可以导出成功,如果引脚在内核中被使用了,就会导出失败。
gpioX目录
功能:gpio引脚控制器
以前面生成的gpio0为例,进入到gpio0目录,该目录下的文件如下图所示:
主要关心文件为:active_low
、direction
、edge
以及value
。
-
direction:配置gpio引脚输入输出模式。可读可写,
表示当前gpio引脚是输入还是输出模式。
写:配置gpio方向
读:获取引脚方向
读取或写入值:"out" -> 输出 "in" -> 输入
-
value:引脚值
- 输入模式:
“0” -> 输出低电平
“1” -> 输出高电平 - 输入模式:
读取value文件获取当前引脚电平状态
- 输入模式:
-
active_low:控制极性,可读可写,默认0
与value结合使用。# active_low 等于 0 时 echo "0" > active_low echo "out" > direction echo "1" > value #输出高 echo "0" > value #输出低 # active_low 等于 1 时 $ echo "1" > active_low $ echo "out" > direction $ echo "1" > value #输出低 $ echo "0" > value #输出高
-
edge:中断触发模式
"none":非中断引脚 "rising":上升沿触发 "falling":下降沿触发 "both":边沿触发
当引脚被设置为中断后,使用poll()函数监听引脚的电平状态变化
2 程序
GPIO