网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [转贴] PXA27x GPIO Controller
bika
TW金牌会员
Rank: 6Rank: 6



UID 138192
精华 27
积分 1720
帖子 941
阅读权限 70
注册 2008-7-23
状态 离线
发表于 2008-8-25 10:43 资料 短消息 加为好友 添加 bika 为MSN好友 通过MSN和 bika 交谈
PXA27x GPIO Controller

  • 概述:

+v)T!q&b!L#A!DTechWeb-技术社区PXA27x提供121GPIO口。每个GPIO口都可编程为输出、输入或特定用途的双向口。作为input使用时,GPIO口可作为中断源。复位时所有GPIO口缺省配置为输入口。为使功耗最小,应将所有不用的GPIO配置为output

&k1c7C H'P!qtech.techweb.com.cnTechWeb-技术社区/O+k!u)O2w }(p*b)\
GPIO<120:0>,其中GPIO<120:119>只有PXA271PXA272PXA273支持。
(c7o7C1z3P!t3o.X
TechWeb-技术社区4G%k0^:V%^,b9A$W:J8`9~
一部分GPIO口具有唤醒功能,可以将处理器从睡眠和深度睡眠模式唤醒。PXA27x被唤醒或复位时(硬件复位、上电复位、GPIO复位、watch dog复位、睡眠或深度睡眠),GPIO输入通道(input path)是关闭的,直到读禁止信号(PSSR[RDH]read disable hold)位被清零。PSSR[RDH]位应在用户完成对GPIO的配置和初始化后清零,否则出现未知结果。
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛.y"p R(w![6E.F

9a8B%E.^"k*v!B.[程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
  • 特性:

2Q0t5j4G)h4n(~2v#b7g(J大部分外围引脚兼作GPIO用。以下是GPIO的一些共性:
TechWeb-技术社区7I/v'D'd+N"l;W,t
Ø/B*J#v&|!a:q/R7w4n
用作inputGPIO可被采样,也可以编程为上升或下降沿触发的中断源;
tech.techweb.com.cn9V2y-]&y$`8i,M:~ [
Ø1}%e"C e!S#E/g1I
用作outputGPIO可以被独个清零或置位;
1@-_8v3i!U+u/c)N
Ø程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛-W:Q:G"D'W0g1G.L'?:w
每个GPIO都可编程为其他用途(alternate functions)。
;[5s*n*I7u$I

#B5G r&j,a,Dtech.techweb.com.cn
  • 操作:
一、用作专用GPIOApplication-Specific GPIO%g.j%@1Z(]*U&K,W-r

(e%{!~7C4^.o0Z*F使用GPIO Pin Direction寄存器GPDR0/1/2/3设置GPIO口为input/output

"x8w)H8{*{6b-{-T8A H程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛tech.techweb.com.cn.\1v8|$`/m8}6t&I
对于配置为outputGPIO口,写相应的GPIO Pin Output Set寄存器GPSR0/1/2/3可以设置引脚为高电平;写GPIO Pin Output Clear寄存器GPCR0/1/2/3将引脚置低。(配置为inputGPIO口也可以对其GPSRxGPCRx进行写操作,不过写入的状态要等到其配置为output口后才有效。)

6v$Q:\7_0`9g/m0l-ztech.techweb.com.cnTechWeb-技术社区8n*K2w/m6?'I6j
GPIO Pin Level寄存器GPLR0/1/2/3可返回GPIO口的状态(包括设置为output的口)。

7\&C8y+Y.L-^5m m!WTechWeb-技术社区
p j%F7e-]#[#}/v#qtech.techweb.com.cn若要检测GPIO口的上升沿或下降沿,可使用GPIO Rising-Egde Detect Enable寄存器GRER0/1/2/3GPIO Falling-Edge Detect Enable寄存器GFER0/1/2/3。还可使用GPIO Edge Detect Status寄存器GEDR0/1/2/3来读取边沿检测状态。
tech.techweb.com.cn(u$l(q#Q-e6v&{


8w j1@&a"w:g'yTechWeb-技术社区唤醒功能:GPIO<116>, GPIO<113>, GPIO<102:93>, GPIO<91:90>, GPIO<83>, GPIO<53>,GPIO<40:34>, GPIO<31>, GPIO<17:9>, GPIO<4:3>, and GPIO<1:0>可将处理器从睡眠和standby模式唤醒;特别的,GPIO<3> GPIO<1:0>还可将处理器从深度睡眠模式唤醒。

二、用于其他用途(Alternate Fuction


%P;O1`6W8j%w-M(}6y片上串行控制器和LCD控制器等往往需要额外的引脚,这时就需要占用GPIO口用于这些用途(事实上,PXA27x很多片上控制器如LCDAC97I2CRTC和中断控制器等都需要占用GPIO口,具体可见Manual P45PXA27x处理器模块框图)。不过,还必须通过GPDR来正确设置GPIO口的方向(GPDR在定义GPIOalternate function时,既起到功能选择作用,又起到引脚的信号传递方向的控制作用,不过对于特殊功能的双向GPIO除外,见后文说明)。


2R%~$Y9F7}1i![7k可这样使用的GPIO最多可有三种输入功能和三种输出功能供选择配置。一旦一个GPIO口用于alternate function,就不能同时作为普通的GPIO口使用了。要使用某一功能的GPIO信号,首先要将GPIO口配置为相应的功能,然后使能相应的处理单元如LCD控制器。同样,要先禁止相应处理单元,再改变GPIO的控制寄存器。

/o:O;b3o#f2`%v:m:a
详细列表和说明可见PXA27x Processor Family Developer’s Manual

;c Z%F$n+A H(z H
注意表中有一类特殊功能的双向GPIO,其用阴影标识,这种GPIO口的信号传输方向不是由GPIO方向寄存器来决定的,而是取决于相应的处理单元控制器的配置。亦即:此时GPIO方向寄存器仅仅起到选择是alternate function(In)还是(Out)列表中的功能的作用,而对alternate function的引脚数据传输方向没有影响。因此,在配置这类GPIOalternate function时,首先要配置GAFRGPDR,以确定使用的是in还是out中的哪一种确切的特定功能(即作何引脚使用),然后还要配置相应的处理单元控制器来设置该GPIO的信号传输方向。可以参见该Manual的举例说明以及General-Purpose I/O Block Diagram
6J1s(M;g(F0@8X;[.c'G JTechWeb-技术社区
2{*D1D$U's+@.F#j


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

TechWeb-技术社区-D5n"[,]!j(}8r'f'[
GPDR方向位的例外情况:GPIO<29>GPIO<87>


0a5W0Q9T:u0w*ZTechWeb-技术社区alternate functionGPIO口的编程设置实例见Manual

  • 寄存器描述:

程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛)\.D&T,[;v+i4O
GPIO控制模块共有3632-bit寄存器,寄存器的每一位对应一个GPIO,这样每种控制功能需要432位寄存器;因而36个寄存器分为9套,每套由标号x=03区分。


%w$_3L5g8Q(q标号x0的配置GPIO<31:0>1的配置GPIO<63:32>2的配置GPIO<95:64>3的配置GPIO<120:96>

Ø
5X r:S(|"t!^0u9X"O程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
GPLRx,监控引脚状态(GPIO Pin Level Register)。为只读寄存器,返回相应GPIO口的当前电平(高或低)。不管GPIO是作input还是output测试结果都有效。

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

Øtech.techweb.com.cn,H5q$O7]'c9h(J9p,K
GPDRx,控制引脚方向(GPIO Pin Drection Regisger),0input1output

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

Ø
)Y2[)r'i)q+`;|-H0A*n程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
GEDRx,指示检测到的边沿类型(GPIO Edge Dectect Status Register)。是一个状态寄存器,可以对其读或写操作。读操作读取是否检测到边沿;写操作用于清除被置1的状态位(写10,写0无效)。

Ø
1T"p"t:z0X1O
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的设置。

具体的功能配置表见Manual P1001

      
~+q!Y3d+W8Q


;e'L8p-M!w.K"`$R*Ntech.techweb.com.cn

       GPIO控制器的寄存器地址列表可以见ManualP1029P1181页。


引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-11-23 07:44
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.063955 second(s), 7 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP