热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

PXA27x GPIO Controller

来源: 作者: 时间:2008-06-19 Tag: 点击:

       详细列表和说明可见PXA27x Processor Family Developer’s Manual

       注意表中有一类特殊功能的双向GPIO,其用阴影标识,这种GPIO口的信号传输方向不是由GPIO方向寄存器来决定的,而是取决于相应的处理单元控制器的配置。亦即:此时GPIO方向寄存器仅仅起到选择是alternate function(In)还是(Out)列表中的功能的作用,而对alternate function的引脚数据传输方向没有影响。因此,在配置这类GPIOalternate function时,首先要配置GAFRGPDR,以确定使用的是in还是out中的哪一种确切的特定功能(即作何引脚使用),然后还要配置相应的处理单元控制器来设置该GPIO的信号传输方向。可以参见该Manual的举例说明以及General-Purpose I/O Block Diagram

       另外,从表中注解5可以看到,一部分GPIO是保留用作特定用途的,如GPIO<8:5>被保留用于PWR_CAP<0>,这类GPIO虽然在硬件上是GPIO的结构,并且占据GPIO的地址空间,不过已经被PXA27X配置为特殊用途,因此用户已经无法像使用其他GPIO口一样使用它们了,因此不是真正意义上的可用的GPIO口;相应的,其对应的控制寄存器的位也是保留的。

       GPDR方向位的例外情况:GPIO<29>GPIO<87>

       alternate functionGPIO口的编程设置实例见Manual

 

  • 寄存器描述:

       GPIO控制模块共有3632-bit寄存器,寄存器的每一位对应一个GPIO,这样每种控制功能需要432位寄存器;因而36个寄存器分为9套,每套由标号x=03区分。

       标号x0的配置GPIO<31:0>1的配置GPIO<63:32>2的配置GPIO<95:64>3的配置GPIO<120:96>

Ø         GPLRx,监控引脚状态(GPIO Pin Level Register)。为只读寄存器,返回相应GPIO口的当前电平(高或低)。不管GPIO是作input还是output测试结果都有效。

Ø         GPSRxGPCRx,控制输出引脚状态(GPIO Pin-Output Set/Clear Register)。GPIO配置为input时无效;GPIOoutput时,对GPSR/GPCR1有效,将引脚置高/低,写0无效。

Ø         GPDRx,控制引脚方向(GPIO Pin Drection Regisger),0input1output

Ø         GRERxGFERx,使能检测上升沿或下降沿(GPIO Rising/Falling Edge Detection Enable Register)。写1使能相应GPIO的边沿检测功能;写0禁止边沿检测功能。如果检测到匹配的边沿跳变,就把相应GPIOGEDR寄存器位置1,这个状态位可以被中断控制器用来触发中断,包括从睡眠/深度睡眠模式唤醒PXA27x处理器。可以把同一GPIOGRERGFER位都置1,这样,这个GPIO可以同时检测两种边沿,只要引脚上发生跳变,就将GEDR相应位置1

Ø         GEDRx,指示检测到的边沿类型(GPIO Edge Dectect Status Register)。是一个状态寄存器,可以对其读或写操作。读操作读取是否检测到边沿;写操作用于清除被置1的状态位(写10,写0无效)。

Ø         GAFR_LxGAFR_Ux,决定引脚是用作普通GPIO还是其他用途。说明如下:

0b00用作普通GPIO

0b01用作alternate input/output function1,到底是input还是output取决于GPDR设置;

0b10用作alternate input/output function2

0b11用作alternate input/output function3

复位时,GAFR清零。

注意其中有一类alternate functionspecial bidirectional GPIO(双向GPIO),其方向是由相应的外围控制器直接控制的,这会覆盖GPDR的设置。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册