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的漏电。!!