Linux通过shell命令操作GPIO
开发板:zlg M3354
目录:cd /sys/class/gpio/
一、各个目录和文件功能
1、gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射,
2、控制GPIO的目录位于/sys/class/gpio
3、/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
4、/sys/class/gpio/unexport 用于通知系统取消导出
5、/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始 编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
6、首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
例如:GPIO 1_13=1*32+13,则引脚编号则为GPIO45
7、向/sys/class/gpio/export写入此编号,比如12号引脚,echo 12 > /sys/class/gpio/export,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:
8、direction文件,定义输入输入方向,可以通过下面命令定义为输出,direction接受的参数:in, out, high, low。high/low同时设置方向为输出
9、value文件是端口的数值,为1或0.
二、操作顺序
1. 导出
/sys/class/gpio# echo 44 > export
2. 设置方向
/sys/class/gpio/gpio44# echo out > direction
3. 查看方向
/sys/class/gpio/gpio44# cat direction
4. 设置输出
/sys/class/gpio/gpio44# echo 1 > value
5. 查看输出值
/sys/class/gpio/gpio44# cat value
6. 取消导出
/sys/class/gpio# echo 44 > unexport
实际操作过程,如果需要测试多个GPIO,可以写个shell脚本去完成
// gpioOut.sh
#!/bin/bash
echo out > /sys/class/gpio/gpio$1/direction
cat /sys/class/gpio/gpio$1/direction
for a in {1..10}
do
echo $2 > /sys/class/gpio/gpio$1/value
cat /sys/class/gpio/gpio$1/value
sleep 1
done
// gpioIn.sh
#!/bin/bash
echo in > /sys/class/gpio/gpio$1/direction
cat /sys/class/gpio/gpio$1/direction
for a in {1..8}
do
cat /sys/class/gpio/gpio$1/value
sleep 1
done