Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1176605
  • 博文数量: 93
  • 博客积分: 7185
  • 博客等级: 准将
  • 技术积分: 3560
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-02 13:54
文章分类
文章存档

2011年(43)

2010年(11)

2009年(27)

2008年(12)

分类:

2011-06-17 18:46:11

GPIO 寄存器

每组GPIO有8个寄存器:

1. DR: Data Register

当GDIR设置为输出时, 写DR的内容用来驱动GPIO的pins,读DR的内容则返回存储在DR中的值

当GDIR设置为输入时,读DR返回给定IO pin的状态(PSR data),而不是DR data

2. GDIR: Data Direction Register

控制GPIO pins的方向, 1作为输出,0作为输入,寄存器中的每一位标识一个特定pad的方向。 仅当相应的pins被设置为GPIO,GDIR才起作用

3. PSR:Pad Sample Register

32-bit的只读寄存器。寄存器中的每一位都存储相应pad的值

4. ICR1, ICR2: 中断控制寄存器

两个32-bit寄存器, 寄存器中每两位控制一条中断线,ICR1控制中断0~15, ICR2控制中断16~31

00中断是low-level敏感

01中断是high-level敏感

10中断是rise-edge敏感

11中断时fall-edge敏感

5. IMR: Interrupt Mask Register

32bit register. 每一位是相应中断线的屏蔽位, 0中断被屏蔽,1中断被使能

6. ISR: Interrupt Status Register

32bit register, 每一位用于指定对应的中断线是否有中断发生,当一个中断发生,这个寄存器中的相应位被设置

7. EDGE_SEL:Edge Select Register

32bit 寄存器,覆盖ICR寄存器的配置,选择edge 作为中断触发的条件

GPIO功能

从pad读取数据

1.  配置IOMUX选择GPIO模式

2.  配置GPIO的GPDR为输入

3.  从PSR寄存器读取数据(也可以从DR读取,此时会返回PSR内的值)

写数据到pad

1. 配置IOMUX选择GPIO模式

2. 配置GPIO的GPDR为输出

3. 写值到Data Register(DR)

中断控制

除了通用的input/output功能外, GPIO内部的edge-detect逻辑反映一个被配置为input的pad是否发生了状态转换

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