加入收藏 | 设为首页 |

赣-Linux不写驱动操控直接操控GPIO

海外新闻 时间: 浏览:191 次

提到操控硬件,立刻赣-Linux不写驱动操控直接操控GPIO就能想到赣-Linux不写驱动操控直接操控GPIO写个内核模块,驱动一下,像gpio_request、open、read、write……一堆API就出来了。

其实,仅仅想简略的操控一下GPIO输入或许输出,不必这么杂乱,体系现已完成相关驱动了,只需求了解怎样用就能够了。

在用户空间经过sysfs操控GPIO,先拜访/sys/class/gpio/,向export文件写入要操作的GPIO编号,使得该GPIO的操作接口从内核空间露出到用户空间,GPIO的操作接口包含direction和value等,dire赣-Linux不写驱动操控直接操控GPIOction操控GPIO输入或许输出形式,而value可操控GPIO的状况或许读取状况。

/sys/class/gpio/export文件用于告诉体系需求导出操控的GPIO引脚编号;

/sys/class/gpio/unexport 用于告诉体系撤销导出;

/sys/class/gpio/gpiochipX目录保存体系中GPIO寄存器的信息,包含每个寄存器操控引脚的开始编号,寄口袋妖怪日月存器称号,引脚总数;

/sys/class/gpio/gpioX/direction文件,能够写入in或out设置输入输入方向;

/sys/class/gpio/gpioX/value文件是能够读写GPIO状况;

示例:

1. 导出2号GPIO /sys/class/gpio# echo 2 > exp赣-Linux不写驱动操控直接操控GPIOort

2. 设置方向为输出 /sys/class/gpio/gpio2# echo out > direction

3. 检查当时方向 /sys/class/gpio/gpio2# cat direction

4. 设置输出高电平 /sys/class/gpio/gpio2# echo 1 > value

5. 检查当时值 /sys/class/gpio/gpio2# cat value

6. 撤销导出2号GPIO /sys/class/gpio# echo 2 > unexport

检查当时赣-Linux不写驱动操控直接操控GPIOGPIO使用情况:

cat /sys/kernel/debug/gpio

那么问题来了,在SOC手册上看到的GPIO引脚号都是GPIOA5、GPIOB7、GPH12等这样的称号,哪来的GPIO编号呢?

别急,给你一个shell脚本,肯定是你想要的:

#! /bin/sh

for i in /sys/class/gpio/gpiochip*
do
echo `cat $i/label`: `cat $i/base`
done

上面的脚本在开发板上履行,或许会是这样的输出成果:

GPIOA: 0 
GPIOB: 32
GPIOC: 64
GPIOD: 96
GPIOE: 128
GPIOF: 160
GPIOG: 192
GPIOH: 224

这是什么意思嘞?举个比如:

假定要操作的GPIO是GPE5,那么,对应的GPIO便是133,怎样算的呢?

其实,上面是各个GPIO组的开始编号,GPE的开始编号是128,即GPE0的编号是128,那么GPE5的编号便是GPE0 + 5 = 128 + 5 = 133

好了,能够去玩了。不明白的能够私信哟