author | daisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主 |
系列 | 基于RK3568的Linux驱动开发—— GPIO知识点(二)_daisy.skye的博客-CSDN博客 |
gpio bank | RK3568 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0-A7、B0-B7、 C0-C7、 D0-D7 作为编号区分,常用以下公式计算引脚: GPIO 引脚计算公式:pin = bank * 32 + number GPIO 小组编号计算公式:number = group * 8 + X 下面演示 GPIO3_A7 引脚计算方法: bank = 3; // GPIO3_A7 => 3, bank ∈ [0,4] group = 0; // GPIO3_A7 => 0, group ∈ {(A=0), (B=1), (C=2), (D=3)} X = 7; // GPIO3_A7 => 5, X ∈ [0,7] GPIO3_A7 对应的设备树属性描述为:<&gpio3 7 IRQ_TYPE_EDGE_RISING>由kernel/include/dt-bindings/pinctrl/rockchip.h的宏定义可知,也可以将GPIO4_D5描述为<&gpio3 RK_PA7 IRQ_TYPE_EDGE_RISING>。 |
gpiochipX | 当前SOC 一共包含5 个 GPIO 控制器,分别是:GPIO1,GPIO2,GPIO3,GPIO4,GPIO5。在这里,分别是gpiochip0 、gpiochip32 、gpiochip64 、gpiochip96 、gpiochip128 这5个文件夹,每个gpiochipX 文件夹用来管理一组GPIO。 |
export | export用于将指定编号的GPIO 引脚导出。在使用GPIO 引脚之前,需要将其导出,导出成功之后才能使用它。注意export 文件是只写文件,不能读取,将一个指定的编号写入到export 文件中即可将对应的GPIO 引脚导出,例如: echo 0 > export #导出编号为0的GPIO 引脚。对应当前SOC,也就是GPIO1_IO0。 导出成功之后会发现在/sys/class/gpio 目录下生成了一个名为gpio0 的文件夹(gpioX, X 表示对应的编号)。这个文件夹就是导出来的GPIO 引脚对应的文件夹,用于管理、控制该GPIO 引脚。 |
unexport | unexport将导出的GPIO 引脚删除。当使用完GPIO 引脚之后,我们需要将导出的引脚删除,同样该文件也是只写、不可读的。例如: echo 0 > unexport # 删除导出的编号为0的GPIO 引脚1 删除成功之后,之前生产的gpio0 文件夹就会消失。 |
导出引脚echo export | 向/sys/class/gpio/export写入此编号,比如10号引脚,在shell中可以通过以下命令实现, echo 10 > /sys/class/gpio/export 命令成功后生成/sys/class/gpio/gpio10目录, 如果没有出现相应的目录,说明此引脚不可导出 |
设置gpio的direction | direction文件,定义输入输入方向,可以通过下面命令定义为输出 echo out > /sys/class/gpio/gpio10/direction direction接受的参数:in, out, |
参考链接 | Linux 学习笔记:GPIO 应用编程_gpiochip0_gdut_llkkyy的博客-CSDN博客 |