Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78509
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-25 14:06
文章分类
文章存档

2013年(13)

我的朋友

分类: 嵌入式

2013-09-12 11:54:10

ARM的GPIO设置主要

1,设置GPIO的ID,设置哪一个gpio;

2,设置GPIO的功能号,设置为那种模式,包括普通GPIO,特殊功能1,特殊功能2,。。。比如某个GPIO可以选择设置为普通gpio或者串口的输入,或者USB的D+功能之一,主要看datasheet的功能表

3,设置GPIO方向为输入还是输出

4,设置GPIO的驱动能力,1ma,2ma,3ma,4ma,5ma,6ma,7ma,8ma,16ma等等

5,设置GPIO的上拉的电压域为多少伏特(可选择,有些处理器没有这个功能)

6,可配置弱上拉电阻或下拉电阻。

7,设置输出电平为高电平还是低电平

8,处理器睡眠的时候的GPIO状态,高电平,低电平,float,或者保持状态

9,作为中断源的触发条件,上升沿,下降沿,上升和下降沿,高电平,低电平,

例如:SD卡中断可以设置上升沿,下降沿对应位都为1。这样插进卡和拔出卡就可以用同一个中断。不需要使用两个GPIO中断来实现。

调用request_irq把中断处理函数挂上去了,信号发生变化时,中断处理函数自然就被调用了。

如果一个GPIO对应于一个中断(一级中断),则相应的中断位就会被设置成1;如果一堆GPIO对应一个中断(二级中断),则,中断位被设置成1后还得查询那一个GPIO产生的中断。

10,某些GPIO可将CPU从深度睡眠模式中唤醒

11,某些GPIO是开漏输出,作为输出口的时候,输出低电平的时候为mos管导通,输出为低电平,设置为输出高电平的时候是开路状态,要外接上拉电阻来维持高电平。

LINUX设置gpio为输出一般用下面的方法

gpio_enable

gpio_request

gpio_direction_output

 

12,睡眠状态的GPIO配置,要方向和电平配置对,不要发生电平不匹配和方向不对,比如某I2C接口的外围芯片的中断信号引脚,连接到ARM的GPIO口,外围芯片的中断信号是输出状态,一般芯片里面是一个OC电路,ARM的GPIO要配置为输入功能,如果配置错了,配置为输出状态,那么会造成漏电,一般有2--5ma的漏电。!!

阅读(3936) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~