Linux通过sysfs控制GPIO
阅读量
0
阅读人次
0
sysfs控制gpio的方式主要基于 内核提供的gpio控制接口文件。也就是通过读写/sys/class/gpio目录下的文件来控制对应的gpio接口。
- /sys/class/gpio/目录下各个文件说明:
- /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号;
- /sys/class/gpio/unexport 用于通知系统取消导出;
- /sys/class/gpio/gpioX/direction文件,可以写入in(设置输入方向)或out(设置输出方向);
- /sys/class/gpio/gpioX/value文件是可以读写GPIO状态;
- /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号,寄存器名称,引脚总数;其中X表示具体的引脚编号。
引脚计算
GPIO pin脚计算公式:pin = bank * 32 + number
GPIO 小组编号计算公式:number = group * 8 + X (group:A=0,B=1,C=2,......)
例如:GPIO3_C4_d ,bank = 3,group = C,X=4。即:3 * 32 + 2 * 8 + 4 = 116
操作引脚
在终端/sys/class/gpio路径下使用命令来操作GPIO116:
echo 116 > /sys/class/gpio/export // gpio_request 申请导出相应的gpio
echo out > /sys/class/gpio/gpio116/direction //gpio_direction_output 设置相应gpio为输出方向
echo 1 > /sys/class/gpio/gpio116/value // gpio_set_value 设置输出高电平
echo 0 > /sys/class/gpio/gpio116/value
cat /sys/class/gpio/gpio116/value // gpio_get_value 获取gpio当前状态值
echo 116 > /sys/class/gpio/unexport // gpio_free 释放申请的gpio
查看gpio占用状态:
cat /sys/kernel/debug/gpio