GPIO(文件IO方式)
gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射
◇ 控制GPIO的目录位于/sys/class/gpio,操作需要管理员权限
◇ /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
◇ /sys/class/gpio/unexport 用于通知系统取消导出
◇ /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
◇ 首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
◇ 向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出
◇ direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0
◇ value文件是端口的数值,为1或0
手底下板子的引脚和引脚号的对应关系
A4 | 228 |
---|---|
C5 | 245 |
B5 | 237 |
B4 | 236 |
关于引脚号的计算
以GPIO5_B4为例
PIN计算 A=0 B=1 C=2 D=3
pin=18+4=12
gpionumber = BANK32+PIN
所以对应的序号为5*32+12=172
实例
root@ubuntu:/sys/class/gpio# echo 228 > export
root@ubuntu:/sys/class/gpio# ls
export gpio228 gpiochip0 gpiochip128 gpiochip160 gpiochip192 gpiochip224 gpiochip256 gpiochip288 gpiochip32 gpiochip64 gpiochip96 unexport
root@ubuntu:/sys/class/gpio# cd gpio228
root@ubuntu:/sys/class/gpio/gpio228# ls
active_low device direction edge power subsystem uevent value
root@ubuntu:/sys/class/gpio/gpio228# cat direction
in
root@ubuntu:/sys/class/gpio/gpio228# cat value
1
root@ubuntu:/sys/class/gpio/gpio228# echo out > direction
root@ubuntu:/sys/class/gpio/gpio228# cat direction
out
root@ubuntu:/sys/class/gpio/gpio228# cat value
0
root@ubuntu:/sys/class/gpio/gpio228# echo 228 > unexport
bash: unexport: No such file or directory
root@ubuntu:/sys/class/gpio/gpio228# cd ..
root@ubuntu:/sys/class/gpio# echo 228 > unexport
root@ubuntu:/sys/class/gpio#