linux通用GPIO驱动
Posted 花臣酒卒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux通用GPIO驱动相关的知识,希望对你有一定的参考价值。
Linux开发平台实现了通用GPIO的驱动,用户通过,SHell或者系统调用能控制GPIO的输出和读取其输入值。其属性文件均在/sys/class/gpio/目录下,该目录下有export和unexport两个属性文件,其余都是连接文件,如gpiochipN等。
export文件导出某个GPIO,unexport将导出的GPIO从/sysfs中删除。向export文件写入要操作的GPIO序号N可以导出对应的GPIO设备目录,例如:
#echo 68>/sys/class/gpio/export
通过以上操作,在/sys/class/gpio/目录下生成gpio68/目录。通过读写该目录下的属性文件就可以操作该GPIO引脚。该目录具有一下属性文件:
1、active_low:具有读写属性,决定value中的值是否翻转,0不翻转,1翻转。
2、edge:具有读写属性,设置GPIO中断或检测中断是否发生。
3、subsystem:符号链接,指向父目录。
4、value:具有读写属性,GPIO引脚电平属性读取或者设置
5、direction:具有读写属性,用于设置或查看GPIO引脚输入输出方向
6、power:设备与供电方面相关的信息
7、uevent:内核与(udev,自动设备发现程序)之间的通信接口。
输入输出设置:
#echo out>/sys/class/gpio/gpioN/direction #设置输出
#echo in>/sys/class/gpio/gpioN/direction #设置输入
输入读取:
#echo in>/sys/class/gpio/gpioN/direction #设置输入
#cat /sys/class/gpio/gpioN/value #查看电平
输出控制:
#echo out>/sys/class/gpio/gpioN/direction
#echo 0>/sys/class/gpio/gpioN/value #输出低电平
#echo 1>/sys/class/gpio/gpioN/value #输出高电平
在C中操作GPIO
int fd_export=open("/sys/class/gpio/export",0_RDWR);//打开GPIO导出设备
write(fd_export,"N",,strlen("N"));
close(fd_export);
int fd_direcction = open("/sys/class/gpio/gpioN/direction",o_RDWR);
write(fd_direction,"out",strlen("out"));//设置为输出
close(fd_direction);
int fd_value=open("/sys/‘class/gpio/gpioN/value",O_RDWR);
write(fd_value,"1",strlen("1"));
close(fd_value);
以上是关于linux通用GPIO驱动的主要内容,如果未能解决你的问题,请参考以下文章
Linux——Linux驱动之设备树中pinctrl和gpio子系统应用实践(如何使用其在设备树中配置GPIO,驱动中如何调用?)
Linux——Linux驱动之完整的驱动操作硬件基础实践,Linux下如何像裸机那样通过GPIO控制蜂鸣器
Linux——Linux驱动之完整的驱动操作硬件基础实践,Linux下如何像裸机那样通过GPIO控制蜂鸣器
Linux——Linux驱动之GPIO中断的应用实战(中断概述及相关函数设备树中指定中断驱动中获取中断)
Linux——Linux驱动之GPIO中断的应用实战(中)(中断下文之tasklet的使用)
Linux——Linux驱动之基于平台总线platform的设备驱动编写实战(手把手教你以platform形式利用GPIO控制蜂鸣器)