STM32mp157-gpio

内容纲要

针对GPIO的操作,并不需要将GPIO做成按键或者LED灯等设备驱动,可以直接使用GPIO控制,来控制管脚或者读取管脚状态。

一、涉及文件

  • /sys/class/gpio/export
    echo 12 > /sys/class/gpio/export

    用于导出一个管脚,若该管脚已经被使用或者有其他原因,则导出失败。
    导出成功后会产生/sys/class/gpio12文件夹

  • /sys/class/gpio/unexport
    echo 12 > /sys/class/gpio/unexport

    用于取消导出管脚的操作,成功后,/sys/class/gpio12文件夹消失

  • /sys/class/gpio/gpiochip1/label
    # cat /sys/class/gpio/gpiochip1/label
    GPIOA

    用于获取当前的GPIO组名称

  • /sys/class/gpio/gpiochip1/base
    # cat /sys/class/gpio/gpiochip1/base
    0

    表示GPIOA组的管脚号,第一个编号是0,即GPIOA.0 的编号是0,如果该值为30则GPIOA.1 的管脚号为31。

二、实际操作

以下是希望控制GPIOZ_12管脚输出高低电平的流程

# cat /sys/class/gpio/gpiochip12/label
GPIOZ
# cat /sys/class/gpio/gpiochip12/base
130
# echo 142 > /sys/class/gpio/export
# ls /sys/class/gpio*
/sys/class/gpio/
/sys/class/gpio142
# cat /sys/class/gpio142/direction
in
# echo out > /sys/class/gpio142/direction
# echo 1 > /sys/class/gpio142/value
# echo 0 > /sys/class/gpio142/value

GPIOZ并不确定在/sys/class/gpio/gpiochipX哪一个下面,需要我们逐一查找。
经查找/sys/class/gpio/gpiochip12对应GPIOZ。
我们首先获取了GPIOZ组的起始编号为130,那么GPIOZ.12的编号就是 130 + 12 = 142。
要控制该管脚需要先导出该管脚,通过管脚号142导出。
导出后出现了/sys/class/gpio142/文件夹,说明导出成功。
导出的管脚默认是输入状态,需要将该管脚更改为输出状态。
对value写1,输出高电平,对value写0输出低电平。

留下评论