AM335x GPIO的三种调用方式

来源:互联网 发布:mac开机什么都没有 编辑:程序博客网 时间:2024/06/06 07:59

参考:http://www.myir-tech.com/bbs/forum.php?mod=viewthread&tid=7220

1.内核空间中调用GPIO


请求GPIO

err = gpio_request(30,"sample_name");

设置GPIO方向

gpio_direction_input(30);

GPIO30为输出并且置高

gpio_direction_output(30, 1);

导出GPIO30到sysfs用户空间

gpio_export(30, true);

读GPIO30

gpio_get_value(30);


用户空间中shell方式调用GPIO

(1)、GPIO目录
在ARM Linux中,GPIO驱动的目录是:/sys/class/gpio/,所以,要首先进入这个目录,命令:
1
$ cd/sys/class/gpio/


(2)、目录解析
使用ls命令查看目录详情:
1
2
3
$ ls-l
export      gpiochip128  gpiochip64   unexport
gpiochip0    gpiochip32   gpiochip96

如上列出了5个gpio目录、export、unexport文件。gpio目录对应基地址,比如芯片的IO定义为PA0~PA31、PB0~PB31等等,那么PA对应的base就是gpiochip0,PB对应的base就是gpiochip32,以此类推。例如 PB12对应的就是 gpio43。

(3)、控制实例
比如要实现控制 PB12 口,先生成一个gpio43 目录:
1
2
3
4
$ echo43 > export
$ cdgpio43
$ ls
active_low  direction   edge        power       subsystem   uevent


(4)、控制
1
2
3
4
5
6
$ catdirection        #查看方向
in
$ echoout > direction   #设置为输出
$ catvalue           #获取值
0
$ echo1 > value       #设置为1


用户空间中C代码方式调用GPIO


01
02
03
04
05
06
07
08
09
10
11
12
// echo "out" > /sys/class/gpio/gpio30/direction
pFile = fopen(“/sys/class/gpio/gpio30/direction”, “w”);
fwrite(“out”, 1,sizeof(“out”), pFile);
fclose(pFile);
 
// echo 1 > /sys/class/gpio/gpio30/value
pFile = fopen(“/sys/class/gpio/gpio30/value”, “w”);
fwrite(“1”, 1,sizeof(“1”)-1, pFile);
 
// cat /sys/class/gpio/gpio30/value
fread(myArray, 1, 1, pFile);
fclose(pFile);
原创粉丝点击