Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2534675
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4578
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 14:51
文章分类

全部博文(401)

文章存档

2015年(16)

2014年(4)

2013年(12)

2012年(82)

2011年(98)

2010年(112)

2009年(77)

分类:

2009-03-10 09:40:13

PXA935的pin被分为以下几个种类
1、电源pin
2、专门的I/O pin,包括模拟信号的pin
3、多功能pin
前两个种类不能被pin控制单元所控制。


多功能pin的基本操作是通过MFPR寄存器。每一个pin都有一个对应的MFPR。每一个寄存器操作可能产生一个细微的不可预测的请求结果,所以要通过一个读操作去验证操作完恒。
一个单独的多功能pin可以有8个轮流的功能,加上一个低电源模式的值。
一个多功能pin可以被编程为以下任何一种output值:
1、上拉电阻50K
2、下拉电阻50K
3、高驱动
4、低驱动
5、高阻抗
用三态去确保board上在任何时候都没有悬空的节点。这些状态形成多功能output类型,例如一个公开收集、三态驱动等等。
访问一个不存在的寄存器或者pin,写操作会无任何反应,读操作会读到一个不可预知的值。

多功能pin的地址区域为0x40E10000-0x40E1FFFF,访问这些寄存器必须以32位为单位访问,其他位数的访问是不允许的。

GPDRx(GPIO Pin Direction Register)寄存器:查看GPIO的I/O方向。GSDR和GCDR是来设置方向,GPDR是来查看GPIO方向。
一共有192个提供I/O的GPIO口。所有的192个口都被配置为input,直到他们被启动过程或用户软件配置。
GPCRx寄存器和GPSRx寄存器:当GPIO被设置为output时,要给GPIO写值是通过GPSR寄存器,要设零则用GPCR寄存器。这两个寄存 器的操作,不受GPIO的方向限制,就是说input的时候也可以通过这两个寄存器进行操作。假如当前是input,你操作了这两个寄存器,那么你的操作 会等到GPIO为output时生效。

GRERx寄存器+GFERx寄存器+GEDRx寄存器:是来查看是否有中断触发,假如一个GPIO被设置为上升沿触发,则查看GRER其是否被触发。
GSRERx寄存器+GSFERx寄存器+GSEDRx寄存器:这三个寄存器是来设置GPIO是由什么方式来触发中断的。
GCRERx寄存器+GCFERx寄存器+GCEDRx寄存器:这三个寄存器是来清除GPIO的某种方式中断触发方式。


GPLRx寄存器:无论是input还是output,都可以通过读这个寄存器来读GPIO的值。
GSDRx寄存器:每一位对应一个GPIO,当设置为1的时候,其被设置为output,会影响GPDRx的值。
GCDRx寄存器:每一位对应一个GPIO,当设置为1的时候,其被设置为input,会影响GPDRx的值。

GPLRx寄存器:来查看GPIO的值是1还是0。
阅读(4278) | 评论(0) | 转发(0) |
0

上一篇:arm汇编-设置GPIO

下一篇:Svn merge usage

给主人留下些什么吧!~~