linux之GPIO的使用------OK6410
来源:互联网 发布:淘宝开店要押金么 编辑:程序博客网 时间:2024/05/21 09:15
linux之GPIO的使用------OK6410
- •linux进程的挂起和恢复
- •linux线程介绍
- •libjpeg库的简单使用使用----jpeg图片解压
- •libjpeg移植arm
- •Boa服务器移植
- 更多
版权声明:本文为博主原创文章,未经博主允许不得转载。
S3C6410的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在Linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制GPIO并不像控制传统的单片机那样。
这里我将提及一种方法来讲述,这种方法也是我至今看到最简单的方法
首先我们打开linux-3.0.1\arch\arm\plat-samsung\include\plat下gpio-cfg.h这个头文件,仔细浏览后发现,我们可以使用的函数:
1.设置单一io口
int s3c_gpio_cfgpin(unsigned int pin, unsigned int to);
里面有两个参数,第一个pin是选择哪个引脚,第二个参数有三种定义
设置成输出模式 #define S3C_GPIO_INPUT (S3C_GPIO_SPECIAL(0))
设置成输入模式 #define S3C_GPIO_OUTPUT (S3C_GPIO_SPECIAL(1))
复用功能选择 #define S3C_GPIO_SFN(x) (S3C_GPIO_SPECIAL(x))
其实根据我使用的情况来说第1,2两个定义根本就是鸡肋,只有第3个S3C_GPIO_SFN(x)才是最有用的,举个例子:
Ok6410的开发板的DS18B20的接口,器件被接在GPE0上,而GPE有如下复用功能
其中的参数x就是对应上表的复用功能,当x=0时是输入功能,x=1时是输出功能......下面我想不用我说大家也明白了吧。
这个例子s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(1));说明GPE0口配置为输出模式。
1.获取io口的配置
unsigned s3c_gpio_getcfg(unsigned int pin);这个函数跟上面讲到的刚好相反,是读取当前一个io口的配置,pin参数是要获得的引脚配置,函数会返回一个相应的值
2.设置一组io
int s3c_gpio_cfgpin_range(unsigned int start, unsigned int nr, unsigned int cfg);
第一个参数start是开始的引脚,第二个nr是从start开始到第一个,注意配置的io必须是同一组的io,第三个cfg是配置状态
3.设置单一io的上拉电阻
int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull);
设置单个io为不同的上拉模式,模式分别为
S3C_GPIO_PULL_NONE
S3C_GPIO_PULL_DOWN
S3C_GPIO_PULL_UP
5.获取io口的上拉电阻配置
s3c_gpio_pull_t s3c_gpio_getpull(unsigned int pin);
获取单个io的上拉配置状态,会返回一个配置模式
6.设置一组io(包括上拉电阻)
int s3c_gpio_cfgall_range(unsigned int start, unsigned int nr, unsigned int cfg, s3c_gpio_pull_t pull);
讲了这么多看到最后一个函数不讲也应该能看出到底是如何配置了吧
讲了这么多io口的配置方法,来看看如何来配置输出的电平状态。
打开linux-3.0.1\include\linux下的gpio.h的头文件,发现里面有好多的引脚函数其中最重要的也就这么几句
1.设置一个引脚的电平状态
static inline void gpio_set_value(unsigned gpio, int value)
第一个参数gpio为指定的引脚,第二个参数value为要设置的高低电平
2.获得一个引脚的电平状态
static inline int gpio_get_value(unsigned gpio)
第一个参数为gpio为指定的引脚,会返回一个电平状态
讲了上面这些我们基本能控制一个io了,现在我在介绍一种方法,这种方法只能进行输入和输出不能进行io的复用配置
1.io输出
static inline int gpio_direction_output(unsigned gpio, int value)
第一个参数gpio为指定的引脚,第二个参数为电平状态
2.io输入
static inline int gpio_direction_input(unsigned gpio)
第一个参数gpio为指定的引脚,会返回一个电平状态
出了上面方法外我们还可以直接对gpio的地址访问,linux已经为我们准备了这样的接口函数
#define __raw_readl(a) (__chk_io_ptr(a), *(volatile unsigned int __force *)(a))
#define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile unsigned int __force *)(a) = (v))
其中的a值为
S3C64XX_GPMCON
S3C64XX_GPMPUD
S3C64XX_GPMDAT
在reg-gpio.h中已经有了以上的定义
V为具体的数值。
- 顶
- 0
- 踩
- 0
- 下一篇linux之延时及内核定时器的使用
我的同类文章
- •linux进程的挂起和恢复2013-06-21
- •libjpeg库的简单使用使用----jpeg图片解压2013-04-19
- •Boa服务器移植2013-04-13
- •学习嵌入式linux的路2013-02-24
- •基于mjpg-streamer远程视频WEB监控 项目笔记一2013-01-26
- •linux时间编程2012-12-28
- •linux线程介绍2013-05-06
- •libjpeg移植arm2013-04-19
- •ubuntu配置tftp2013-03-07
- •基于mjpg-streamer远程视频WEB监控 项目笔记二2013-01-26
- •ARM模拟器——SkyEye的使用2013-01-02
- linux之GPIO的使用------OK6410
- linux之GPIO的使用------OK6410
- linux之GPIO的使用------OK6410
- linux之GPIO的使用------OK6410
- linux之GPIO的使用
- linux之GPIO的使用
- linux之GPIO的使用
- linux之GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统-GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux内核驱动之GPIO子系统-GPIO的使用
- 透视校正插值
- 小谈XML
- 入眠
- Webshell实现与隐藏探究
- javascript 基础 js类和原型
- linux之GPIO的使用------OK6410
- 记单词015
- 指针修改变量的值,以及指针交换两个数字的值的问题
- 解决方法——AttributeError: 'module' object has no attribute 'VideoWriter_fourcc'
- 每个开发人员现在应该下载的十种必备工具
- 本周需要做的事情
- 小白笔记----------------------leetcode(9. Palindrome Number)
- Android开发入门——推箱子游戏开发实战(九)
- JavaScript常用API总结