使用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

 

        已经成功控制这灯的亮灭了。 实验成功了。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部