分类:
2011-06-17 18:46:11
每组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是否发生了状态转换