使用sysfs方式控制gpio,首先需要底层驱动的支持,需要在make menuconfig图形化配置界面中加入配置Device Drivers > GPIO Support>/sys/class/gpio/. (sysfsinterface),重新编译内核,在烧回去。
sysfs 控制接口
/sys/class/gpio/export 将GPI0 控制从内核空间导出到用户空间,只写
/sys/class/gpie/unexport 取消 GPI0 控制从内核空间到用户空间的导出,只写
<(x=0.1.2..)代表 GPIO 控制器
打开开发板,进入到/sys/class/gpio/,class就是根据设备属性来分类的。圈起来的就是,什么说的两个文件,其实这两个文件就是属性文件,之前在设备模型篇已经提到了,也知道互撕怎么创建出来的了。剩下的那些gpio开头的就是控制器。如果你没有把内核重新编译,在烧回去,是看不到的
想要使用方式去控制gpio就要确定gpio的编号。
GPIO 编号计算
iTOP-RK3568有5 组 GPl0 bank: GP100~GPI04,每组又以 AO~A7,BO~B7,CO~C7,DO~D7 作
为编号区分,常用以下公式计算引脚:
引脚编号=控制寄存器的寄存器基数+控制引脚寄存器位数。在rk3568 中,
GPI0 number 的计算方法为: n*32+(K-A)*8+x;括号里面的 A、B、C、D 分别代表数
值 0、1、2、3,在计算时候分别对应即可。
知道了gpio之后,就可以用这个export接口,将内核数据导出,
导出echo 23 > export
取消导出
可以看到 gpio15 文件夹下分别有 active low、device、direction、edge、power、subsystem、
uevent、value 八个文件,需要关心的文件是 active low、direction、edge 以及 value 这四个属性。
direction:配置 GPIO 引脚为输入或输出模式。该文件可读、可写,读表示査看 GPIO 当
前是输入还是输出模式,写表示将 GPIO 配置为输入或输出模式;读取或写入操作可取的值
为"out"(输出模式)和"in"(输入模式)。
value:设置高低电平,如果我们要把这个管脚设置成高电平,我们只需要给 value 设置成 1
edge:控制中断的触发模式,该文件可读可写。在配置 GPIO 引脚的中断触发模式之前,
需将其设置为输入模式,四种触发模式的设置如下所示
active low:用于控制极性得属性文件,可读可写,默认情况下为 0,使用 cat 命令进行 。
默认状态下的输入输出状态为“in”,由于 direction 为可读可写, 可以使用以下命令将模式
配置为输出, 配置完成如下图所示
以及把方向设置为输出了,接下来就是控制gpio引脚的灯亮灭了正常来说我只需要把value的值设置为1,我的第灯就亮了,但是我的开发部默认0是高电平,1是低电平 。我这里默认是0,所以是亮的,具体是1还是0,根据手上的开发板定。
将value设置成1
已经成功控制这灯的亮灭了。 实验成功了。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » gpio子系统-通过sys控制gpio
发表评论 取消回复